鱼C论坛

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

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

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

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

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

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

c4de8df9acd1385cf9604dba6468d77e.jpg


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

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

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

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


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





声明

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


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

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

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

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

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

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

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

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




var()

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

它用于读取变量
  1.   .div1 {
  2.             border:var(--pborder);
  3.             background: var(--pcolor);
  4.         }
复制代码


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

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


var()函数还可以用在变量的声明(变量调用变量):
  1. :root {
  2.   --myColor: red;
  3.   --uText: var(--myColor);
  4. }
复制代码


注意,变量值只能用作属性,不能用作属性名:

  1. .div1 {
  2.   --side: margin-top;
  3.   /* 无效 */
  4.   var(--side): 33px;
  5. }
复制代码


演示代码:
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.     <meta charset="UTF-8">
  5.     <title>Title</title>
  6.     <style type="text/css">
  7.         /*创建两个css变量*/
  8.         body{
  9.             --pborder:1px solid black;
  10.             --pcolor:red;
  11.         }
  12.         .div1 {
  13.             border:var(--pborder);
  14.             background: var(--pcolor);
  15.             height: 100px;
  16.             width: 100px;
  17.             font-size: 30px;
  18.         }
  19.         .div2 {
  20.             border:var(--foo,10px solid #e1968e);
  21.             background: var(--bar, #6e89ff);
  22.             height: 100px;
  23.             width: 100px;
  24.             font-size: 30px;
  25.         }
  26.     </style>
  27. </head>
  28. <body>
  29. <div class="div1">我是d1</div>
  30. <div class="div2">在下D2</div>
  31. </body>
  32. </html>
复制代码

Snip20181130_97.png





作用域

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

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

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

例子:
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.     <meta charset="UTF-8">
  5.     <title>Title</title>
  6.     <style type="text/css">
  7.         :root { --color: blue; }
  8.         div { --color: green; }
  9.         #alert { --color: red; }
  10.         * { color: var(--color); }
  11.     </style>
  12. </head>
  13. <body>
  14. <p>蓝色</p>
  15. <div>绿色</div>
  16. <div id="alert">红色</div>
  17. </body>
  18. </html>
复制代码

Snip20181130_99.png


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

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

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

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

  4. .content {
  5.   --b: #F7EFD2;
  6. }
复制代码


上面代码中,变量--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-4-26 22:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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