说明

  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. [转帖]TiDB Control 使用说明

    https://docs.pingcap.com/zh/tidb/stable/tidb-control TiDB Control 是 TiDB 的命令行工具,用于获取 TiDB 状态信息,多用于调试 ...

  2. [转帖]Jmeter性能测试:高并发分布式性能测试

    一.为什么要进行分布式性能测试 当进行高并发性能测试的时候,受限于Jmeter工具本身和电脑硬件的原因,无法满足我们对大并发性能测试的要求.基于这种场景下,我们就需要采用分布式的方式来实现我们高并发的 ...

  3. [转帖]Kafka 性能优化与问题深究

    Kafka 性能优化与问题深究 一.Kafka深入探究 1.1 kafka整体介绍 1. 1.1 Kafka 如何做到高吞吐.低延迟的呢? Kafka是一个分布式高吞吐量的消息系统,这里提下 Kafk ...

  4. [转帖]数据库篇-MySql架构介绍

    https://zhuanlan.zhihu.com/p/147161770 公众号-坚持原创,码字不易.加微信 : touzinv 关注分享,手有余香~ 本篇咱们也来聊聊mysql物理和逻辑架构,还 ...

  5. Oracle数据库无法启动的简单处理

    1. 最近一台测试机器上面的Oracle数据库启动不起来了. 提示信息是UNDOTBS2的表空间找不到. 2. 然后可以使用 startup mount 简单开起来 但是发现还是无法使用. 3.本来想 ...

  6. 国产飞腾2000+服务器 存储单盘性能简单验证 SSD 与 HDD

    有kylinV10的源 可以直接安装fio yum install fio -y 第一步, 将sdd 进行初始化,并且设置文件系统 fdisk /dev/sdbmkdir /ssd2 mkfs.ext ...

  7. 在k8s中的控制器和部署服务-ReplicationController和ReplicaSet

    pod 代表了 k8s 中的基本部署单元,但是在实际应用场景中,服务不可能是单个pod运行的,否则会出现"单点".在 k8s 中对 pod 的托管部署,专门抽象成了单独的资源.其中 ...

  8. 在Linux Ubuntu系统中部署C++环境与Visual Studio Code软件

      本文介绍在Linux Ubuntu操作系统下,配置Visual Studio Code软件与C++代码开发环境的方法.   在文章VMware虚拟机部署Linux Ubuntu系统的方法中,我们介 ...

  9. [3] 以逆向的角度来看循环语句——do、while、for的比较

    [3] 以逆向的角度来看循环语句--do.while.for的比较 1. do循环 ​ 先执行循环体,后比较判断 #include <stdio.h> int main(int argc, ...

  10. 第二届数字化经济与管理科学国际学术会议(CDEMS 2024)

    [经济&管理|录用率高]第二届数字化经济与管理科学国际学术会议(CDEMS 2024) 2024 2nd International Conference on Digital Economy ...