参考链接:
阮一峰css笔记:http://www.ruanyifeng.com/blo...
MDN CSS变量教程:https://developer.mozilla.org...浏览器反对水平:
支流古代浏览器反对
根本应用:
1、定义:
应用 --
符号申明一个css变量,变量的值能够为任意数值
:root { --main-bg-color: brown;}
变量名辨别大小写,且领有作用域,个别css变量全局应用,则放到 :root 中即可
2、作用域
:root { --color: red;}div { --color: blue;}.box { height: 100px; width: 100px; background-color: var(--color);}
<div class="box"></div><p class="box"></p>
运行html代码,失去一个蓝色的div和红色的p标签,这是受作用域的影响,和款式的优先级一样,获取变量时拿到的是最精准的作用域下的变量,id > class > 标签 > 全局
利用作用域,咱们能够做这两件罕用的操作:
(1)媒体查问批改变量
@media screen and (max-width: 375px) { body { --padding: 5px; }}@media screen and (max-width: 1080px) { body { --padding: 15px; }}
(2)js切换类名更换主题色
.white-theme { --bg-color: #fff; --color: #333;}.black-theme { --bg-color: #333; --color: #fff; }
通过js切换类名,即可切换不同的变量,须要留神的是,主题类须要在节点最外层,比方body或者app类上,其次须要用到主题色的中央都要应用变量
3、调用变量:
应用 var() 函数和变量名调用变量
.red { color: var(--theme-color);}
变量只能用做属性值,不能用做属性名
4、默认值和向下兼容:
var() 函数能够承受第二个参数,用作找不到变量时的默认值
.red { color: var(--theme-color,red);}.red { color: var(--theme-color, var(--color,red));}
咱们无奈保障用户应用的设施都反对css变量的个性,所以必要状况下能够进行向下兼容的解决:如果var有效,则应用前一个属性值\
.red { color: red; color: var(--theme-color);}
5、js操作变量
(1)检测是否反对css变量
const isSupported = window.CSS && window.CSS.supports && window.CSS.supports('--a', 0);if (isSupported) { /* supported */} else { /* not supported */}
(2)操作变量
// 设置document.body.style.setProperty("--color","red");// 读取document.body.style.getPropertyValue("--color");// 删除document.body.style.removeProperty("--color");
显然,js操作变量须要在 document的环境下,在一些非凡的场合开发就无奈发挥作用了,比方uniapp中的多端等。