CSS 变量是自定义属性,允许您在整个 CSS 程序中存储和重用值。 CSS 变量与其他编程语言中的变量类似。

它们使用 -- 前缀进行设置,并使用 var() 函数进行访问。

要声明 CSS 变量,请使用以下语法:

--variable-name: value; 

要使用 CSS 变量 var() 函数,使用以下语法:

var(--variable-name, fallback-value); 

自定义属性受 CSS 级联影响,并从其父元素继承其值。

CSS 变量不能在媒体查询或容器查询中使用,但您可以使用 var() 函数替换元素上 CSS 属性中的值。您不能使用它们来设置 CSS 属性或选择器的名称,或定义媒体查询或容器查询。

CSS 变量 - 标准方法

以下示例演示了 CSS对不同类的元素应用相同的颜色 -

<html>
<head>
<style>
   .box {
      width: 400px;
      height: 200px;
      text-align: center;
      line-height: 35px;
      margin: 10px;
      background-color: pink;
      color: blue;
   }
   .box1 {
      display: inline-block;
      background-color: yellow;
      width: 100px;
      height: 50px;
      color: blue;
   }
   .box2 {
      display: inline-block;
      background-color: yellow;
      width: 100px;
      height: 50px;
      color: blue;
   }
</style>
</head>
<body>
   <div class="box">
      <h2>yxjc123.com</h2>
      <p>How to code a website using HTML and CSS</p>
      <div class="box1">HTML</div>
      <div class="box2">CSS</div>
   </div>
</body>
</html> 

CSS 变量 - :root 伪类

CSS 变量使用 :root 选择器,匹配文档的根元素。这意味着使用 :root 选择器声明的 CSS 变量可以由文档中的任何元素使用。

CSS 变量名称区分大小写,这意味着 --pink-color 和 --Pink-color 是两个不同的变量。

第 1 步:定义自定义属性

要使用 :root 伪类声明变量,只需在变量名称中添加 -- 前缀,然后设置其值.

:root {
   --pink-color: pink;
   --blue-color: blue;
} 

第 2 步:在 CSS 中使用自定义属性

然后可以使用 var() 函数。

.box {
   width: 400px;
   height: 200px;
   background-color: var(--pink-color);
   color: var(--blue-color);
}
.box1, .box2 {
   display: inline-block;
   background-color: var(--pink-color);
   width: 100px;
   height: 50px;
   color: var(--blue-color);
} 

以下示例演示了 CSS 变量 --pink-color 和 --blue-color 在 :root 元素,这意味着它们是全局自定义属性,可以在 CSS 代码中的任何位置使用 -

<html>
<head>
<style>
   :root {
      --pink-color: pink;
      --blue-color: blue;
   }
   .box {
      width: 400px;
      height: 200px;
      text-align: center;
      line-height: 35px;
      margin: 10px;
      background-color: var(--pink-color);
      color: var(--blue-color);
   }
   .box1, .box2 {
      display: inline-block;
      border: 3px solid yellow;
      background-color: var(--pink-color);
      width: 100px;
      height: 50px;
      color: var(--blue-color);
   }
</style>
</head>
<body>
   <div class="box">
      <h2>yxjc123.com</h2>
      <p>How to code a website using HTML and CSS</p>
      <div class="box1">HTML</div>
      <div class="box2">CSS</div>
   </div>
</body>
</html> 

CSS 变量 - 自定义属性的继承

您可以使用 CSS 变量来定义可由子元素继承的可重用 CSS 值。

第 1 步:在 <中声明自定义属性。 a href="/post/fiaz6c" target="_blank">:root 选择器。

这使得该变量成为全局变量并且可供文档中的所有元素访问。

:root {
   --pink-color: pink;
} 

第 2 步:使用 var() 函数访问 CSS 中的自定义属性。

这允许您在整个 CSS 代码中重用自定义属性。

.box {
   --box-background: var(--pink-color);
   background-color: var(--box-background);
} 

第 3 步:使用 -- 前缀覆盖特定元素的自定义属性值。

这允许您为特定元素自定义自定义属性的值。

