如何使用Css变量

星期三, 1月 10, 2024 | 1分钟阅读 | 更新于 星期三, 1月 10, 2024

@
如何使用Css变量

CSS 变量(也称为自定义属性)允许您在 CSS 中定义并重复使用值。

下面是如何使用 CSS 变量的基本方法:

定义 CSS 变量

您可以使用 -- 前缀来定义 CSS 变量,并为其赋值。

:root {
  --main-color: #ff0000;
  --secondary-color: #00ff00;
}

上述代码在根节点上声明了两个CSS变量,主要和次要颜色。

选择器来声明变量的使用范围。变量名可以是任何有效的 CSS 标识符。变量值可以任意有效的CSS属性值。

使用 CSS 变量

在您的 CSS 规则中使用 CSS 变量时,使用 var() 函数,将变量名称作为参数传递给它。

.element {
  color: var(--main-color);
  background-color: var(--secondary-color);
}

注意:.article元素必须为定义变量选择器的后代元素

动态更改 CSS 变量

您可以使用 JavaScript 动态更改 CSS 变量的值。通过 JavaScript,您可以在运行时更改 CSS 变量的值,从而实现动态主题样式切换等效果。

// 修改一个 Dom 节点上的 CSS 变量
element.style.setProperty("--my-var", 'blue');

// 获取一个 Dom 节点上的 CSS 变量
element.style.getPropertyValue("--my-var");

// 获取任意 Dom 节点上的 CSS 变量
getComputedStyle(element).getPropertyValue("--my-var");

变量的继承与覆盖

CSS 变量具有继承性,即它们可以在 CSS 层级结构中继承和覆盖。变量在定义时可以被重新定义。

.element {
  --main-color: #0000ff; /* 重新定义 --main-color */
}

这是一个简单的例子,展示了如何定义、使用和动态更改 CSS 变量。使用 CSS 变量可以使您的 CSS 更加灵活和可维护,同时提供更好的样式重用性。

CSS变量的备用值

所谓的备用值,就是设置了回退方案

虽然开发者很小心,仍然存在各种变数导致变量值没有被顺利应用,这样样式的设置是无效的,结果就是元素会使用默认的(或继承的)样式,会产生预料之外的结果。

于是,设置合适的备用值就很重要:

.article {
  color: var(--my-var, red); /* Red if --my-var is not defined */
}

--my-var不生效时会使用red这个值。

© 2016 - 2025 Jebben 开发日志&网络随笔

🌱 Powered by Hugo with theme Dream.

关于博主

自我介绍

大家好,我是 Jabin,一名拥有 8 年工作经验的前端工程师。我是一个自学成才的开发者,通过不断学习和实践,积累了丰富的 web 端开发经验以及在 B 端后台管理、监控和 C 端教育、媒体类项目方面的丰富经验。

关于我的技能

我精通多种前端技术,包括但不限于:

  • JavaScript 和 TypeScript:我熟练掌握 JavaScript 和 TypeScript,能够利用它们构建出色的前端应用程序。
  • CSS:我对 CSS 有深入的理解,能够编写出美观、响应式的样式。
  • 前端框架:我熟练使用 Angular、React、Vue 和 Next.js 等前端框架,能够根据项目需求灵活选择并应用合适的技术栈。
  • 前端工具:我熟悉 webpack、Vite 等常用的前端打包工具,以及框架配套的 CLI 工具,能够高效地进行项目开发和部署。
  • 后端技术:我了解服务端语言 Java 和 Node.js,并能够与后端开发人员紧密合作,实现完整的应用程序。
  • 数据库和操作系统:我熟悉 SQL 数据库和 Linux 操作系统的常见操作和命令,能够进行数据库管理和服务器配置。

我的项目经验

我曾主导多个从零到一的项目,参与过数百万 UV 项目的开发,具有丰富的项目开发与团队合作经验。

我对技术充满热情,喜欢钻研新技术和解决复杂的技术问题。我还积极参与开源社区,贡献自己的力量,与各地的开发者共同探索和分享技术前沿。

结语

我是一个对技术认真负责、可靠可靠的人,热爱挑战和创新。我希望通过我的个人网站,与更多志同道合的人分享我的经验和见解,共同推动前端技术的发展和进步。

欢迎来到我的个人网站,期待与您的交流和合作!