vue使用CSS 变量

vue使用CSS 变量

首先,我们要先知道什么是CSS变量,可以先看这篇文章
在我们知道什么是CSS变量之后,我们尝试把它在项目中运用起来,一些需要动态计算的值,我们就可以使用它快速的实现效果。

以下为示例一,其中keyframes是不能直接在html中书写的,那么如何不使用js就能根据传入的值达到对应的效果呢?如下:

<template>
  <div
    :style="{ '--deviation': '-' + deviation }"
    class="text"
  >
    {{ text }}
  </div>
</template>

<script>
export default {
	name: 'QTest',
	props: {
		text: {
			type: String,
			default: '请传入内容'
		},
		// 动态传入不同的值,根据不同的值得出最终的样式
		deviation: {
			type: String,
			default: '75%'
		}
	},
}
</script>

<style lang="scss" scoped>
.text {
    width: 100px;
    overflow: hidden;
    transition-delay: 5s;
    animation: itemSlide 5s linear infinite;
}

@keyframes itemSlide {
    0% {
        transform: translateX(0%);
    }

    100% {
    	/*使用变量*/
        transform: translateX(var(--deviation));
    }
}
</style>

以下为示例二,有的时候,一些属性我们可能需要根据一些条件计算得来,那么也能很好的去使用它。如下:

<template>
  <div
    :style="{ '--lineheight': lineheight }"
    class="text"
  >
    <div class="container"></div>
  </div>
</template>

<script>
export default {
	name: 'QTest',
	props: {
		lineheight: {
			type: String,
			default: '200px'
		}
	},
}
</script>

<style lang="scss" scoped>
.text {
    width: 100px;
    height: 400px;
    overflow: hidden;

    .container {
        height: calc(100% - var(--lineheight));
        background-color: red;
    }
}
</style>

就得到一个高度为200px的盒子:
在这里插入图片描述

补充:
获取元素样式:getComputedStyle([el])

const styles = getComputedStyle(document.documentElement)
const value = String(styles.getPropertyValue('--lineheight')).trim()
### 如何在 Vue 中设置和使用全局 CSS 变量 #### 配置全局 CSS 变量 为了使全局 CSS 变量能够在整个 Vue 项目中生效,可以通过多种方式实现。以下是几种常见的方法: 1. **通过 `:root` 定义全局变量** 在项目的入口文件(如 `index.html` 或 `main.css`)中定义全局 CSS 变量: ```css :root { --primary-color: #007bff; --secondary-color: #6c757d; } ``` 这种方式适用于简单的项目结构,可以直接在整个应用中访问这些变量。 2. **Vite/Vue CLI 的配置** 如果使用 Vite 构建工具,则可以按照如下方式进行配置[^4]: ```javascript import { defineConfig } from 'vite'; export default defineConfig({ css: { preprocessorOptions: { scss: { additionalData: '@import "./src/styles/common.scss";', }, }, }, }); ``` 上述代码会在每个 SCSS 文件编译时自动注入指定的全局样式文件 `common.scss`,从而使得其中定义的变量成为全局可用。 3. **动态修改全局变量** 使用 JavaScript 动态调整全局 CSS 变量的值也是可行的。例如,在某个事件触发后更改主题颜色: ```javascript document.documentElement.style.setProperty('--themeColor', '#ff5722'); ``` 此外,还可以结合 Vue 组件的状态管理来控制变量的变化[^3]。 #### 使用全局 CSS 变量 一旦设置了全局 CSS 变量,就可以轻松地在任意组件内部调用它们。下面是一个具体的例子展示如何利用这些变量设计页面布局: ```html <template> <div class="container"> <h1 :style="{ color: getPrimaryColor }">Hello World</h1> <p>Paragraph with secondary color.</p> </div> </template> <script> export default { computed: { getPrimaryColor() { return window.getComputedStyle(document.documentElement).getPropertyValue('--primary-color').trim(); }, }, }; </script> <style lang="scss"> .container { background-color: var(--primary-color); } p { color: var(--secondary-color); } </style> ``` 上述模板不仅展示了静态样式的运用,还体现了借助计算属性获取当前 CSS 变量的实际数值的能力。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值