千家信息网

CSS中变量怎么用

发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,小编给大家分享一下CSS中变量怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、变量的声明声明变量的时候,变量名前面
千家信息网最后更新 2025年11月08日CSS中变量怎么用

小编给大家分享一下CSS中变量怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

  一、变量的声明

  声明变量的时候,变量名前面要加两根连词线(--)。

  body{

  --foo:#7F583F;

  --bar:#F7EFD2;

  }

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

  它们与color、font-size等正式属性没有什么不同,只是没有默认含义。所以CSS变量(CSSvariable)又叫做"CSS自定义属性"(CSScustomproperties)。因为变量与自定义的CSS属性其实是一回事。

  你可能会问,为什么选择两根连词线(--)表示变量?因为$foo被Sass用掉了,@foo被Less用掉了。为了不产生冲突,官方的CSS变量就改用两根连词线了。

  各种值都可以放入CSS变量。

  :root{

  --main-color:#4d4e53;

  --main-bg:rgb(255,255,255);

  --logo-border-color:rebeccapurple;

  --header-height:68px;

  --content-padding:10px20px;

  --base-line-height:1.428571429;

  --transition-duration:.35s;

  --external-link:"externallink";

  --margin-top:calc(2vh+20px);

  }

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

  二、var()函数

  var()函数用于读取变量。

  a{

  color:var(--foo);

  text-decoration-color:var(--bar);

  }

  var()函数还可以使用第二个参数,表示变量的默认值。如果该变量不存在,就会使用这个默认值。

  color:var(--foo,#7F583F);

  第二个参数不处理内部的逗号或空格,都视作参数的一部分。

  var(--font-stack,"Roboto","Helvetica");

  var(--pad,10px15px20px);

  var()函数还可以用在变量的声明。

  :root{

  --primary-color:red;

  --logo-text:var(--primary-color);

  }

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

  .foo{

  --side:margin-top;

  /*无效*/

  var(--side):20px;

  }

  上面代码中,变量--side用作属性名,这是无效的。

  三、变量值的类型

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

  --bar:'hello';

  --foo:var(--bar)'world';

  利用这一点,可以debug(例子)。

  body:after{

  content:'--screen-category:'var(--screen-category);

  }

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

  .foo{

  --gap:20;

  /*无效*/

  margin-top:var(--gap)px;

  }

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

  .foo{

  --gap:20;

  margin-top:calc(var(--gap)*1px);

  }

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

  /*无效*/

  .foo{

  --foo:'20px';

  font-size:var(--foo);

  }

  /*有效*/

  .foo{

  --foo:20px;

  font-size:var(--foo);

  }

  四、作用域

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

  下面是一个例子。

  

蓝色

绿色

红色

  上面代码中,三个选择器都声明了--color变量。不同元素读取这个变量的时候,会采用优先级最高的规则,因此三段文字的颜色是不一样的。

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

  body{

  --foo:#7F583F;

  }

  .content{

  --bar:#F7EFD2;

  }

  上面代码中,变量--foo的作用域是body选择器的生效范围,--bar的作用域是.content选择器的生效范围。

  由于这个原因,全局的变量通常放在根元素:root里面,确保任何选择器都可以读取它们。

  :root{

  --main-color:#06c;

  }

  五、响应式布局

  CSS是动态的,页面的任何变化,都会导致采用的规则变化。

  利用这个特点,可以在响应式布局的media命令里面声明变量,使得不同的屏幕宽度有不同的变量值。

  body{

  --primary:#7F583F;

  --secondary:#F7EFD2;

  }

  a{

  color:var(--primary);

  text-decoration-color:var(--secondary);

  }

  @mediascreenand(min-width:768px){

  body{

  --primary:#F7EFD2;

  --secondary:#7F583F;

  }

  }

  六、兼容性处理

  对于不支持CSS变量的浏览器,可以采用下面的写法。

  a{

  color:#7F583F;

  color:var(--primary);

  }

  也可以使用@support命令进行检测。

  @supports((--a:0)){

  /*supported*/

  }

  @supports(not(--a:0)){

  /*notsupported*/

  }

  七、JavaScript操作

  JavaScript也可以检测浏览器是否支持CSS变量。

  constisSupported=

  window.CSS&&

  window.CSS.supports&&

  window.CSS.supports('--a',0);

  if(isSupported){

  /*supported*/

  }else{

  /*notsupported*/

  }

  JavaScript操作CSS变量的写法如下。

  //设置变量

  document.body.style.setProperty('--primary','#7F583F');

  //读取变量

  document.body.style.getPropertyValue('--primary').trim();

  //'#7F583F'

  //删除变量

  document.body.style.removeProperty('--primary');

  这意味着,JavaScript可以将任意值存入样式表。下面是一个监听事件的例子,事件信息被存入CSS变量。

  constdocStyle=document.documentElement.style;

  document.addEventListener('mousemove',(e)=>{

  docStyle.setProperty('--mouse-x',e.clientX);

  docStyle.setProperty('--mouse-y',e.clientY);

  });

  那些对CSS无用的信息,也可以放入CSS变量。

  --foo:if(x>5)this.width=10;

  上面代码中,--foo的值在CSS里面是无效语句,但是可以被JavaScript读取。这意味着,可以把样式设置写在CSS变量中,让JavaScript读取。

  所以,CSS变量提供了JavaScript与CSS通信的一种途径。

以上是"CSS中变量怎么用"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

变量 选择 代码 属性 量值 不同 函数 作用 例子 单位 参数 字符 字符串 数值 时候 篇文章 范围 规则 连词 最高 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 能源互联网与科技创新 关键信息技术网络安全 互联网金融更名金融科技 郑州上位机软件软件开发 软件开发办公室场景 大闹天宫修改数据库 用友结账标志的两个数据库表 mvc的数据库删除操作日志 计算机网络技术就业地区 南昌app软件开发需要多少钱 服务器维护与管理的区别 足彩软件开发成都公司 黄浦区智能软件开发厂家批发价 在服务器上生成文件 北京融汇兴业网络技术 广州服务器小型机柜 数据库怎么获取主机的数据 数据库的逻辑原理 设计关系型数据库怎么查询 陌陌科技在互联网中排名 数据库系统三级模式的优点 杭州知协网络技术有限公司app 如何建立城市地下综合管网数据库 安徽通用软件开发平均价格 网络安全黑板报设计感穿搭 网络安全有什么新名词 顶级网络安全工程师怎么学的 王者换服务器怎么换 无线路由器设置成打印服务器 tcp中转服务器
0