RFR: 8358450: Viewport characteristics media features [v16]
Andy Goryachev
angorya at openjdk.org
Tue Dec 16 21:21:24 UTC 2025
On Tue, 16 Dec 2025 20:13:49 GMT, Michael Strauß <mstrauss at openjdk.org> wrote:
>> Implementation of [viewport characteristics media features](https://www.w3.org/TR/mediaqueries-5/#mf-viewport-characteristics):
>> * `width`
>> * `height`
>> * `aspect-ratio`: width / height
>> * `orientation`: `portrait`, `landscape`
>> * `display-mode`: `fullscreen`, `standalone` (note: `browser` and `minimal-ui` are not supported in JavaFX)
>>
>> Here's a small example how the new media features can be used:
>>
>> @Override
>> public void start(Stage stage) {
>> var button = new Button("Toggle full-screen");
>> button.setOnAction(_ -> stage.setFullScreen(!stage.isFullScreen()));
>> var label = new Label();
>> var root = new BorderPane(button, null, null, label, null);
>> var scene = new Scene(root, 650, 200);
>> BorderPane.setAlignment(label, Pos.CENTER);
>> label.textProperty().bind(scene.widthProperty().map(v -> String.format("Width: %.2f", v.doubleValue())));
>> scene.getStylesheets().add("data:text/css;base64," + Base64.getEncoder().encodeToString("""
>> @media (max-width: 500) {
>> .button {
>> -fx-background-color: red;
>> }
>> }
>>
>> @media (600 < width <= 700) {
>> .button {
>> -fx-background-color: green;
>> }
>> }
>>
>> @media (min-width: 800) {
>> .button {
>> -fx-background-color: yellow;
>> }
>> }
>>
>> @media (display-mode: fullscreen) {
>> .button {
>> -fx-background-color: black !important;
>> }
>> }
>> """.getBytes(StandardCharsets.UTF_8)));
>>
>> stage.initStyle(StageStyle.DECORATED);
>> stage.setScene(scene);
>> stage.show();
>> }
>
> Michael Strauß has updated the pull request incrementally with one additional commit since the last revision:
>
> documentation
The feature looks good on macOS 26.1, excellent work!
This needs to be tested on Windows and Linux[es].
Side note: I realized the CSS Playground does not apply the stylesheet to newly created windows, only to already present ones. Should be ok to test though, with newly added Windows -> Fullscreen etc. menus.
-------------
Marked as reviewed by angorya (Reviewer).
PR Review: https://git.openjdk.org/jfx/pull/1844#pullrequestreview-3584979469
More information about the openjfx-dev
mailing list