Aspect Ratio
Compare eight common ratios, then change the native aspect-ratio layout constraint directly with CSS.

use blinc_cn as cn;
use blinc_layout::prelude::*;
pub fn aspect_ratio_demo() -> Div {
let mut grid = div().class("demo-aspect-presets");
for (label, ratio) in [
("1:1", 1.0),
("16:9", 16.0 / 9.0),
("4:3", 4.0 / 3.0),
("21:9", 21.0 / 9.0),
("3:2", 1.5),
("2:3", 2.0 / 3.0),
("9:16", 9.0 / 16.0),
("3:4", 0.75),
] {
grid = grid.child(
div().class("demo-aspect-sample").child(
cn::aspect_ratio(ratio)
.w(84.0)
.child(div().class("demo-ratio").child(text(label).class("demo-ratio-label"))),
),
);
}
grid
}
Usage and properties
Keep content in a consistent ratio as its container changes. Apply CSS after the component layer to restyle the documented parts.
Use the installation guide to add blinc_cn and its component stylesheet. Create the fixture bindings once, and return the demo from your UI builder. Values marked Bound accept Signal/Computed sources where the API supports them; structural options configure the component at construction.
| Property | Type | Update model | This example |
|---|---|---|---|
ratio | f32 | Construction | 16.0 / 9.0 |
child | ElementBuilder | Construction | A themed illustration surface |
Keyboard and interaction
Informational content; no activation or Tab stop is required.
Customizing it
Add application CSS after the default component layer. These selectors are the restyling surface for this component:
.cn-aspect-ratio.demo-ratio
Theme and component variables: --primary, --text-primary, --text-secondary, --surface, --border, --radius-default, --duration-fast, --ease-state.
Built-in themes
The Live theme control installs Blinc's own theme bundles, including their colours, focus rings, corner shapes and motion tokens.
pub fn theme_bundle_for(name: &str) -> blinc_theme::ThemeBundle {
match name {
"restrained" => blinc_theme::RestrainedTheme::bundle(),
"expressive" => blinc_theme::ExpressiveTheme::bundle(),
_ => blinc_theme::HybridTheme::bundle(),
}
.with_css(blinc_cn::cn_styles::CN_STYLES)
}Download the default widget and component stylesheets. Sample assets and licenses are available in the asset guide.
Documentation
From the canonical component guide.
Wrap content in a fixed ratio:
aspect_ratio(16.0 / 9.0)
.w(320.0)
.child(img("video-thumbnail.jpg").cover())
Convenience builders include aspect_ratio_16_9(), aspect_ratio_4_3(),
aspect_ratio_square(), aspect_ratio_9_16() and aspect_ratio_21_9().
CSS aspect-ratio changes the container's native layout constraint. Set one dimension and let the other follow it; setting both width and height explicitly fixes both dimensions.
.cn-aspect-ratio {
width: 240px;
aspect-ratio: 4 / 3;
}
The gallery compares all eight presets, including 3:2, 2:3 and 3:4. Values may be a positive number, a positive fraction such as 16 / 9, or auto to clear the constraint.
Platforms and version
The component API is available in Blinc 0.6.0. The Live example runs in a dedicated worker and requires a compatible GPU surface. Preview and Code remain available when Live cannot start. The canvas has a descriptive label; a full screen-reader DOM mirror is not provided. The gallery integration is based on revision e2e55c24e078.
Recordings and live demos use the default Hybrid theme with bundled Noto Sans. The recording uses a 560 × 400 logical viewport at twice that resolution. Live follows its container and actual display density. Source base revision · Exact build source · Artifact versions and checksums · Font license.