Vue案例一:动态绑定class的应用

实现效果如下图所示:

 

代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    .active{
      color: red;
    }
  </style>
</head>
<body>
<div id="app">
  <ul>
    <li v-for="(item,index) in movies" 
    :class="{active:currentIndex === index}" 
    @click="liClick(index)">{{item}}</li>
  </ul>
</div>
<script src="../js/vue.js"></script>
<script>
const app = new Vue({
  el:'#app',
  data:{
    movies:['钢铁侠','绿巨人','美国队长','雷神','复仇者联盟'],
    currentIndex:0,//记录当前显示为红色的标签
    isActive:true
  },
  methods:{
    liClick(index){
      this.currentIndex = index;
      console.log(index);
    }
  }
})
</script>
</body>
</html>

 

### Vue 3 中动态绑定 Class 的方法和语法 在 Vue 3 中,`class` 动态绑定个非常强大的功能,允许开发者通过不同的方式灵活地控制 DOM 元素的样式。以下是几种常见的实现方式及其具体语法: #### 对象语法 对象语法是最常用的 `class` 绑定形式之。它允许通过键值对的方式定义哪些类应该被应用到目标元素上。如果某个键对应的值为 `true`,则该类会被添加;反之,则不会。 ```vue <template> <div :class="{ active: isActive, 'text-danger': hasError }">...</div> </template> <script> export default { data() { return { isActive: true, hasError: false }; } }; </script> ``` 此代码片段展示了如何利用布尔值决定是否应用特定的 CSS 类[^1]。 --- #### 数组语法 当需要同时绑定多个类时,可以使用数组语法。这种方式支持静态字符串、变量甚至嵌套的对象语法作为数组中的项。 ```vue <template> <div :class="[staticClass, dynamicClass, { conditionalClass: isConditional }]"> ... </div> </template> <script> export default { data() { return { staticClass: "container", dynamicClass: "box", isConditional: true }; } }; </script> ``` 在此例子中,`:class` 属性接收了个包含三种类型的成员的数组:个固定的类名 (`staticClass`)、个由数据驱动的动态类名 (`dynamicClass`) 和基于条件判断的结果 ( `{conditionalClass: isConditional}`)[^1]。 --- #### 计算属性 对于更复杂的逻辑场景,推荐使用计算属性来管理动态类名。这种方法不仅提高了可读性和维护性,还能够轻松处理多层依赖关系。 ```vue <template> <div :class="computedClasses">...</div> </template> <script> export default { computed: { computedClasses() { return [ "base-class", // 静态类 this.isSpecial ? "special-class" : "", // 条件类 ...this.additionalClasses // 扩展操作符用于合并其他类列表 ]; } }, data() { return { isSpecial: true, additionalClasses: ["extra-class"] }; } }; </script> ``` 这里展示的是如何借助计算属性生成最终的 `class` 值[^3]。 --- #### 实际案例分析 下面提供个完整的实际应用场景,其中包含了点击事件触发类的变化过程。 ```vue <template> <div> <button @click="toggleActive">切换状态</button> <p :class="paragraphClass">这是段文字。</p> </div> </template> <script> export default { data() { return { isActive: false }; }, computed: { paragraphClass() { return { active: this.isActive, inactive: !this.isActive }; } }, methods: { toggleActive() { this.isActive = !this.isActive; } } }; </script> <style> .active { color: green; } .inactive { color: red; } </style> ``` 在这个示例里,按钮点击会改变 `isActive` 数据的状态,从而影响 `<p>` 标签上的 `class` 表现[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值