.box1, .box2 {
   background-color: var(--box-background);
} 

以下示例演示如何使用带有继承的 CSS 自定义属性 -

<html>
<head>
<style>
   :root {
      --pink-color: pink;
   }
   .box {
      --box-background: var(--pink-color);
      
      color: black;
      width: 400px;
      height: 200px;
      text-align: center;
      line-height: 35px;
      margin: 10px;
      background-color: var(--box-background);
   }
   .box1, .box2 {
      color: blue;       
      display: inline-block;
      border: 3px solid yellow;
      background-color: var(--box-background);
      width: 100px;
      height: 50px;
   }
</style>
</head>
<body>
   <div class="box">
      <h2>yxjc123.com</h2>
      <p>How to code a website using HTML and CSS</p>
      <div class="box1">HTML</div>
      <div class="box2">CSS</div>
   </div>
</body>
</html> 

CSS 变量 - 自定义属性回退值

您可以将 CSS 变量与回退值一起使用,以确保即使未定义变量,您的 CSS 代码仍然有效且可以工作。

CSS 回退值不用于使 CSS 自定义属性在旧版浏览器中工作。它们仅在支持 CSS 自定义属性的浏览器中用作备份,以防变量未定义或具有无效值。
CSS 变量回退值可以使用逗号指定。例如,var(--pink-color, blue,pink)函数定义了后备值blue,pink。后备值是出现在第一个逗号和函数末尾之间的文本。

在下面的示例中,如果未定义 --pink-color 或 --blue-color 自定义属性,则将分别使用红色和绿色的后备值。

这是一个示例 -

<html>
<head>
<style>
   :root {
      --pink-color: pink;
      --blue-color: blue;
   }
   .box {
      width: 400px;
      height: 200px;
      text-align: center;
      line-height: 35px;
      margin: 10px;
      background-color: var(--pink-color, red); 
      color: var(--blue-color, green ); 
   }
   .box1, .box2 {
      display: inline-block;
      border: 3px solid yellow;
      background-color: var(--pink-color, red); 
      width: 100px;
      height: 50px;
      color: var(--grey-color, brown); 
   }
</style>
</head>
<body>
   <div class="box">
      <h2>yxjc123.com</h2>
      <p>How to code a website using HTML and CSS</p>
      <div class="box1">HTML</div>
      <div class="box2">CSS</div>
   </div>
</body>
</html> 

CSS 变量 - 处理无效的自定义属性

在下面的示例中, --red-color 自定义属性的定义值为 15px。这是一个无效值,因为红色属性只接受颜色值。

但是,浏览器将无法解析自定义属性的值,因为它无效。因此,它将忽略 CSS 规则,第二个 h2 元素中的文本将保持相同的颜色。

这里是一个示例 -

<html>
<head>
<style>
   :root {
      --red-color: 15px;
   }
   h2 {
      color: red;
   }
   h2 {
      color: var(--red-color);
   }
</style>
</head>
<body>
   <h2>yxjc123.com CSS Variables.</h2>
</body>
</html> 

CSS 变量 - 中的值Javascript

以下示例演示如何使用 JavaScript 设置 CSS 自定义属性 -

<html>
<head>
<style>
   .box {
      width: 400px;
      height: 200px;
      text-align: center;
      line-height: 35px;
      margin: 10px;
      background-color: var(--pink-color);
      color: var(--blue-color);
   }
   .box1, .box2 {
      display: inline-block;
      border: 3px solid yellow;
      width: 100px;
      height: 50px;
      color: var(--blue-color);
   }
</style>
</head>
<body>
   <div class="box">
      <h2>yxjc123.com</h2>
      <p>How to code a website using HTML and CSS</p>
      <div class="box1">HTML</div>
      <div class="box2">CSS</div>
   </div>

   <script>
      const boxElement = document.querySelector('.box');

      const jsPinkColor = 'pink'; 
      const jsBlueColor = 'blue'; 

      boxElement.style.setProperty('--pink-color', jsPinkColor);
      boxElement.style.setProperty('--blue-color', jsBlueColor);
   </script>
</body>
</html>