参考链接:
阮一峰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中的多端等。
发表回复