Vue - 列表动态绑定点击样式(active class)

 

动态绑定样式是我们经常用到的,所以直接整理了方便以后查阅

用到的相关知识在vue文档

 

1.普通的列表动态绑定点击样式

 

来个小demo,实现的是一个点击绑定动态样式active-class的效果

通过index与nowIndex(当前index)作比较,若相同,active-class则为true,显示被点击样式

template部分


  <div id="partice">
    <ul>
      <li
        v-for="(item,index) in list"
        :key="index"
        class="normal-class"
        :class="{ 'active-class': nowIndex === index }"
        @click="changeClass(index)"
      >
        点我
      </li>
    </ul>
  </div>

script部分

export default {
  name: 'Partice',
  data () {
    return {
      list:[1, 2, 3, 4, 5],
      nowIndex: 0
    }
  },
  methods: {
    changeClass (index) {
      this.nowIndex = index
    }
  }
} 

style部分

.normal-class{
  display: inline-block;
  width: 20px;
  margin: 10px;
  background: yellow;
}
.active-class{
  background: red;
}

效果图

 

2.路由动态样式

 

当我们使用router-link的时候,点击时,router会自动给标签添加样式

router-link-active以及router-link-exact-active

需要注意的是router-link-active 始终会经过路径 / ,所以默认路径 / 其会拥有样式router-link-active

而router-link-exact-active会更加精准的获取到精准地址的标签添加样式。

类似结构如下

    <nav class="border-bottom nav">
      <!-- 导航栏部分 -->
      <router-link to='/' tag="a">商品</router-link>
      <router-link to='/comment' tag="a">评论</router-link>
      <router-link to='/seller' tag="a">商家</router-link>
    </nav>

若要为这两个样式改成自己想要的class名字的话,可以在router添加配置项

linkActiveClass与linkExactActiveClass,指定类名

export default new VueRouter({
  // 配置router active的类名
  // 每个router都会经过/所以会被激活,通过exact可以精准选择所在路由
  linkActiveClass: '',
  linkExactActiveClass: 'active',
  routes: [
    {
      path: '/',
      name: 'Goods',
      component: BuyGoods
    }, {
      path: '/comment',
      name: 'Comment',
      component: BuyComment
    }, {
      path: '/seller',
      name: 'Seller',
      component: BuySeller
    }
  ]
})

 

 

本文为个人学习笔记,如有错误欢迎留言指正,谢谢!

 

 

 

Logo

前往低代码交流专区

更多推荐