鱼C论坛

 找回密码
 立即注册
查看: 2001|回复: 10

[奇技淫巧] CSS“变量”小知识

[复制链接]
发表于 2018-11-30 09:41:40 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 不二如是 于 2020-3-17 19:01 编辑

c4de8df9acd1385cf9604dba6468d77e.jpg


本次我来给大家科普一下,CSS中如何使用“变量”

CSS 变量是由CSS作者定义的实体,其中包含要在整个文档中重复使用的特定值。

接下来,我要CV几行官方定义,建议不看...

使用自定义属性来设置变量名,并使用特定的 var() 来访问,比如:
 color: var(--main-color);

CSS 变量当前有两种形式:
游客,如果您要查看本帖隐藏内容请回复





声明

声明变量的时候,变量名前面要加两根减号(--):
 body{
            --pborder:1px solid black;
            --pcolor:red;
        }

上面代码中,body选择器里面声明了两个变量:--pborber和--pcolor。

它们与border、color等正式属性没有什么不同,只是没有默认含义。

所以 CSS 变量(CSS variable)又叫做"CSS 自定义属性"(CSS custom properties)。

因为变量与自定义的 CSS 属性其实是一回事。

你可能会问,为什么选择两根连词线(--)表示变量?

因为$被 JQ 用掉了,@被 Less 用掉了,所以为了不产生冲突,官方的 CSS 变量就改用两根连词线了。

各种值都可以放入 CSS 变量,px,#颜色、rem、calc()哈

变量名大小写敏感,--color和-Color是两个不同变量。




var()

创建好变量了,接下来就是如何调用了,没错var()闪亮登场了。

它用于读取变量
  .div1 {
            border:var(--pborder);
            background: var(--pcolor);
        }

ar()函数还可以使用第二个参数,表示变量的默认值。

如果该变量不存在,就会使用这个默认值:
background: var(--pcolor,#000); 

var()函数还可以用在变量的声明(变量调用变量):
:root {
  --myColor: red;
  --uText: var(--myColor);
}

注意,变量值只能用作属性,不能用作属性名:
.div1 {
  --side: margin-top;
  /* 无效 */
  var(--side): 33px;
}

演示代码:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style type="text/css">
        /*创建两个css变量*/
        body{
            --pborder:1px solid black;
            --pcolor:red;
        }
        .div1 {
            border:var(--pborder);
            background: var(--pcolor);
            height: 100px;
            width: 100px;
            font-size: 30px;
        }
        .div2 {
            border:var(--foo,10px solid #e1968e);
            background: var(--bar, #6e89ff);
            height: 100px;
            width: 100px;
            font-size: 30px;
        }
    </style>
</head>
<body>
<div class="div1">我是d1</div>
<div class="div2">在下D2</div>
</body>
</html>
Snip20181130_97.png





作用域

同一个 CSS 变量,可以在多个选择器内声明。

读取的时候,优先级最高的声明生效。

这与 CSS 的"层叠"(cascade)规则是一致的。
(推荐:0 0 3 4 - CSS选择器优先级 | 全网最粗暴有效

例子:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style type="text/css">
        :root { --color: blue; }
        div { --color: green; }
        #alert { --color: red; }
        * { color: var(--color); }
    </style>
</head>
<body>
<p>蓝色</p>
<div>绿色</div>
<div id="alert">红色</div>
</body>
</html>
Snip20181130_99.png


上面代码中,三个选择器都声明了--color变量。

不同元素读取这个变量的时候,会采用优先级最高的规则,因此三段文字的颜色是不一样的。

这就是说,变量的作用域就是它所在的选择器的有效范围。

这就是说,变量的作用域就是它所在的选择器的有效范围:
body {
  --a #7F583F;
}

.content {
  --b: #F7EFD2;
}

上面代码中,变量--a的作用域是body选择器的生效范围,--b的作用域是.content选择器的生效范围。

由于这个原因,全局的变量通常放在根元素:root里面,确保任何选择器都可以读取它们。






                               
登录/注册后可看大图


如果喜欢,别忘了评分


                               
登录/注册后可看大图


这位鱼油,如果喜欢本系列HTML帖子,请订阅 专辑&#9758;传送门)(不喜欢更要订阅
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-1-4 10:10:18 | 显示全部楼层
马上学习!!!!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-1-6 15:03:33 | 显示全部楼层
谢谢分享!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-21 18:01:36 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-7-17 22:47:29 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-12-11 13:33:44 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-28 15:47:39 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-7-11 17:15:04 | 显示全部楼层
看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-7-14 23:06:29 | 显示全部楼层
查看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-4-14 15:34:31 | 显示全部楼层
1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-4-26 20:52:38 | 显示全部楼层
m
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-22 23:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表