CSS变量 var()的用法

写在前面

这里介绍一下开发中常用的css变量var(),它可以实现样式的动态设置,使用方法主要分为全局使用和局部使用两种。

如何定义CSS变量var() 在CSS文件中,变量需要使用 -- 作为前缀来定义,后面跟上变量名和值,如:

css 复制代码
:root {
  --primary-color: #007bff;
}

上述代码实现了在根元素定义了一个名为--primary-color的样式变量。

如何使用

css 复制代码
a {
  color: var(--primary-color);
}

一、全局使用

当我们设计网站时,经常需要使用相同的颜色、大小、距离等等,这些我们称为"全局变量"。在很多情况下,如果某个全局变量需要修改,我们需要逐一查找和修改每个使用这个变量的地方,这是非常繁琐的,甚至还容易出错。CSS变量 var() 的全局使用方法很好地解决了这个问题。

项目中,我们往往这样全局var变量:定义一个全局样式文件,在全局样式文件中在根节点配置需要使用的全局样式,然后将全局样式文件导入App.vue或者入口文件main.js中,或者直接在App.vue的样式中配置全局样式。

如下: global.css定义全局样式变量

css 复制代码
:root {
    --primary-color: red;
}

App.vue中引入全局样式文件global.css

javascript 复制代码
<template>
    <div id="app">
        ...
        <m-bubble/>
        ...
    </div>
</template>

<script>
import m-bubble from '@/components/Bubble.vue';
export default {
	compontent: { m-bubble },
    data() {
        return {
        }
    },
}
</script>

<style>
/* 引入全局样式 */
@import './assets/css/global.css';  
</style>

Bubble.vue中使用全局样式:

javascript 复制代码
<template>
    <div class="container">
    </div>
</template>

<style lang="scss" scoped>
.container {
	margin: 100px;
    width: 1000px;
    height: 400px;
    background-color: var(--primary-color);  // 使用样式变量
}
</style>

运行代码可以看到:var(--primary-color)成功生效

二、局部使用

局部使用需要在需要使用的标签内通过style来定义,如下示例:

我们在上一节的基础上更改Bubble.vue的代码

javascript 复制代码
<template>
    <!-- <div class="container" style="--bgc-color: green"> -->
    <!-- 局部定义 -->
    <div class="container" :style="{'--bgc-color': 'green', '--bgc-border': '10px solid red'}">
    </div>
</template>

<style lang="scss" scoped>
.container {
    margin: 100px;
    width: 1000px;
    height: 400px;
    background-color: var(--bgc-color);  // 使用变量
    border: var(--bgc-border);  // 使用变量
}
</style>

运行结果如下:可以看到局部样式变量--bgc-border'和--bgc-color都生效了。

相关推荐
传人once37 分钟前
多图片上传预览功能如何写
前端·css·html·jquery·html5
Eric.461 小时前
Wan‑Animate+MiniMax-H3 本地部署 AI 漫剧流水线:8G 显存动作迁移与动态分镜工程实战
前端·人工智能·comfyui·ai漫剧
库拉镜像AI牛牛3 小时前
短剧内容自动化生产:知漫剧工作室落地教程
大数据·服务器·前端·人工智能·语音识别
律宏阔3 小时前
Flutter 列表图片内存优化:CachedNetworkImage 与 ClipRRect 的取舍
前端·flutter
行者全栈架构师3 小时前
【鸿蒙心迹】相册文搜图工程化落地:HarmonyOS 7.0 端侧 AI 检索全链路实战与 5 个踩坑解法
前端
律宏阔3 小时前
Dart 3 Record:解决 Future.wait 异构返回值的类型问题
前端·flutter
Seraphina363 小时前
DVWA(XSS Reflected/Stored High,CSRF Low)
前端·xss·csrf
默_笙4 小时前
🍔 中间件不只是打日志:四个钩子、一次短路,和自带的工具
前端·javascript
程序员老赵4 小时前
Docker 部署 Dolibarr:轻松搭建开源 ERP/CRM 平台
运维·前端·后端
星禾元亨5 小时前
同一件事有三份资料,AI 该信哪一份?冲突判定、优先级链与处置流程
前端·人工智能