多主题
Lynx 支持了较丰富的 CSS 属性,配合 CSS 选择器、CSS 变量以及 可选择的 CSS 继承能力,可轻松实现多样化的主题样式,为用户界面提供一致且优雅的外观和风格。通过定义和管理不同的主题变量,开发者可以方便地切换不同的配色方案、字体风格以及其他视觉元件,确保用户获得最佳的视觉体验和互动感受。
使用 CSS 后代选择器切换主题
与 Web 开发类似,利用后代选择器可以通过切换父级元件的 class,来影响其所有后代节点的样式,从而实现多种主题样式的切换。
定义 CSS 主题
首先需要定义多个主题的 CSS 样式,不同主题会有不同的颜色、背景等属性。
比如我们可以定义浅色和深色两种主题样式,浅色模式通过 .theme-light .content 定义样式,深色模式通过 .theme-dark .content 定义样式。
应用 CSS 样式
在页面中,对父节点(可以定义在根节点)class 为 theme-dark 或 theme-light,对后代节点设置 class 为 content,这样后代节点
就能被应用到 .theme-light .content 或者 .theme-dark .content 的样式。
切换主题样式
当主题发生变化时,切换顶层的节点的 class 为 theme-dark 或 theme-light,即可让后代节点的样式发生更新。在 Lynx 开发场景中,前端多主题的值可以由客户端通知前端,比如客户端可以通过更新 globalProps 来通知前端主题变化。
前端对应写法:
例子
使用 CSS 变量切换主题
使用后代选择器切换多主题时,我们需要预先定义不同主题样式的选择器,在主题种类较多的场景下不够灵活。
可 以使用 CSS Variable 来定义主题样式,直接修改变量的值来实现主题切换。
定义 CSS 主题
同样我们定义需要变化的主题样式变量,对相同的变量定义不同的值。
比如不同的主题下,color 和 background-color 需要能跟随主题变化,那么需要定义两个 CSS 变量 --color 和 --bg,后代节点可以在样式表中通过 var(--color)、var(--bg) 来获取这些变量的值。
应用 CSS 样式
注意 CSS 变量需要被挂载到顶层节点 (可以定义在根节点),这样其子孙节点可以在对应的样式表里使用到该变量。
其后代节点在 .content 中通过 var(--*) 的方式应用变量的值。
