CSS中变量的的用法介绍(附示例)

本篇文章给大家带来的内容是关于CSS中变量的的用法介绍(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

前两天看到阮大神的一篇在css中使用变量的文章,整理了一下。

这个重要的 CSS 新功能,所有主要浏览器已经都支持了。本文全面介绍如何使用它,你会发现原生 CSS 从此变得异常强大。

CSS中变量的的用法介绍(附示例)

立即学习“前端免费学习笔记(深入)”;

一、变量的声明

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

body {  --foo: #7F583F;  --bar: #F7EFD2;}

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

它们与color、font-size等正式属性没有什么不同,只是没有默认含义。所以 CSS 变量(CSS variable)又叫做”CSS 自定义属性”(CSS custom properties)。因为变量与自定义的 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: 10px 20px;  --base-line-height: 1.428571429;  --transition-duration: .35s;  --external-link: "external link";  --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, 10px 15px 20px);

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)规则是一致的。

下面是一个例子。

  :root { --color: blue; }  p { --color: green; }  #alert { --color: red; }  * { color: var(--color); }

蓝色

绿色

红色

上面代码中,三个选择器都声明了–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);}@media screen and (min-width: 768px) {  body {    --primary:  #F7EFD2;    --secondary: #7F583F;  }}

六、兼容性处理

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

a {  color: #7F583F;  color: var(--primary);}

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

@supports ( (--a: 0)) {  /* supported */}@supports ( not (--a: 0)) {  /* not supported */}

七、JavaScript 操作

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

const isSupported =  window.CSS &&  window.CSS.supports &&  window.CSS.supports('--a', 0);if (isSupported) {  /* supported */} else {  /* not supported */}

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

// 设置变量document.body.style.setProperty('--primary', '#7F583F');// 读取变量document.body.style.getPropertyValue('--primary').trim();// '#7F583F'// 删除变量document.body.style.removeProperty('--primary');

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

const docStyle = 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中变量的的用法介绍(附示例)的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1613559.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月24日 03:44:36
下一篇 2025年12月24日 03:44:44

相关推荐

  • CSS垂直对齐不起作用的原因及解决方法

    verticla-align用于调整内联元素的垂直位置,但是有时候它不起作用,本篇文章将来给大家分享关于css垂直对齐不起作用的原因和解决方法。 我们先来分析一下导致垂直对齐无效的原因 我想很多人都会遇到这样一个问题,在使用vertical-align作为属性来对齐垂直位置,由于某种原因它根本不起作…

    2025年12月24日 好文分享
    000
  • 利用CSS如何实现文字的竖排

    本篇文章给大家带来的内容是关于利用css如何实现文字的竖排,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 样式表的文字处理属性中有两个重要的属性:writing-mode和text-align。让我们先看看它们的用法: 1. writing-mode(设置对象书写方向) 语法:wr…

    2025年12月24日
    000
  • css3和css的区别是什么

    css3和css的区别:1、css3比css多了一些样式,一些浏览器如果不兼容css3的话,就会以css样式的方式显示;2、css3的功能更为强大一些,因为很多浏览器都不支持css2.0了。 本文操作环境:Windows7系统、Dell G3电脑、css3版。 css3和css的区别有哪些?很多人都…

    2025年12月24日
    000
  • css如何让img垂直居中

    css如何让img居中显示?img垂直居中方法?对于刚刚css入门的新手可能还不是很熟悉,下面我们来总结一下css如何让img垂直居中? img垂直居中方法有很多,其中就包括以下三种方法 1.使用flex让img垂直居中 立即学习“前端免费学习笔记(深入)”; 在css中,我们可以使用flex去实现…

    2025年12月24日
    000
  • css如何让div居中?css实现div居中的方法

    如何让div水平居中?div怎么居中?相信很多人都会这样的疑问,本篇文章就讲解一下css如何让div居中?以及如何实现div居中的方法。 当我们浏览网页的时候,会发现一般网站的主体都是在页面的中间,并且居中显示在浏览器中的正中央,只要我们实现div居中条件和浏览器居中条件保存一致。 假如我们把最外层…

    2025年12月24日
    000
  • CSS实现发光的按钮效果(代码示例)

    按钮的效果我们经常会用得到,本篇文章就来给大家分享一个漂亮的按钮效果的实现,我们来使用css实现一个发光的按钮效果。 话不多说,我们直接来看代码 以下代码是接下来所有按钮样式的基本代码: HTML Button CSS 立即学习“前端免费学习笔记(深入)”; .button {width:80px;…

    2025年12月24日 好文分享
    000
  • CSS设置主动控件的样式(焦点伪类的实现)

    本篇文章介绍的内容是关于css设置主动控件的样式,下面我们来看一下具体的内容。 我们先来看一下语法格式: :focus{ (样式描述)} 通过指定元素,类和ID来描述它,如下所示: 设置特定标签时 (标签名):focus{ (样式描述)} 设置特定类时 立即学习“前端免费学习笔记(深入)”; .(c…

    2025年12月24日
    000
  • css用什么打开

    打开css的方法:1、使用文本编辑器打开或者用记事本打开;2、利用Notepad++或者Adobe Dreamweaver软件去打开,这样便于阅读查看和修改。 本文操作环境:Windows7系统、Dell G3电脑、css3版。 css文件怎么打开?css文件用什么打开?CSS要什么软件?相信很多人…

    2025年12月24日
    000
  • CSS导航条菜单的实现(附源码)

    本篇文章给大家带来的内容是关于css导航条菜单的实现(附源码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 很多网页的导航条都会有小三角形,其实实现这个功能也挺简单。 拿菜鸟教程首页导航做个例子 首先写一个大的div_nav,而“首页”“菜鸟笔记”“菜鸟工具”“参考手册”等则作为…

    2025年12月24日
    000
  • 纯css+div隐藏滚动条的实现方法(代码示例)

    本篇文章给大家带来的内容是关于纯css+div隐藏滚动条的实现方法(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 当我们的内容超出了我们的div,往往会出现滚动条,影响美观。 尤其是当我们在做一些导航菜单的时候。滚动条一出现就破坏了UI效果。我们不希望出现滚动条,也不希…

    2025年12月24日
    000
  • CSS中文字相关属性的介绍

    本篇文章给大家带来的内容是关于css中文字相关属性的介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 文本大小 {font-size:12px/14px/16px} 说明:   1)属性值为数值型时,必须给属性值加单位,属性值为0时除外。   2)单位还可以是pt,9pt=12p…

    好文分享 2025年12月24日
    300
  • 纯css实现加号一个的效果(代码示例)

    本篇文章给大家带来的内容是关于纯css实现加号一个的效果(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 实现下图的加号效果: 若想实现这个效果, 只需一个p元素即可搞定。 需要用到css的为了before和after, 以及border特性。 先设置一个div便签 立即…

    2025年12月24日 好文分享
    000
  • CSS中id和class选择器怎么使用

    我经常使用id和class来指定应用样式的范围。但是,很难确定是否正确使用id或class,本篇文章我们就来介绍一下id和class的的用法。 id和class之间的区别 id具有唯一性,class可以有很多个 页面中只能写入一个ID,但是对于class可以写入多个。 立即学习“前端免费学习笔记(深…

    2025年12月24日
    000
  • 如何使用CSS设置框架内文本的垂直位置

    文本垂直在网页布局中是经常需要用到的,所以本篇文章给大家分享关于如何使用CSS指定框架内文本的垂直位置,内容很详细,有需要的朋友可以参考一下。 在上一篇文章中介绍了利用CSS的text-align属性实现了文本的水平对齐,下面我们就来介绍用于指定框架内文本垂直位置的内容。 由于没有直接指定框架内文本…

    2025年12月24日
    000
  • css是一种语言吗

    很多人刚刚接触css的时候,并不了解css属于什么语言?其实不知道css语言也是很正常的,下面我们来讲一下css是一种语言吗?以及css语言怎么用? 一:css是一种语言吗 css是一种层叠样式表,用来表示html样式的一种编程语言,目前css的最新版本是css3,css是可以做到网页和内容进行分离…

    2025年12月24日
    000
  • :empty是什么?怎么使用?

    :empty是什么?本篇文章就给大家介绍:empty的相关知识,让大家对:empty有一定的了解。有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。 首先我们来了解一下:empty是什么?有什么作用? :empty是一个css的伪类选择器,用于选择页面中为空的元素。 如果元素没有任何子…

    2025年12月24日
    000
  • :not()是什么?:not()的简单使用

    本篇文章给大家介绍:not()是什么?:not()的简单使用,让大家了解:not()是如何使用的。有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。 :not()是CSS的一个否定伪类选择器。它是一个函数式伪类选择器,它可以将一个简单选择器(如下所示)作为参数,然后匹配一个或多个不由参…

    好文分享 2025年12月24日
    000
  • 如何隐藏css元素

    如何隐藏css元素?本篇文章就给大家介绍5种隐藏css元素的方法,让大家了解可以怎么隐藏css元素,以及使用这些方法隐藏元素时需要记住的细微差别。有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。 首先我们简单介绍一下隐藏css元素的5种方法,分别为: 1、使用opacity属性来隐藏…

    2025年12月24日 好文分享
    000
  • css文字颜色渐变的三种实现方式(附代码)

    本篇文章给大家带来的内容是关于css文字颜色渐变的三种实现方式(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 在web前端开发过程中,UI设计师经常会设计一些带渐变文字的设计图,在以前我们只能用png的图片来代替文字,今天可以实现使用纯CSS实现渐变文字了。下面就介绍3中…

    好文分享 2025年12月24日
    000
  • CSS是什么

    CSS是Cascading Style Sheets的缩写,中文翻译也就是层叠样式表;CSS(层叠样式表)起着控制HTML语句样式的作用,如可以改变字符的大小、背景的颜色、图像的排列等。 本文操作环境:Windows7系统、Dell G3电脑、css3版。 CSS是什么意思? 使用HTML创建的页面…

    2025年12月24日
    000

发表回复

登录后才能评论
关注微信