vue中v-bind控制class和style

当使用v-bind指令控制class和style时,可以通过动态绑定的方式根据不同的条件来添加或移除class,以及改变元素的样式。

1. 控制class

通过v-bind:class可以动态绑定class属性。可以使用对象语法、数组语法或者计算属性来实现。

  • 对象语法:使用对象语法,可以根据条件来动态添加或移除class。

    <div :class="{ active: isActive }"></div>
    

    在上面的例子中,如果isActive为true,则会给该元素添加一个名为"active"的class。

  • 数组语法:使用数组语法,可以根据条件来添加或移除多个class。

    <div :class="[isActive ? 'active' : '', isHighlighted ? 'highlighted' : '']"></div>
    

    在上面的例子中,如果isActive为true,则会给该元素添加一个名为"active"的class;如果isHighlighted为true,则会给该元素添加一个名为"highlighted"的class。

  • 计算属性:使用计算属性,可以根据条件来动态计算class。

    <div :class="computedClasses"></div>
    

    computed: {
      computedClasses() {
        return {
          active: this.isActive,
          highlighted: this.isHighlighted
        }
      }
    }
    

    在上面的例子中,根据isActive和isHighlighted的值,计算出一个包含active和highlighted的class对象。

2. 控制style

通过v-bind:style可以动态绑定style属性。可以直接绑定一个样式对象,也可以使用计算属性来计算一个样式对象。

  • 直接绑定样式对象:直接绑定一个样式对象,可以根据条件来动态设置元素的样式。

    <div :style="{ color: isActive ? 'red' : 'blue', fontSize: isHighlighted ? '20px' : '14px' }"></div>
    

    在上面的例子中,如果isActive为true,则设置该元素的color为红色;如果isHighlighted为true,则设置该元素的fontSize为20px。

  • 计算属性:使用计算属性,可以根据条件来计算一个样式对象。

    <div :style="computedStyles"></div>
    

    computed: {
      computedStyles() {
        return {
          color: this.isActive ? 'red' : 'blue',
          fontSize: this.isHighlighted ? '20px' : '14px'
        }
      }
    }
    

    在上面的例子中,根据isActive和isHighlighted的值,计算出一个包含color和fontSize的样式对象。

通过动态绑定class和style,可以根据不同的条件来改变元素的外观和样式,实现更灵活的界面效果。

导航栏选中字体高亮显示

注意以下代码需要放HTML代码中运行

<div id="app">
    <nav>
      <ul>
        <li v-for="(item, index) in navItems" :key="index" :class="{ active: selectedIndex === index }" @click="selectNavItem(index)" >
          {{ item.text }}
        </li>
      </ul>
    </nav>
  </div>
  <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
   
var app = new Vue({
    el: '#app',
    data: {
      navItems: [
        { text: '首页', color: '#f44336' },
        { text: '关于', color: '#9c27b0' },
        { text: '联系', color: '#4caf50' },
        { text: '帮助', color: '#ff9800' }
      ],
      selectedIndex: 0
    },
    methods: {
     selectNavItem(index) {
        this.selectedIndex = index;
      }
    }
  
   

})
  

以上代码是一个简单的导航栏组件,使用Vue.js来实现导航栏的点击高亮效果。

在代码中,<div id="app">是Vue实例的挂载点,Vue会将组件渲染到这个挂载点下。

<nav>标签内部是一个无序列表<ul>,通过v-for指令遍历navItems数组,生成列表项<li>v-for="(item, index) in navItems"表示将navItems数组中的每一项item遍历,并将当前项的索引index也绑定到变量中。

:key="index"指定每一个列表项的唯一key值,以便在重绘时进行优化。

:class="{ active: selectedIndex === index }"使用了动态绑定class的对象语法,根据selectedIndex的值和列表项的索引index是否相等,决定是否给该列表项添加名为"active"的class。如果相等,则添加,实现高亮效果。

@click="selectNavItem(index)"绑定了点击事件,当点击列表项时,触发selectNavItem方法,将当前项的索引index传入,从而更新selectedIndex的值,实现切换高亮的效果。

在Vue实例中,data属性中navItems是一个包含导航项的数组,selectedIndex是当前选中的导航项的索引。methods属性中定义了一个selectNavItem方法,用于更新selectedIndex的值。

最后,通过实例化Vue对象,将el属性指定为"#app",将Vue实例挂载到页面上。然后Vue会监听数据的变化,根据数据的变化自动更新界面,实现导航栏的点击高亮效果。

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

你去把阿里干掉!

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值