Vue 列表动态绑定点击样式(active class)以及路由router-link点击样式(router-active-class)

本文介绍Vue中如何实现列表动态绑定点击样式,包括普通列表的active-class效果及使用router-link时的路由动态样式配置。通过实例展示了如何在点击列表项时动态改变样式,并解释了router-link-active与router-link-exact-active的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

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
    }
  ]
})

 

 

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

 

 

 

### 回答1: Vue中的router-link组件可以通过设置classactive-class属性来设置样式。 1. 设置class属性 可以通过设置class属性来为router-link添加样式,例如: ``` <router-link to="/" class="link">首页</router-link> ``` 这样就为router-link添加了一个名为linkclass样式。 2. 设置active-class属性 active-class属性可以用来设置当前激活的router-link样式,例如: ``` <router-link to="/" active-class="active">首页</router-link> ``` 这样当当前路由为"/"时,router-link会自动添加一个名为activeclass样式。 以上就是Vue中设置router-link样式的方法。 ### 回答2: 在Vue中,可以通过router-link组件来进行页面间的跳转,并且可以设置样式来美化链接的外观。 首先,在使用router-link时,可以通过标签属性来设置样式。如下所示: <router-link to="/home" tag="li" active-class="active"> <a>Home</a> </router-link> 在以上代码中,通过设置tag属性为"li",router-link会以li标签的形式渲染,然后可以在li标签上添加样式。例如,可以给li标签设置背景色或者字体颜色等。 另外,添加active-class属性可以设置链接在当前页面激活时的样式。在以上代码中,当链接指向"/home"路径时,会自动给这个链接添加active类,因此我们可以通过设置active类的样式来美化激活状态下的链接样式。 除此之外,还可以通过指定css类名的方式来设置样式。如下所示: <router-link to="/home" :class="{ 'active': $route.path === '/home' }"> <a>Home</a> </router-link> 在以上代码中,通过绑定class属性,可以根据$route.path的值来动态添加active类,从而设置激活状态下的样式。 总结起来,Vue中的router-link组件可以通过设置标签属性或者绑定class属性的方式来设置样式。通过灵活运用这些方法,可以轻松地美化链接的外观。 ### 回答3: 在Vue中,可以通过添加class、设置active-class和exact-active-class来设置vue-router中的router-link样式。 1. 添加class: 可以通过设置class来自定义router-link样式。在router-link组件中,可以通过使用该组件的"to"属性来指定链接的目标路径,并通过添加class属性来设置该router-link样式。例如: ``` <router-link to="/home" class="my-link">Home</router-link> ``` 上述代码中,router-linkclass属性被设置为"my-link",可以在CSS文件中定义.my-link类来设置该router-link样式。 2. 设置active-class和exact-active-class: 当我们在Vue中使用router-link组件时,根据当前路由是否匹配到了router-link的to属性的值,router-link会添加active class来表示当前选中的链接。我们可以通过设置active-class和exact-active-class来自定义active样式- active-class: 当路由匹配到router-link的to属性时,router-link会自动添加active class。可以通过设置active-class属性来指定active样式。例如: ``` <router-link to="/home" active-class="active-link">Home</router-link> ``` 上述代码中,router-link在匹配到"/home"路径时,会自动添加active class,并且该class被设置为"active-link",可以在CSS文件中定义.active-link类来设置active样式- exact-active-class: 如果我们不希望子路由也被认为是active状态,可以使用exact属性来确保只有完全匹配时才被认为是active状态。同时,可以通过设置exact-active-class属性来自定义exact-active样式。例如: ``` <router-link to="/home" exact active-class="exact-active-link">Home</router-link> ``` 上述代码中,router-link在完全匹配到"/home"路径时,会自动添加exact-active class,并且该class被设置为"exact-active-link",可以在CSS文件中定义.exact-active-link类来设置exact-active样式
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值