> 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 two additional commits since the last revision: - specify capacity of MediaQueryList - javadoc change ------------- Changes: - all: https://git.openjdk.org/jfx/pull/2031/files - new: https://git.openjdk.org/jfx/pull/2031/files/5ef848c6..4e28176f Webrevs: - full: https://webrevs.openjdk.org/?repo=jfx&pr=2031&range=03 - incr: https://webrevs.openjdk.org/?repo=jfx&pr=2031&range=02-03 Stats: 5 lines in 2 files changed: 0 ins; 0 del; 5 mod Patch: https://git.openjdk.org/jfx/pull/2031.diff Fetch: git fetch https://git.openjdk.org/jfx.git pull/2031/head:pull/2031 PR: https://git.openjdk.org/jfx/pull/2031
