Vue基础教程(84)class与style绑定绑定HTML样式(class)之对象语法:别再用土办法了!Vue的class绑定让你写出“会思考”的样式代码

一、开篇:为什么你的样式代码需要“进化”?

还记得刚学前端时,我们是怎么写样式的吗?在HTML里写满class="btn btn-primary active",在JS里用element.classList.add()remove()来回切换,代码又长又难维护。

直到我遇到Vue的class对象语法,才恍然大悟:原来样式可以这么“聪明”!

想象一下这个场景:一个按钮,正常时是灰色,点击后变蓝色并带阴影,禁用时变灰色半透明。用传统方式,你得写一堆JS去添加删除class,代码像下面这样:

// 传统方式 - 又长又难读
if (isActive) {
  button.classList.add('active');
  button.classList.remove('normal');
} else {
  button.classList.add('normal');
  button.classList.remove('active');
}

if (isDisabled) {
  button.classList.add('disabled');
}

但在Vue里,同样的逻辑只需要一行:

<button :class="{ active: isActive, 'text-bold': isBold, disabled: isDisabled }">
  智能按钮
</button>

是不是感觉代码瞬间清爽了?这就是Vue class绑定的魔力!

二、对象语法:让你的class“活”起来

2.1 基础概念:它到底是什么?

简单来说,对象语法就是用一个JavaScript对象来决定哪些class应该被应用

对象的结构长这样:

  • key:你想要应用的class名
  • value:一个布尔值,为true时应用这个class,为false时不应用
<div :class="{ active: isActive, 'error': hasError }"></div>

对应的数据:

data() {
  return {
    isActive: true,
    hasError: false
  }
}

最终渲染结果:

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

看到没?只有active被应用了,因为isActive为true,而hasError为false。

2.2 为什么这比传统方式好?
  1. 声明式编程:你只需要告诉Vue"在什么条件下用什么class",不用手动操作DOM
  2. 代码更简洁:一行代码替代多行JS操作
  3. 更易维护:所有样式逻辑集中在一处,一目了然
  4. 响应式:数据变化时,样式自动更新,不用手动同步

三、实战演练:从简单到复杂,一步步掌握

3.1 基础用法:切换单个class

让我们从最简单的开始:一个可以切换选中状态的标签。

<template>
  <div>
    <span 
      :class="{ selected: isSelected }" 
      @click="isSelected = !isSelected"
      class="tag"
    >
      点击我切换状态
    </span>
  </div>
</template>
<script>
export default {
  data() {
    return {
      isSelected: false
    }
  }
}
</script>
<style>
.tag {
  display: inline-block;
  padding: 8px 16px;
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

值引力

持续创作,多谢支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值