On Sun, 11 Jan 2026 18:50:05 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);

This pull request has now been integrated.

Changeset: 58c1fa4d
Author:    Michael Strauß <[email protected]>
URL:       
https://git.openjdk.org/jfx/commit/58c1fa4d09a6127297626644d7d6d9dcf6bf8098
Stats:     923 lines in 21 files changed: 810 ins; 45 del; 68 mod

8364149: Conditional stylesheet imports

Reviewed-by: angorya, mhanl

-------------

PR: https://git.openjdk.org/jfx/pull/2031

Reply via email to