vue使用CSS变量详解

 更新时间:2025年12月17日 09:25:54   作者:V。on  
文章讲解了如何在Vue项目中使用CSS变量,包括动态计算值和根据条件计算属性,通过示例展示了如何使用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()

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • vue3 reactive 请求接口数据赋值后拿不到的问题及解决方案

    vue3 reactive 请求接口数据赋值后拿不到的问题及解决方案

    这篇文章主要介绍了vue3 reactive 请求接口数据赋值后拿不到的问题及解决方案,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2024-04-04
  • Vue实战记录之登陆页面的实现

    Vue实战记录之登陆页面的实现

    最近学习过程中常碰到让用户登录注册这种,这篇文章主要给大家介绍了关于Vue实战记录之登陆页面实现的相关资料,需要的朋友可以参考下
    2021-06-06
  • 深入理解vue中的$set

    深入理解vue中的$set

    这篇文章主要介绍了深入理解vue中的$set,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • 概述VUE2.0不可忽视的很多变化

    概述VUE2.0不可忽视的很多变化

    本文给大家分析下vue2.0几个重要的与自己目前项目相关的变化,也是vue2.0不可忽视的变化,非常不错,具有参考借鉴价值,感兴趣的朋友一起看看吧
    2016-09-09
  • 一个Vue页面的内存泄露分析详解

    一个Vue页面的内存泄露分析详解

    这篇文章主要介绍了一个Vue页面的内存泄露分析详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06
  • 在vue中v-bind使用三目运算符绑定class的实例

    在vue中v-bind使用三目运算符绑定class的实例

    今天小编就为大家分享一篇在vue中v-bind使用三目运算符绑定class的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-09-09
  • vue-router next(false) 禁止访问某个页面时,不保留历史访问记录问题

    vue-router next(false) 禁止访问某个页面时,不保留历史访问记录问题

    这篇文章主要介绍了vue-router next(false) 禁止访问某个页面时,不保留历史访问记录问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • vue+elementUi图片上传组件使用详解

    vue+elementUi图片上传组件使用详解

    这篇文章主要为大家详细介绍了vue+elementUi图片上传组件的使用方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-08-08
  • vue中如何给多个按钮动态添加类名

    vue中如何给多个按钮动态添加类名

    这篇文章主要介绍了vue中如何给多个按钮动态添加类名问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • Vue3 实现文件上传功能

    Vue3 实现文件上传功能

    在Vue3中实现文件上传功能,你可以使用多种方法,包括使用原生的HTML <input type="file">元素,或者使用第三方库如 axios和vue-axios来处理文件上传,本文给大家介绍Vue3 实现文件上传功能,感兴趣的朋友一起看看吧
    2025-07-07

最新评论