说明

  1. css变量只能以[–]开头。
  2. 距离当前dom元素层级最近的父元素作用域css变量的值更容易生效。
  3. css变量在css文件中只能以var()函数来使用。

代码

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>css变量设置颜色</title>
</head>
<style>
:root {/* //设置css变量作用域; */
--theRoot: rgb(255, 255, 0);
--fangBorder: rgb(255, 0, 0);
}
.myDiv {
--theDiv: rgb(0, 255, 0);
--fangBorder: rgb(0, 0, 255);
}
body {
background: var(--theRoot);
border: solid 5px var(--fangBorder);/* //css变量只能以var()函数来使用; */
} .myDiv {
width: 100px;
height: 100px;
background: var(--theDiv);
border: solid 5px var(--fangBorder);
}
</style>
<body>
<div class="myDiv"></div>
</body>
<script>
/* //不建议使用,和预期不符;虽然操作逻辑更统一;//仿阮一峰的改;
setTimeout(() => {
//let rootElement = document.documentElement;
let rootElement = document.querySelector(":root");
let rootStyles = rootElement.style;
let rootStyleValue = rootStyles.getPropertyValue("--fangBorder");//只能读取通过js设置后的css变量;
console.log("代码设置前: rootStyleValue--->", rootStyleValue);
rootStyles.setProperty("--fangBorder", "rgb(255, 255, 255)");
rootStyleValue = rootStyles.getPropertyValue("--fangBorder");
console.log("代码设置后: rootStyleValue--->", rootStyleValue); let thisElement = document.querySelectorAll(".myDiv")[0];
let thisStyles = thisElement.style;
let thisStyleValue = thisStyles.getPropertyValue("--fangBorder"); // 读取变量;
console.log("代码设置前: thisStyleValue--->", thisStyleValue);
thisStyles.setProperty("--fangBorder", "#7F583F"); // 设置变量;
thisStyleValue = thisStyles.getPropertyValue("--fangBorder");
console.log("代码设置后: thisStyleValue--->", thisStyleValue); //thisStyles.removeProperty("--fangBorder"); // 删除变量;删除后,表现上会变成浏览器的默认值;//但此时使用getComputedStyle()来计算,依旧是自己在css里写的值;与预期不符,不建议使用这个方法来移除css文件里书写的css变量;
}, 6000); */ //建议实际场景里使用,与预期大致一样;
setTimeout(() => {
let rootElement = document.querySelector(":root");
let rootStyles = getComputedStyle(rootElement);
let rootStyleValue = rootStyles.getPropertyValue("--fangBorder");
console.log("代码设置前: rootStyleValue--->", rootStyleValue);
rootElement.style.setProperty("--fangBorder", "rgb(0, 0, 0)");
rootStyleValue = rootStyles.getPropertyValue("--fangBorder");
console.log("代码设置后: rootStyleValue--->", rootStyleValue); let thisElement = document.querySelectorAll(".myDiv")[0];
let thisStyles = getComputedStyle(thisElement); // 计算并获取元素的样式表;计算出来的样式表只能只读;
let thisStyleValue = thisStyles.getPropertyValue("--fangBorder"); // 计算并获取CSS变量;
console.log("代码设置前: thisStyleValue--->", thisStyleValue);
thisElement.style.setProperty("--fangBorder", "rgb(255, 255, 255)"); //设置CSS变量;
thisStyleValue = thisStyles.getPropertyValue("--fangBorder");
console.log("代码设置后: thisStyleValue--->", thisStyleValue);
}, 3000);
</script>
</html>

来源:

  1. CSS 变量教程;
  2. CSS变量(自定义属性)实践指南;

