Skip to content

Vue3 之动态绑定 class

在日常开发中,我们经常会动态地给一个元素增加或者删除一个 class,来更改它的样式 比如选中了一个元素,那么给它加一个 class 叫 active,同时其他元素要删除 active 这个 class

我们这节课来学习在 vue 中如何动态的控制元素的 class 属性 我们给一个元素增加:class(v-bind:class 的简写)来动态切换 class

html
<div :class="{active: hasFocus}"></div>

这里:class 接受的是一个 js 对象,这个对象的键 active,就是我们要动态切换的 class 的名称,值 hasFocus 可以理解为是一个 Boolean 型的值,

js
data() {
  return {
    hasFocus: true,
  }
}

如果 hasFocus 是一个真值时,在元素上就会加上对应的 class,渲染结果就是

html
<div class="active"></div>

如果 hasFocus 是一个假值时,在元素上就不会有 active 这个 class,渲染结果就是

html
<div class></div>

如果同一个元素,有多个 class 需要动态控制,只需要在对象内增加多个键值就行了,如果有固定的 class,按普通的 html 的方式写就行了 class 和:class 两个属性可以同时存在

html
<div class="static" :class="{ active: hasFocus, 'large-size': isLarge}"></div>

Vue3 之动态绑定 style

常用来主题更换

首先在 style 绑定一个变量

js
:style="styleObject"

定义 2 个变量

js
const activetextcolor = ref("#ff0000");
const styleObject = ref({
  "--hovercolor": activetextcolor.value,
});

css 里面写

css
.el-menu-item {
  &:hover {
    background: none !important;
    color: var(--hovercolor) !important;
  }
}