CSS自定义属性级联变量var()

.referenceLink { text-decoration: none !important; font-size: 16px !important; color: hsl(200, 100%, 50%) !important }
.referenceLink:hover,.notReferenceLink:hover { color: hsl(240, 100%, 50%) !important }
.notReferenceLink { color: inherit !important; text-decoration: none !important; border-bottom: 1px dotted #000 !important }
.keyword { color: hsl(0, 100%, 50%) !important }

全部随笔/CSS3



作为前端小白,热衷于前端技术,最近正在学习CSS3。前几天看见一篇文章:《必须了解的CSS变量(var)》,看见这标题就立刻被吸引了。纳尼纳尼?var不是JavaScript的关键字么,什么时候CSS也能用了?话说啥时候CSS也能声明变量了?难道不是像SASS/SCSS这样的CSS预编译器的功能么?

在阅读博文及更加深入的查阅后,写了此篇博文,以供交流。文中有多处引用原博文内容,若有侵权,请联系我速删。文末附原博文及相关引用链接。

名称

  • 开始时被叫做“CSS变量”
  • 经过扩展和重构后,改为“CSS自定义属性”
  • CSS增加@apply规则后,名称变为“CSS自定义属性级联变量”

语法

1.定义语法:--variableName: value;

变量名称(variableName)使用规范:

  • 以"--"开头,后面可以是数字、字母、下划线、连字符、汉字等,但不能包含$、[、^、(、%等字符
  • 大小写敏感(另:CSS中,书写属性名时大小写不敏感,但是书写选择器时大小写敏感)
  • 定义只能出现在块{}内
  • 可以使用!important修饰
  • 作用域就是选择器的选定范围,作用域出现交叉时,同名变量覆盖规则取决于选择器权重

1 .a{
2     --container-bg-color: #0ff;
3 }
4 div {
5   --container-bg-color: #0f0 !important;
6 }

2.使用语法:cssPropertyName: var(--variableName[,declarationValue]);

  • declarationValue:仅限于当--variableName变量未定义时的备用选项
  • val()只能被引用,不能被赋值。即只能出现在":"右侧
  • 不能用作地址,如:url(var(--url));
  • var()后面默认带有一个空格,因此在其后面加单位无效,如:

--size: 20; font-size: var(--size)px;

会解析成font-size: 20 px;注意此时“20”与“px”之间有个空格,导致该语句无效。单位应在定义时加上,如:

--size: 20px; font-size: val(--size);

检查浏览器支持

1.使用@supports方法

 1 @supports ( (--size: 0)) {
 2
 3   /* 支持 */
 4
 5 }
 6
 7 @supports ( not (--size: 0)) {
 8
 9  /* 不支持 */
10
11 }

2.使用JavaScript

1 if(window.CSS && window.CSS.supports && window.CSS.supports(‘--size‘, 0)) {
2
3   /* 支持 */
4
5 }else{
6
7   /* 不支持 */
8
9 }

使用JavaScript操作原生属性变量

  • window.getComputedStyle(element, ‘伪类‘|null):[IE9+,Firefox,Chrome,Safari, Opera]获得当前元素最终使用的所有CSS属性值,返回一个只读CSS样式声明对象。
  • window.getComputedStyle(element, ‘伪类‘|null).getPropertyValue(‘propertyName‘)
  • window.getComputedStyle(element, ‘伪类‘|null).setProperty(‘propertyName‘, value)

1 var d1 = document.getElementById("d1"),
2 style1 = window.getComputedStyle(d1, ":after");
3
4 var d2 = document.getElementById("d2"),
5 style2 = window.getComputedStyle(d2, null);
6
7 var value = d1.getPropertyValue(‘--variableName‘);

 浏览器兼容

参考文章:

时间: 2024-11-10 14:48:36

CSS自定义属性级联变量var()的相关文章

了解CSS/CSS3原生变量var

一.变量是个好东西 在任何语言中,变量的有一点作用都是一样的,那就是可以降低维护成本,附带还有更高性能,文件更高压缩率的好处. 随着CSS预编译工具Sass/Less/Stylus的关注和逐渐流行,CSS工作组迅速跟进CSS变量的规范制定,并且,很多浏览器已经跟进,目前,在部分项目中已经可以直接使用了. Chrome/Firefox/Safari浏览器都是绿油油的,兼容性大大超出我的预期,于是果断尝鲜记录下语法用法和特性. 二.CSS变量var()语法和用法和特性 CSS中原生的变量定义语法是:

css原生变量 var

css 变量的支持情况: 在pc端支持还不错,ie不支持,移动端也不支持,大概这就是css变量没有广泛使用的原因吧 CSS预编译工具Sass/Less/Stylus的便捷之处就是可以定义变量,方便代码的维护,其实css也有自己原生的变量var: 命名方式:--* (以--开头,*代表变量名称) 变量名称命名规则: 不能以:$,[,^,(,%等字符字符开头,可以是数字,但是css和js不能以数字开头:但是可以是中文,日文或者韩文 使用方法: 1 就想定义元素的属性一样: :root{ --red:

CSS中的变量使用详解

CSS中的变量给了我们诸多优点:方便.代码重用.更可靠的代码库和提升防错能力. 示例 :root { --base-font-size: 16px; --link-color: #6495ed; } p { font-size: var( --base-font-size ); } a { font-size: var( --base-font-size ); color: var( --link-color ); } 基础 当使用CSS变量时,你应该了解的三个主要组成: 自定义属性 var()

web前端入门到实战:CSS自定义属性+CSS Grid网格实现超级的布局能力

最近我还注意到的一件事就是CSS自定义属性.CSS自定义属性的工作方式有点像SASS和其他预处理器中的变量,主要的区别在于其它方法都是在浏览器中编译后生成,还是原本的CSS写法.CSS自定义属性是真正的动态变量,可以在样式表中或使用javascript即时更新,这使得它们具有更多的可能性.如果你熟悉JavaScript,我喜欢把预处理器变量和CSS自定义属性之间的区别想象成与const和let之间的区别相似--它们都有不同的用途. CSS自定义属性可以方便的实现很多功能(例如主题变化).最近我一

Swift学习——变量var和let常量的用法(一)

Swift中的变量var和let常量 首先介绍一下Swift中的 var 和 let (1)var 是 variable的缩写形式,是变量的意思 ,是可改变的.并非数据类型 比如: 注意每一个语句后面不用加分号 var i:double=10.0 //将i指为double类型的,变量名后面加个冒号 var i = 10 // 假设不指定类型的话,系统会自己主动依据你的赋值来推断类型 i = 15 //正确的写法 (2)let 是常量的意思.不可改变的 比如: let name:String =

C#中隐式类型本地变量var

在新接触的项目中,看到很多声明变量时用var.只记得在javascript中声明变量用var.今天在家里看C#和.Net高级编程,看到隐式变量这一块,就总结一下C# 中隐式变量var的用法. 1.C#可以使用var关键字创建隐式类型的本地变量,使用var关键字不必指定具体的数据类型,编译器会根据本地数据点的初始值来自动推断实际的数据类型. 2.隐式类型变量var的限制: (1)隐式类型只能用于方法或属性范围内的本地变量,不能用于定义返回值,参数或自定义类型的字段数据. (2)var关键字声明的本

Swift学习——变量var和let常量的使用方法(一)

Swift中的变量var和let常量 首先介绍一下Swift中的 var 和 let (1)var 是 variable的缩写形式,是变量的意思 ,是可改变的,并不是数据类型 例如: 注意每个语句后面不用加分号 var i:double=10.0 //将i指为double类型的,变量名后面加个冒号 var i = 10 // 如果不指定类型的话,系统会自动根据你的赋值来判断类型 i = 15 //正确的写法 (2)let 是常量的意思,不可改变的 例如: let name:String = "J

CSS自定义变量属性——像less,sass那样在css中使用变量(译)

介绍 通常大型文档或者应用(甚至小规模的文档或应用)会包括大量的CSS.在这些CSS文件中通常会有大量相同的数据:例如,一个网站可能用了一个颜色主题并反复用三到四种颜色贯穿始终.改动这些数据会非常困难并且容易出错,因为它零散地分布在CSS文件(甚至多个文件)中,可能无法使用寻找替换实现. 于是CSS自定义变量属性应运而生,它允许用户使用特定语法定义相关变量,并在一定范围内反复使用var()引用,改动这些变量,引用这些变量的地方的CSS也将对应地发生变化. 亲测:ios9环境下没有效果,ios9不

学习CSS自定义属性

css变量 今天看了阮一峰老师的博客,看到一篇关于css变量的文章...自己在这边整理一下. 1.声明css变量: body{ --foo: #7F583F; --bar: #F7EFD2; } 用--来声明变量,原因很简单因为$foo被sass用掉了,@foo被less用掉了,所以css变量声明选择--foo. 注意:变量只能用作属性值,不能用作属性名.如:--foo:margin-top: --foo:20px  错误!!! 2.var()函数:一个参数var(--foo)用于读取变量的值: