css中也可以使用变量了?

简介: css中也可以使用变量了?

前言

大家都听说过变量,我们学习的任何语言都有变量的存在。
css中是否也存在变量呢?
也许很多小伙伴也是通过less,scss中来使用css变量
其实在css中也是有变量的,今天我们也来学习一下。

为什么要使用变量

变量有一个很大的作用就是降低维护成本。
不仅如此,还可以提高我们的开发效率。
实现改一个,而改全部。是不是爽歪歪。
使用变量的优势:
假如我们确定了项目的主题色,
然后在各个 CSS 代码中使用该了主题色,
如果后期主题色变了,那岂不是所有 CSS 代码都得更改一遍。
这样的话累死我们呀!
假如我们用变量将该主题色存储起来,
后续 CSS 代码中直接使用变量即可,
需要更改主题色时,直接更改变量值即可。

自定义属性[css变量]的简单介绍

自定义属性(有时候也被称作 CSS 变量或者级联变量)是由 CSS 作者定义的。
它包含的值可以在整个文档中重复使用。
css的自定义属性[css变量]是有要求的,需要以--开头。
声明变量: --main-color: black; // css变量的自定义属性是有要求的需要以--开头。
由 var() 函数来获取值比如:color: var(--main-color);

变量的使用

<head>
  <style>
    :root {
      --bgColor: rgb(9, 246, 246);
    }
    div {
      /* 上下面的代码等价于 background-color:rgb(9, 246, 246) */
      background-color: var(--bgColor);
      width: 100px;
      height: 100px;
    }
  </style>
</head>
<body>
    <div></div>
</body>

对上面代码的分析 :root

上段代码中我们定义了一个 bgColor 变量,
需要注意的是我们需要在自定义属性前面加上--才算是变量,
这算是 CSS 变量的声明规则。
自定义属性值 rgb(9, 246, 246) 就是我们的变量值。
上面的:root 是一个伪类,它相当于一个全局作用域。
我们都知道变量是有作用域的概念的。
声明在:root 伪类中的变量可以在全局 CSS 代码中使用。
简单点说:如果要声明全局所有元素都能使用的话,可以设置到根伪类:root下:
:root {
    --bgColor: rgb(9, 246, 246);
}

变量命名规则

不能包含 $,[,^,(,%等字符
普通字符局限在只要是 “数字[0-9]” “字母[a-zA-Z]” “下划线_” 和 “短横线-” 这些组合
可以是中文,日文或者韩文
变量值只能用作属性值,不能用作属性名,比如下方代码我们是不允许的:
特别需要注意的是【变量名】必须以 “--”开头哈
.foo {
  --side: margin-top;
  /* 无效 */
  var(--side): 20px;
}

5.换肤原理

<head>
    <style>
         :root {
            --theme: yellow;
        }
        .box {
            width: 100px;
            height: 100px;
            background-color: var(--theme);
        }
    </style>
</head>
<body>
    <div class="box" id="contShow"></div>
    <button id="btn1">切换黑色主题</button>
    <button id="btn2">切换黄色主题</button>
</body>
<script>
    let box = document.getElementById('contShow')
    let btn1 = document.getElementById('btn1');
    let btn2 = document.getElementById('btn2');
    btn1.addEventListener('click', () => {
        box.style.setProperty('--theme', '#000');
    })
    btn2.addEventListener('click', () => {
        box.style.setProperty('--theme', 'yellow');
    })
</script>

发现问题

我们都知道,在实际的过程中不可能只会有这么一个颜色。
https://varlet.gitee.io/varlet-ui/#/zh-CN/row
可以参考一下这个换肤效果。如果有时间这周写一个简单的切换皮肤的demo效果

遇见问题,这是你成长的机会,如果你能够解决,这就是收获。

相关文章
|
前端开发 开发者
CSS变量,也被称为CSS自定义属性或级联变量
【4月更文挑战第7天】CSS变量,也被称为CSS自定义属性或级联变量
122 3
|
11月前
|
存储 移动开发 前端开发
高效的 HTML 与 CSS 编写技巧,涵盖语义化标签、文档结构优化、CSS 预处理、模块化设计、选择器优化、CSS 变量、媒体查询等内容
本文深入探讨了高效的 HTML 与 CSS 编写技巧,涵盖语义化标签、文档结构优化、CSS 预处理、模块化设计、选择器优化、CSS 变量、媒体查询等内容,旨在提升开发效率、网站性能和用户体验。
287 5
|
11月前
|
前端开发 JavaScript
如何在 JavaScript 中访问和修改 CSS 变量?
【10月更文挑战第28天】通过以上方法,可以在JavaScript中灵活地访问和修改CSS变量,从而实现根据用户交互、页面状态等动态地改变页面样式,为网页添加更多的交互性和动态效果。在实际应用中,可以根据具体的需求和场景选择合适的方法来操作CSS变量。
367 12
|
11月前
|
前端开发 JavaScript
如何在 CSS 变量中使用函数?
【10月更文挑战第28天】虽然CSS变量本身不能像传统编程语言中的函数那样直接进行复杂的运算和逻辑处理,但通过CSS预处理器、`calc()` 函数以及与JavaScript的结合,可以在很大程度上实现类似函数的功能,提高CSS样式的灵活性和可维护性,满足各种不同的页面设计和交互需求。
151 12
|
11月前
|
前端开发 JavaScript 数据处理
CSS 变量的作用域和 JavaScript 变量的作用域有什么不同?
【10月更文挑战第28天】CSS变量和JavaScript变量虽然都有各自的作用域概念,但由于它们所属的语言和应用场景不同,其作用域的定义、范围、覆盖规则以及与其他语言特性的交互方式等方面都存在明显的差异。理解这些差异有助于更好地在Web开发中分别运用它们来实现预期的页面效果和功能逻辑。
187 11
|
11月前
|
前端开发 开发者 容器
CSS 变量的作用域是什么?
【10月更文挑战第28天】理解CSS变量的作用域规则对于有效地使用CSS变量来组织和管理页面样式非常重要。通过合理地利用全局作用域和局部作用域,以及掌握变量的覆盖和继承规则,可以创建更具可维护性、灵活性和可扩展性的CSS样式表,实现各种复杂的页面设计和样式需求。
|
11月前
|
前端开发 JavaScript UED
|
11月前
|
前端开发 JavaScript UED
如何使用 JavaScript 动态修改 CSS 变量的值?
【10月更文挑战第28天】使用JavaScript动态修改CSS变量的值可以为页面带来更丰富的交互效果和动态样式变化,根据不同的应用场景和需求,可以选择合适的方法来实现CSS变量的动态修改,从而提高页面的灵活性和用户体验。
|
前端开发
Vue3基础(十ba)___在css中使用props或者计算属性的变量,来实现动态样式
本文介绍了如何在Vue3中通过CSS变量和props或计算属性来实现动态样式。
291 0
|
前端开发 JavaScript 开发者
CSS进阶-CSS变量
【6月更文挑战第13天】本文介绍了CSS变量(Custom Properties)的基本概念、应用场景和常见问题。通过声明与使用示例,展示了如何定义和引用变量。文章讨论了兼容性、作用域、错误引用及JavaScript交互等易错点,并提供了相应的解决方案。此外,还分享了实践技巧,如模块化色彩系统、响应式设计和动画制作。通过学习,开发者能更好地利用CSS变量提高样式灵活性和维护性。
271 3

热门文章

最新文章