CSS自定义变量

举报
福州司马懿 发表于 2023/04/26 17:17:01 2023/04/26
【摘要】 css是可以支持变量的,且所有主流浏览器都支持。css变量又称 “css自定义属性”,css的变量声明是以--前缀,而前缀是$或@被预处理器 sass 或 less 占用,所以,css以--开头可以避免与预处理器产生冲突css的变量是区分大小写的,--primary-size和--Primary-Size是完全不同的属性名可以包含数字、字母、以及下划线或者短横线,也可以是中文、日文、或者韩文...

css是可以支持变量的,且所有主流浏览器都支持。css变量又称 “css自定义属性”,css的变量声明是以--前缀,而前缀是$@被预处理器 sass 或 less 占用,所以,css以--开头可以避免与预处理器产生冲突

  1. css的变量是区分大小写的,--primary-size--Primary-Size是完全不同的

  2. 属性名可以包含数字、字母、以及下划线或者短横线,也可以是中文、日文、或者韩文,但不能是属性名或数字开头,不能包含$, [, ^, (, %等字符

  3. 变量--primary只能用属性值,不能用属性名

.foo {
	--primary: margin-top; /* 无效 */
	var(--primary): 2px;
}
  1. 数字和单位直接写在一起,需要使用calc函数
--gap: 20;
  margin-top: calc(var(--gap) * 1px);

 /**错误的方式**/
--font-size:10px *3;
--sum:'10px';
 padding-top:var(--sum) /*不能是字符串,否则失效*/

/**正确的方式**/
--font-size:calc(10px *3);
--sum:10px;
 padding-top:var(--sum)

注意:calc函数支持四则运算(+, -, *, /),运算符前后都需要保留一个空格,例如:width: calc(100% - 10px);任何长度值都可以使用calc函数进行计算;calc函数使用标准的数学运算优先级规则

  1. 变量的值是字符串时,可以直接拼接
:root{
  --screen-category: 'category'  //变量值是字符串
}
body:after {
  content: '--screen-category: 'var(--screen-category);  // 直接拼接
}
  1. var函数的第二个参数是设置默认值,若该参数不存在,则使用此默认值
color: var(--foo, #7F583F);
  1. css变量可以在任意选择器中使用包括在标签元素style@media
/**style*/
.wrapper .card {
	animation: animate 15s linear infinite;
	animation-delay: calc(3s * var(--delay));
}

<div class="card" style="--delay:1"></div>

/**@media*/

:root{
    --column-size:4;
}

@media screen and (min-width: 1200px) {
    :root{
        --column-size: 3;
    }
}
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。