跳到正文

样式与布局

用链式方法设置布局、绘制、排版和交互样式。长度是逻辑像素。

#样式方法

div()
    .p(16.0)
    .gap(12.0)
    .bg(Color::rgb8(24, 24, 27))
    .text_color(Color::rgb8(250, 250, 250))

flex_col、p_3、rounded_lg 和 text_lg 等预设与 Go 和 TypeScript 的辅助方法对应。p_3 是 12 像素。自定义值请使用 rounded(10.0)、p(14.0) 以及 w / h。

#合并样式

后写的调用会覆盖同一属性。when 仅在条件为真时应用分支:

div().p(12.0).when(self.selected, |style| style.bg(Color::rgb8(37, 99, 235)))

#复用样式

编写接收并返回 Element 的函数:

fn panel(child: impl IntoElement) -> Element {
    div().p_3().rounded_xl().bg(Color::rgb8(32, 36, 44)).child(child)
}

#Flexbox

使用 flex、flex_col、flex_grow、对齐和 gap。给可滚动的弹性子节点设置 min_w(0.0) 或 min_h(0.0),它们才能收缩。

#网格布局

使用 grid,再配合轨道、放置和跨度方法。

#文本与颜色

字体族、字重、字号、换行和选择作用于文本。颜色接受 Color::rgb8、Color::rgba8 以及打包值。

#交互状态

button()
    .bg(Color::rgb8(37, 99, 235))
    .hover(|style| style.bg(Color::rgb8(29, 78, 216)))
    .child("Save")

#分组与具名分组悬停

在祖先上命名 group,并在后代上使用 group_hover,让它们一起设置样式。