菜单 · 文档

最后更新:2026年8月12日

文档

颜色、尺寸和条件样式怎么写,才不容易踩坑。

属性与样式

样式值按 CSS 思路编码:长度、颜色、枚举关键字都有固定约定。写对类型,比事后靠字符串拼接省心得多。完整关键字表见 元素与布局

常用属性族

属性族示例
盒模型widthheightpadding_*margin_*
排列align_itemsjustify_contentalign_selfalignment
外观background_coloropacityborder_*shadowclip
文本font_sizefont_weightfont_colorline_heightmax_lines
交互enabledvisibilityfocusablehit_test_behavior
定位positionz_index

颜色与单位

颜色接受 ARGB u32 或 hex 字符串:

text {
    font_color: 0xFF0F172Au32,
    background_color: "#fff8fafc",
    font_size: 18.0,
    "内容"
}

尺寸默认是 vp。百分比写在 width / height 上:

column {
    width: "100%",
    height: "50%",
    padding: "12 16",
}

需要物理像素或窗口换算时从 WindowMetrics 读取 scale,不在业务中写设备常量。

条件样式

把视觉状态从业务状态直接派生:

let active = use_signal(|| false);

rsx! {
    button {
        background_color: if active() { 0xFF16A34Au32 } else { 0xFF334155u32 },
        opacity: if active() { 1.0 } else { 0.72 },
        shadow: if active() { "sm" },
        "状态"
    }
}

不要在点击回调里直接修改 native attribute,再让 RSX 保留旧值;下一次 diff 会以 RSX 为准覆盖它。

封装设计 Token

在组件层集中定义 color、spacing、radius、typography 与关键字常量,页面只消费 token,不散落硬编码色值与尺寸。

需要完整主题系统时使用顶部“组件”中的 ThemeProvider。基础 element 本身不依赖 shadcn feature。

文本与裁剪

text {
    max_lines: 2,
    text_overflow: "ellipsis",
    line_height: 22.0,
    "最多显示两行"
}

文本换行依赖可确定的宽度。圆角、阴影和 child 越界组合时明确设置 clip,并在真机检查 renderer 与 ArkUI 的实际层合成结果。