css原生变量 var

css 变量的支持情况:

在pc端支持还不错,ie不支持,移动端也不支持,大概这就是css变量没有广泛使用的原因吧

CSS预编译工具Sass/Less/Stylus的便捷之处就是可以定义变量,方便代码的维护,其实css也有自己原生的变量var:

命名方式:--* (以--开头,*代表变量名称)

变量名称命名规则:

不能以:$[^(%等字符字符开头,可以是数字,但是css和js不能以数字开头;但是可以是中文,日文或者韩文

使用方法:

1 就想定义元素的属性一样:

:root{

--red:red;

--blue:blue;

--yellow:yellow;

}
.div1{ 
background-color
:var(--red);

}

2 css变量有自己的作用域:

例如:

#div2{

--borderWidth:2px;

}

.div3{

--borderColor:red;

border:1px solid var(--borderColor);

}

#div2{

border:var(--borderWidth) solid red;

}

 

.div3中的--borderColor只能class为div3的元素可以使用,它的作用域在div3中

--borderWidth 只能是id为div2的元素才可以使用,别的元素没有作用

:root下定义的变量的作用域是整个文档

3 css缺省值

var( <自定义属性名> [, <默认值 ]? )

.div5{

background-color:var(--color,red);

}

 

--color变量没有定义,就使用默认值red;

所以上面的定义方式等价于:

 

.div5{

 background-color:red;
}

 

4 css变量默认值

.div6{

background-color:var(--color);

}

 

div6没有定义默认值。--color变量没有定义。背景颜色默认是白素

等价于没有定义背景颜色

 

5 不合法的变量值:

.div7{

--width:20px;

color:var(--width,red);

}

不合法的使用,不是缺省值。等价于

.div7{

--width:20px;

color:20px;

}

所以文字的颜色是文字的默认颜色,不是红色而是黑色

 

6 CSS变量的空格尾随特性

.div8{
--size:20px;
font-size:var(--size)px;
}
div8的字体大小并不是20px;是默认的字体大小
解析出来是font-size:20 px;在20的后边有一个空格 。。。。

可以使用CSS3 calc()计算:

.div8 {
  --size: 20;   
  font-size: calc(var(--size) * 1px);
}
div8的字体大小才是20px;

 

 

7 css属性不能定义变量。例如:

.div4{

--width:width;

border-var(--width):1px;

var(--width):20px;

}

上面的定义方式是不合法的

 

8 与Sass/Less/Stylus中的定义不同,不能像定义变量一样;例如:

--red:red;
span{
background-color:var(--red);
}

上面的定义方法是不起作用的

css原生的变量的定义方法,就想定义元素的属性一样

 

转载于:https://www.cnblogs.com/xiaofenguo/p/6126725.html

### 使用 CSS 自定义属性实现样式动态化的详解 CSS 自定义属性是一种强大的工具,允许开发者通过简单的 `--` 前缀声明变量,并在整个项目中重复使用这些变量[^1]。以下是关于如何使用 CSS 自定义属性以及实现样式的动态化方法的具体说明。 #### 定义和应用自定义属性 要创建一个 CSS 变量,只需在任何作用域内的选择器中以双连字符 (`--`) 开头命名该变量。例如: ```css :root { --primary-color: #0d6efd; /* 蓝色 */ } body { color: var(--primary-color); /* 应用变量 */ } ``` 上述代码片段展示了如何在一个全局范围(`:root` 表示 HTML 文档根节点)内定义名为 `--primary-color` 的变量并将其应用于其他样式规则中。 #### 实现样式的动态变化 除了静态设置外,还可以利用 JavaScript 或者伪类等方式实时调整这些变量值,从而达到动态改变页面外观的效果[^3]。下面是一个基于鼠标悬停事件更改背景颜色的例子: ```css button { background-color: var(--btn-bg, lightgray); } button:hover { --btn-bg: darkblue; transition: all .3s ease-in-out; } ``` 在这个例子中,当用户的指针移动到按钮上时,由于 hover 状态触发了新的 `--btn-bg` 值设定,因此按钮的背景颜色会发生平滑过渡效果。 另外一种方式则是借助脚本语言如 JavaScript 来操作 DOM 元素上的 style 属性来间接影响已有的 CSS 变量: ```javascript document.querySelector('button').addEventListener('click', () => { document.documentElement.style.setProperty('--primary-color', 'red'); }); ``` 此段 JS 将点击后的主色调更改为红色。 ### 总结 相比传统的预处理技术而言,真正的 CSS 变量提供了更大的灵活性与即时反馈机制;它们不仅限于单一文件内部有效,在整个网站范围内都可以被轻松共享及维护。与此同时,尽管 React 组件库之类的框架可能提供额外的功能特性使得某些情况下显得更为便捷高效,但从长远来看,坚持采用原生解决方案往往有助于维持项目的清晰度与长期可维护性[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值