写点什么

Vue 入门指北——css 中的 js 变量

作者:Augus
  • 2022 年 9 月 27 日
    天津
  • 本文字数:959 字

    阅读完需:约 3 分钟

前言

最近项目演示,手上没什么活,正好借着闲下来的功夫,看了看 vue3 的文档,发现 vue3 对 vue3 的支持加强了。以前总是想着,如果 js 中的变量能直接,css 中使用,那是多么一件美妙的事情啊,而且优雅。而在这次的 vue3 里面支持这么做了,你可以随意使用 js 中的变量,只需一个v-bind()指令就可以实现。下面我给大家简单介绍下,在 vue2 中 css 是如何使用 js 变量的,并对比 vue3 中的使用,你会发现优雅,太优雅了。

vue2 中 css 内的 js 变量

假如我们有两个按钮,第一个按钮背景改成粉色,第二个按钮文字改成粉色,你可能会这么写:


<script >...
data() { return { color: 'pink', }}...</script>
<template> <div> <button :style="{ background: color }"> 彼时彼刻,恰如此时此刻 </button> <button :style="{ color }"> 彼时彼刻,恰如此时此刻 </button> </div></template>
复制代码


但是,这么写的话,动态样式一但多的话,就会显得特别臃肿。这个时候你就可以通过 css 变量解决这个问题。


<template>  <div :style="{'--color': color}">    <button >      彼时彼刻,恰如此时此刻    </button>    <button>      彼时彼刻,恰如此时此刻    </button>  </div></template><script >...
data() { return { color: 'pink', }}...</script><style scoped>button:nth-child(1) { background: var(--color);}button:nth-child(2) { color: var(--color)}</style>
复制代码


上面两种方法中,都做到了,根据 data 内的 color 变量动态渲染 css 样式,一个是要在标签内编写样式,一个是要在标签内声明 css 变量,说实话比较繁琐。下面我们来看下,在 vue3 中是如何实现的。

vue3 中 css 内的 js 变量

在 vue3 中可以说是非常方便了:


<script setup>import { ref } from 'vue';const color = ref('pink');</script>
<template> <div> <button > 彼时彼刻,恰如此时此刻 </button> <button> 彼时彼刻,恰如此时此刻 </button> </div></template>
<style scoped>button:nth-child(1) { background: v-bind(color);}button:nth-child(2) { color: v-bind(color);}</style>
复制代码


vue3 中直接通过v-bind指令就可以与 js 变量绑定上,既解决了标签内编写样式的臃肿的问题,也省去了声明 css 变量的麻烦。

用户头像

Augus

关注

爱瞎搞的软件开发工程师 2021.06.10 加入

某摸鱼集团

评论

发布
暂无评论
Vue入门指北——css中的js变量_Vue_Augus_InfoQ写作社区