在定义主题或编写css公共样式的时候,我们都会声明很多通用的颜色、字号等。我们这里不使用less或sass,而是原生css变量来实现。并且:root 定义的样式可通过js改变从而达到改变主题等效果。
如苹果官网中的一个效果:(滚轮)
:root是一个伪类,表示文档根元素,非IE及ie8及以上浏览器都支持,在:root中声明相当于全局属性,使用var()来引用
<style> //变量的声明 :root { --bcolor: black; --percentage: 0%; --fColor:var(--bgcolors)//var()函数还可以用在变量声明中 } //var函数用来读取变量 h1 { background-color: var(--bcolor); background-position-x: calc(100% - var(--percentage)); } </style>
var()函数还可以使用第二个参数,表示变量的默认值。如果该变量不存在,就会使用这个默认值。
background-color: var(--bcolor, #fafafa);
通过js控制:root定义的样式
设置/修改:
let h1 = document.querySelector('h1') h1.style.setProperty('--percentage', 50%)
获取:
h1.style.getPropertyValue('--percentage')