On Thu, 26 Feb 2026 18:30:49 GMT, Michael Strauß <[email protected]> wrote:
>> The [`@import`](https://www.w3.org/TR/css-cascade-5/#at-import) rule is >> extended to support conditional stylesheet imports: >> >> >> @import [ <url> | <string> ] <media-query-list>? ; >> >> >> Conceptually, a conditional import takes all rules of the referenced >> stylesheet, literally includes them at the location of the `@import` rule, >> and surrounds them with a `@media` rule with the specified >> `<media-query-list>`. >> >> The implementation of this feature extends media queries with a context-free >> evaluation function: >> >> interface MediaQuery { >> TriState evaluate(); // returns TRUE / FALSE / UNKNOWN >> } >> >> >> This mode of evaluation uses Kleene's strong trivalent logic to determine >> whether the media query will always match (it's a tautology), will never >> match (it's a contradiction), or whether it depends on the context or we >> simply don't know. >> >> Using this mechanism, a conditional stylesheet import that can never match >> will be skipped at runtime. Similarly, a conditional stylesheet import that >> will always match doesn't need the `<media-query-list>` at all; its rules >> will be pasted verbatim into the main stylesheet. >> >> Note that this mechanism is _not_ meant to be a full-blown theorem solver. >> It won't detect that, for example, the following import conditions will >> always match: >> >> @import url("stylesheet.css") (width > 1000) or (width <= 1000); >> >> >> Its purpose is an optimization for "obvious" cases. For example, at the >> moment the built-in themes use hard-coded conditions to include user-agent >> stylesheets at runtime: >> >> // in PlatformImpl.java: >> if (isSupported(ConditionalFeature.INPUT_TOUCH)) { >> >> uaStylesheets.add("com/sun/javafx/scene/control/skin/modena/touch.css"); >> } >> >> In the future, we might have a way to test for `ConditionalFeature` flags >> that achieves the same thing, but with a public API available to all theme >> authors: >> >> @import url("com/sun/javafx/scene/control/skin/modena/touch.css") >> (-fx-supports-conditional-feature: input-touch); > > Michael Strauß has updated the pull request incrementally with one additional > commit since the last revision: > > javadoc change Marked as reviewed by angorya (Reviewer). ------------- PR Review: https://git.openjdk.org/jfx/pull/2031#pullrequestreview-3862854131
