--*
):CSS 变量自定义属性标记设定值 (比如: --main-color: black
), 由 var()
函数来获取值 (比如: color: var(--main-color)
); 自定义属性在某个地方定义值,然后在其他地方引用它。
CSS Variable 是一个名称以两个连字符 (-
) 开头的属性,如 --foo
。定义之后可以使用 var()
引用的变量。
CSS Variable 可以定义在 :root
选择器中表示可以对全局生效,也可以定义在单独的选择器中表示对应用的元件及其子元件生效。
可以在 CSS 的任何位置引用 CSS 变量:
当 CSS 变量无法查找到已定义的 CSS 变量值时,可以使用预先设置的默认值:
var()
函数第一个逗号以后得部分作为整体返回,用作 var()
的备用值。
在 CSS Variable 声明中,属性值不能直接进行数学运算,需要借助 calc()
函数,类似:
跟普通属性一样,CSS 变量的继承,优先级同样遵循 CSS 级联规则。一个元件上没有定义 CSS 变量,该变量的值会继承其父元件。按照层叠关系向上查找。最终查找到根元件,也即前面例子中用到的: root 选择器所定义的变量。因此,变量的作用域就是它所在的选择器的有效范围。
由于 CSS Variable 定义在选择器中,作用范围与选择器一致,当选择器应用于某个元件时,选择器上的 CSS 变量也会应用于该元件。
对于上面的例子,var(--main-bg-color)
变量的值分别为:
class="three"
的元件:blue;class="four"
的元件:red;你也可以通过在 JS 侧采用 API 来修改 css-variable
的值:
通过 lynx.getElementById().setProperty
方法获取某个元件节点,修改该节点上 css-var
的值:
setProperty
的参数必须为 Object
或者 String
。
在选择器中可以声明 CSS 变量的值,那么切换对应的祖先节点应用的选择器,则可以修改其对应的值
对于上面的例子,通过切换 class 'a' 或者 'b' 可以达到修改对应变量 --main-bg-color
的效果