css变量

一、变量的声明及使用

声明声明,在变量名前加 --;

变量的使用,用var()调用;

:root{   --myColor: deepskyblue;}body{   background: var(--myColor);}

  上面伪类root中定义了变量--myColor,它与正式属性没有什么不同,所以 CSS 变量(CSS variable)又叫做"CSS 自定义属性"(CSS custom properties)。

把css变量直接看成属性就行,更好理解。

CSS变量使用完整语法

  CSS变量使用的完整语法为:var( [, ]? ),用中文表示就是:var( <自定义属性名> [, <默认值 ]? )

意思就是,如果我们使用的变量没有定义(注意,仅限于没有定义),则使用后面的值作为元素的属性值。举个例子:

.box {
  --1: #369;
}
body {
  background-color: var(--1, #cd0000);
}

则此时的背景色是#cd0000

  变量名的命名不能包含$[^(%等字符,普通字符局限在只要是“数字[0-9]”“字母[a-zA-Z]”“下划线_”和“短横线-”这些组合,但是可以是中文,日文或者韩文。css变量没有不能以数字开头的规定,所以一下写法都合法:

:root{    --1: red;    --蓝色:blue;}

二、变量的意义

在第三方语法如sass中可以定义变量,但是浏览器只能识别CSS文件,scss文件需要通过编译转化为css文件,在css中没有变量,属性值就不能根据变量动态修改;

原生css有变量了以后,可以降低维护难度,在项目中也能通过直接改变变量值来修改属性。

三、变量值的类型

如果变量值是一个字符串,可以与其他字符串拼接

--bar: ‘hello‘;
--foo: var(--bar)‘world‘;

如果变量值是数值,不能与数值单位直接连用。

:root{
 --he: 10;
 /*无效的*/
 height: var(--he)px;
}

上面代码中,数值与单位直接写在一起,这是无效的。必须使用calc()函数,将它们连接。

:root{
 --he: 10;
 height: calc(var(--he)*1px);
}

如果变量值带有单位,就不能写成字符串。

    /* 无效 */
    .root {
      --sz: ‘20px‘;
      font-size: var(--sz);
    }

    /* 有效 */
    .root {
      --sz: 20px;
      font-size: var(--sz);
    }

四、作用域

  同一个 CSS 变量,可以在多个选择器内声明。读取的时候,优先级最高的声明生效。这与 CSS 的"层叠"(cascade)规则是一致的。

如下例子:

:root { --color: purple; }
div { --color: green; }
#alert { --color: red; }
* { color: var(--color); }

<p>紫色继承于根元素</p>
<div>绿色来自直接设置</div>
<div id=‘alert‘>
  ID选择器权重更高,因此这是是红色!
  <p>我也是红色,占了继承的光</p>
</div>

上面这个例子我们可以获得这些信息:

  1. 变量也是跟着CSS选择器走的,如果变量所在的选择器和使用变量的元素没有交集,是没有效果的。例如#alert定义的变量,只有idalert的元素才能享有。如果你想变量全局使用,则你可以设置在:root选择器上;
  2. 当存在多个同样名称的变量时候,变量的覆盖规则由CSS选择器的权重决定的,但并无!important这种用法,因为没有必要,!important设计初衷是干掉JS的style设置,但对于变量的定义则没有这样的需求。

五、参考链接

  1. http://www.zhangxinxu.com/wordpress/?p=5804

  2. http://www.ruanyifeng.com/blog/2017/05/css-variables.html

  3. https://developer.mozilla.org/zh-CN/docs/Web/CSS/Using_CSS_variables

时间: 2024-10-14 03:10:27

css变量的相关文章

【译】巧用 CSS 变量实现自动前缀

转https://www.h5jun.com/post/autoprefixing-with-css-variables-lea-verou.html 最近,当我在制作 markapp.io 这个小网站的时候,我想出一个巧妙的技巧用在 CSS 变量上,我们可以天然地使用它们的动态本质.让我们看一下当你想使用一个属性,但是这个属性有不同的版本,一个无前缀的标准版和一个或多个有前缀的版本的情形.在这里我举一个例子,比如我们使用clip-path,目前需要同时使用无前缀的版本和一个-webkit-前缀

CSS变量variable

前面的话 一直以来,CSS中是没有变量而言的,要使用 CSS 变量,只能借助 SASS 或者 LESS 这类预编译器.新的草案发布之后,直接在 CSS 中定义和使用变量不再是幻想了.本文将详细介绍CSS变量variable 基本用法 CSS 变量是由CSS作者定义的实体,其中包含要在整个文档中重复使用的特定值.使用自定义属性来设置变量名,并使用特定的 var() 来访问 兼容性:移动端和IE浏览器不兼容 [声明变量] 变量必须以--开头.例如--example-variable: 20px,意思

CSS 变量教程(转载)

作者: 阮一峰 日期: 2017年5月 9日 今年三月,微软宣布 Edge 浏览器将支持 CSS 变量. 这个重要的 CSS 新功能,所有主要浏览器已经都支持了.本文全面介绍如何使用它,你会发现原生 CSS 从此变得异常强大. 一.变量的声明 声明变量的时候,变量名前面要加两根连词线(--). body { --foo: #7F583F; --bar: #F7EFD2; } 上面代码中,body选择器里面声明了两个变量:--foo和--bar. 它们与color.font-size等正式属性没有

引人瞩目的 CSS 变量(CSS Variable)

这是一个令人激动的革新. CSS 变量,顾名思义,也就是由网页的作者或用户定义的实体,用来指定文档中的特定变量. 更准确的说法,应该称之为 CSS 自定义属性 ,不过下文为了好理解都称之为 CSS 变量. 一直以来我们都知道,CSS 中是没有变量而言的,要使用 CSS 变量,只能借助 SASS 或者 LESS 这类预编译器. 但是新的草案发布之后,直接在 CSS 中定义和使用变量已经不再是幻想了,像下面这样,看个简单的例子: // 声明一个变量: :root{ --bgColor:#000; }

CSS变量试玩儿

CSS很美妙,能够为您的页面床上衣裳,各种各样五彩斑斓的衣裳,但是对于开发者来说,他又不够灵动,于是乎有了各种各样的预处理器Sass.LESS.Stylus(笔者建议Sass的SCSS语法),这些预处理器可以很大程度的提高CSS的灵活性,增强CSS的代码组织与维护.但是毕竟不是亲生的,然后负责CSS开发的那些大牛们坐不住了,开始给CSS赋予一些新的特性,本文就来探讨下CSS变量的进展与应用. W3C的关于CSS变量的最新探索体现在CSS Custom Properties for Cascadi

CSS 变量教程

一.变量的声明 声明变量的时候,变量名前面要加两根连词线(--). body { --foo: #7F583F; --bar: #F7EFD2; } 上面代码中,body选择器里面声明了两个变量:--foo和--bar. 它们与color.font-size等正式属性没有什么不同,只是没有默认含义.所以 CSS 变量(CSS variable)又叫做"CSS 自定义属性"(CSS custom properties).因为变量与自定义的 CSS 属性其实是一回事. 你可能会问,为什么选

CSS变量:声明全局变量,让编写更快捷 --root

在编写css公共样式的时候,我们都会声明很多通用的颜色.字号等.现在我们可以通过声明CSS变量来实现了 1.变量的声明 CSS变量声明是字母前加两个横线(--)如: body{ --Colors:#dfdfdf; --fS16px:16px; } 上述代码中,body选择器中声明了Colors和fS16px两个变量.而使用'--'是因为$被Sass占用了,@被Less占用了,所以是为了区分它们. 同时,你也可以用--root{}来存放所有变量,在下边使用的时候直接调用即可.如: --root{

css变量保存

今年三月,微软宣布 Edge 浏览器将支持 CSS 变量. 这个重要的 CSS 新功能,所有主要浏览器已经都支持了.本文全面介绍如何使用它,你会发现原生 CSS 从此变得异常强大. 一.变量的声明 声明变量的时候,变量名前面要加两根连词线(--). body { --foo: #7F583F; --bar: #F7EFD2; } 上面代码中,body选择器里面声明了两个变量:--foo和--bar. 它们与color.font-size等正式属性没有什么不同,只是没有默认含义.所以 CSS 变量

CSS变量使用解析

很早直接就了解到CSS变量相关的内容,奈何之前使用价值不高(很多主流浏览器不兼容) 最近发现主流浏览器都已经支持了这一变化 这一重要的变化,可能会让你发现,原生CSS从此变的异常强大~,下面看一下如何使用 变量的声明 css的变量声明标识符为:--,即变量名前面加2个连接线 body { --head_color: #000; --head_bar: #F7EFD2; } 上面代码中,body选择器里面声明了两个变量.它与正常的属性定义上没有什么不同,只是没有默认含义,所以其又叫做CSS自定义属