添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

复杂的网站都会有大量的CSS代码,通常也会有许多重复的值。举个例子,同样一个颜色值可能在成千上百个地方被使用到,如果这个值发生了变化,需要全局搜索并且一个一个替换(很麻烦哎~)。自定义属性在某个地方存储一个值,然后在其他许多地方引用它。另一个好处是语义化的标识。比如,–main-text-color 会比 #00ff00 更易理解,尤其是这个颜色值在其他上下文中也被使用到。

在CSS自定义属性出现之前,CSS变量只能在一些CSS预处理器中使用,如less,scss等

一、变量的声明和使用

CSS选择器不能是数字开头,JS中的变量是不能直接数值的。

但是,在CSS变量中,这些限制通通没有。 但不能包含$,[,^,(,%等字符,普通字符局限在只要是“数字[0-9]”“字母[a-zA-Z]”“下划线_”和“短横线-”这些组合,但是可以是中文,日文或者韩文。

1. 声明:大小写敏感, --variable-name: variable-value;

:root{
    --color: red;

2. 使用:使用var(变量名)来使用一个变量

#div {
    color: var(color)
 

1: CSS变量的定义的值可以任意值或表达式

2:CSS变量之间可互相传递值(如–test1:var(–test))

3:CSS变量不可基于自身再次赋值(如–test:var(–test,#fff)语法是错误的)

4:CSS变量不支持用于媒体查询

3. 变量组合使用

使用变量的时候,通常不会单独使用,可以组合使用
当变量的值是字符串时,可以直接拼接,如下

:root{
  --screen-category: 'category'  //变量值是字符串
body:after {
  content: '--screen-category: 'var(--screen-category);  // 直接拼接

当变量的值是数值时,必须使用calc()函数计算,就算还是简单的单位拼接

.foo {
  --gap: 20;
  /* 无效 */
  margin-top: var(--gap)px;
.foo {
  --gap: 20;
  margin-top: calc(var(--gap) * 1px);

4. 变量未定义和错误定义

如果我们使用的变量没有定义,则使用后面的值作为元素的属性值, 如下所示
body里面访问不到.box定义的–1,因此使用#cd0000

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

使用变量时,若变量已定义且语法无问题,但是变量的值不适用当前属性,则使用缺省值,如:

body {
  --color: 20px;
  background-color: #369;
  background-color: var(--color, #cd0000);

结果body的颜色是transparent,因为20px虽然语法正确,但不可能做为background-color的属性值,则使用其缺省值就是transparent

二、继承和作用域

1. 作用域

使用:root{}来定义全局css变量
想让变量在局部可用,就定义在某个特定的选择器下
还是下面这段代码

:root{
  color: red; //全局可用
.box {
  --1: #369;  //只在.box这个作用域可用 
body {
  background-color: var(--1, #cd0000);

2. 继承

<div class="wrapper">
   <div class="content1"></div>
   <div class="content2"></div>
.wrapper {
   --color: red;
.content1 {
   --color: yellow;

content1的–color为yellow,content2的–color没有定义,继承了wrapper的--color:red并修改为--color: yellow,且只在content1的作用域内有效

三、js操作css变量

:root {
   --color: red;
var root = getComputedStyle(document.documentElement);
var color = root.getPropertyValue('--color').trim();
console.log(color); // '70px'
document.documentElement.style.setProperty('--color', 'yellow');
var color = root.getPropertyValue('--color').trim();
console.log(color);  // '100px'
document.documentElement.style.removeProperty('--color');
var color = root.getPropertyValue('--color').trim();
console.log(color); // '70px'

四、与预处理器(sass,less)比较

1. css变量:

动态性,可以在运行时更改
可以方便地从js读写
可继承,可组合,有作用域

2. 预处理器:

预处理器的变量不是动态的,在运行时不可更改
预处理器的变量没有作用域的说法
不能与js交互

五、常用场景

为风格统一而使用颜色变量
一致的组件属性(布局,定位等)
避免代码冗余(响应式布局,制动动画)

原文链接:https://segmentfault.com/a/1190000015948538

复杂的网站都会有大量的CSS代码,通常也会有许多重复的值。举个例子,同样一个颜色值可能在成千上百个地方被使用到,如果这个值发生了变化,需要全局搜索并且一个一个替换(很麻烦哎~)。自定义属性在某个地方存储一个值,然后在其他许多地方引用它。另一个好处是语义化的标识。比如,–main-text-color 会比 #00ff00 更易理解,尤其是这个颜色值在其他上下文中也被使用到。在CSS自定义属性出现之前,CSS变量只能在一些CSS预处理器中使用,如less,scss等。
CSS | 变数 (CSS | Variables) CSS variables allow you to create reusable values that can be used throughout a CSS document. CSS变量允许您创建可在CSS文档使用的可重用值。 In CSS variable, function var() allows CSS variab...
复杂的网站都会有大量的CSS代码,通常也会有许多重复的值。 举个例子,同样一个颜色值可能在成千上百个地方被使用到,如果这个值发生了变化,需要全局搜索并且一个一个替换,效率不高且容易出错。 自定义属性允许将值存储在一个地方,然后在多个其他地方引用。另一个好处是语义标识符。例如,--main-text-color比 更容易理解#00ff00,特别是如果在其他上下文使用相同的颜色。 基本用法 1、css声明变量 声明一个自定义属性属性名需要以两个减号(--)开始,属性值则可以是任何有
CSS变量给了我们诸多优点:方便、代码重用、更可靠的代码库和提升防错能力。示例:root { --base-font-size: 16px; --link-color: #6495ed; font-size: var( --base-font-size ); font-size: var( --base-font-size ); color: var( -
js读取变量: 方式一:dom节点.style.getPropertyValue('--名称'); 该方式只能读取setProperty设置的变量,不能读取在css变量,但都能设置css变量 方式二:getComputedStyle(dom节点).getPropertyValue('--名称'); 能读取css设置的变量和setProperty设置的变量,但不能.setProp
CSS 变量CSS variable)又叫做"CSS 自定义属性"(CSS custom properties),可以通过JS动态改变。 一、变量的声明 变量名前面要加两根连词线–,变量名大小写敏感。 :root { --main-color: #4d4e53; --main-bg: rgb(255, 255, 255); --logo-border-color: rebeccapurple; --header-height: 68px; --content-padding: 10px
所以很对元素都会用到这些颜色,例如某些字体颜色,弹框提示颜色等等。 如果每次用到的时候,都使用十六进制的颜色表示,那么效率十分低,并且如果万一有一天需要更换主题颜色,那么一个一个更改,是十分繁琐的。 为了解决以上问题,css引入了变量CSS变量可以访问 DOM,可以创建具有局部或全局范围的变量使用 JavaScript 和媒体查询来修改变量。var() 函数用于插入 CSS 变量的值。全局变量可以在整个文档进行访问
使用css变量的原因 当我们在网页需要大量使用相同的属性值时,如颜色,字体,字体大小等,当我们需要修改属性值时,就需要全部修改,工作量较大。 使用css变量的好处 如果我们使用css变量来定义这些颜色,字体和字体大小,那么我们只需要在一个地方修改属性值,就可以修改所有地方,这就能减少我们的工作量。 css变量使用方法 <style> /* :root指向根节点 */ :root { --color: red; --font-s
转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 Sass和Less这样的预处理器,让我们的CSS代码保持良好的结构和可维护性。像变量、混合(mixins)、循环控制等特性,增强了动态编写CSS的能力,从而减少重复代码,也加快了我们开发速度。 近年来,一些动态特性开始作为规范的一部分,出现在CS...
css 变量是一种特殊的值,可以在 css 使用,它可以帮助我们更加方便地维护和管理 css 代码。 在使用 css 变量时,需要先在 css 代码声明变量。声明变量的方式是: ```css :root { --变量名: 变量值; 在上面的代码,`:root` 表示根元素,即 html 元素。这意味着这个变量在整个文档都可以使用。 例如,如果我们想要声明一个名为 `primary-color` 的变量,其值为红色,那么我们可以这样写: ```css :root { --primary-color: red; 然后就可以在 css 代码使用这个变量了。使用变量的方式是: ```css 元素选择器 { 属性: var(--变量名); 例如,如果我们想要将所有段落的文字颜色设置为 `primary-color` 变量的值,即红色,可以这样写: ```css color: var(--primary-color); 注意,如果在使用变量变量没有被声明,或者变量声明了但没有赋值,那么这个变量的值就是 `none`。 css 变量还可以有默认值,即在声明变量时可以给变量提供一个默认值。如果在使用