2021-06-28 CSS变量设置颜色的更多相关文章

  1. CSS变量(自定义属性)实践指南

    本文翻译自:https://www.sitepoint.com/practical-guide-css-variables-custom-properties/ 转载请注明出处:葡萄城官网,葡萄城为开 ...

  2. 超链接字体颜色设置(通过html/css的设置方法)

    超链接字体颜色设置是通过css来设置,a链接的颜色设置常用的有以下两种,1.超链接a的初始状态颜色,2.超链接字体的鼠标滑过颜色,还有两种病不常用:3.超链接字体的已访问颜色,4.超链接字体在按下鼠标 ...

  3. CSS样式设置语法全解,样式优先级、值和单位、字体、文本、块级元素,行内元素,替换元素、非替换元素、display、float、position、table、li、光标、边距边框、轮廓、颜色背景

    全栈工程师开发手册 (作者:栾鹏) 一个demo学会css css选择器全解 css操作语法全解 CSS样式设置语法全解: 样式优先级 1. !important标记的样式 > 内联样式(sty ...

  4. css颜色属性及设置颜色的地方

    css颜色属性 在css中用color属性规定文本的颜色. 默认值是not specified 有继承性,在javascript中语法是object.style.color="#FF0000 ...

  5. 我给女朋友讲编程CSS系列(3) CSS如何设置字体的类型、大小、颜色,如何使用火狐浏览器的Firebug插件查看网页的字体

    一.CSS如何设置字体的类型.大小.颜色 设计网页时,一般设置body的字体,让其他标签继承body的字体,这样设置特别方便,但是标题标签h1到h6和表单标签(input类型)是没有继承body的字体 ...

  6. CSS 文本字体颜色设置方法(CSS color)

    CSS 文本字体颜色设置方法(CSS color) 一.认识CSS 颜色(CSS color) 这里要介绍的是网页设置颜色包含有哪些:网页颜色规定规范. 1.常用颜色地方包含:字体颜色.超链接颜色.网 ...

  7. 原生CSS设置网站主题色—CSS变量赋值

    定义CSS变量 在css文件顶部定义css变量,注意必须以--开头,使用:root包括这几个变量 :root { --main-bg-color: #ff7675; --color1: #fbfee9 ...

  8. 引人瞩目的 CSS 变量(CSS Variable)

    这是一个令人激动的革新. CSS 变量,顾名思义,也就是由网页的作者或用户定义的实体,用来指定文档中的特定变量. 更准确的说法,应该称之为 CSS 自定义属性 ,不过下文为了好理解都称之为 CSS 变 ...

  9. 第一个CSS变量:currentColor

    一.基本介绍 CSS变量正慢慢地从最初的草案到浏览器实现.但规范中有个已经存在多年的变量:currentColor.这个CSS特性具有良好的浏览器支持和一些实际的应用,本篇文章,我们来学习和了解它. ...

  10. CSS变量variable

    前面的话 一直以来,CSS中是没有变量而言的,要使用 CSS 变量,只能借助 SASS 或者 LESS 这类预编译器.新的草案发布之后,直接在 CSS 中定义和使用变量不再是幻想了.本文将详细介绍CS ...

随机推荐

  1. [转帖]怎么查看Linux服务器硬件信息,这些命令告诉你

    https://zhuanlan.zhihu.com/p/144368206 Linux服务器配置文档找不到,你还在为查询Linux服务器硬件信息发愁吗?学会这些命令,让你轻松查看Linux服务器的C ...

  2. [转帖] Linux命令拾遗-查看系统信息

    https://www.cnblogs.com/codelogs/p/16060714.html 简介# 作为一名程序员,有时需要关注自己的进程运行在什么样的软硬件环境里,比如几核cpu.固态硬盘还是 ...

  3. [转帖]python中input()、print()用法

    https://www.cnblogs.com/lei3082195861/p/16967109.html 1.input()函数常涉及的强制类型转换 第一种是在键入时进行转换,例如:a = int( ...

  4. git有关commit的命令

    2.更改最近一次(本次) commit 的提交信息: 当我们执行 git add . git commit -m "0-0-1" 之后我们发现自己写的提交信息是不符合项目要求的,这 ...

  5. Ant Design Vue数字输入框InputNumber 有值但是验证却不能够通过

    InputNumber 有值但是验证却不能够通过 今天遇见这样一个问题,InputNumber 输入框中有值 但是却却提示验证不能够通过 后来经过分析,怀疑是数据类型不正确, 后面经过验证,果然是数据 ...

  6. 手写promise实现自定义封装多个回调函数的执行

    自定义封装多个回调函数的执行 <script src="./Promise.js"></script> let p = new Promise((resol ...

  7. 改变promise状态有三种resolve、reject、throw

    let p = new Promise((resolve, reject) => { // 改变Promise的状态由三种 // resolve('第一种成功1'); // reject('第一 ...

  8. Gorm 关联关系介绍与基本使用

    目录 一 Belongs To(一对一) 1.1 Belongs To 1.2 重写外键 1.3 重写引用(一般不用) 1.4 Belongs to 的 CRUD 1.5 预加载 1.6 外键约束 二 ...

  9. 把Unity的日志保存到文件中

    Unity的日志事件 Unity提供了两个日志回调API,这两个回调函数的参数都是一样的,通过这个API可以在真机上把Debug.Log/LogWarning/LogError 日志输出到文件中保存, ...

  10. 从零开始配置vim(27)——代码片段

    我们之前介绍过缩写相关的内容,缩写是可以自动帮我们将缩写的单词展开成一段完整的话.但是代码本身是结构话的,仅仅使用缩写来配置是无法完成自动生成代码这个步骤的.好在我们大量的插件来进行配置.本篇我们将要 ...