vue 导航菜单切换样式设置

在使用vue开发的时候,几乎每个项目里面都会有导航菜单切换,不管是顶部导航菜单、还是侧边导航菜单,切换到当前的菜单,需要给当前的菜单一个height light,或者添加其它的样式。
类似于这样的效果。

image.png

1.导航菜单切换是使用路由跳转router-link,vue会给当前切换到的菜单a标签添加一个active的类名,直接给这个类名设置样式就好了。
2.如果是自己写的不涉及路由的跳转,类似于tab切换的效果,用一个公共变量记录当前切换的key,对比两个key是否相当,如果相等添加class类名。但是这个只适用于tab切换类似的效果,只设置一个的效果。

<template>
  <div class="top-element">
    <div v-for="(item,index) in datasource" :class={'currentElement':currentKey==item.key} @click="switch(item.key)">
{{item.key}}
  </div>
  </div>
</template>
<script>
data(){
  return {
  datasource:[{key:'1',flag:false},{key:'2',flag:false}]
  }
},
methods:{
  switch(key){
  this.currentKey=key
  }
}
</script>
<style lang="scss">
.currentElement{
  color:blue;
}
</style>

3.还有一种不涉及路由跳转,但是可以切换多个,类似于折叠面板的效果,同时展开多个,这种效果可以通过给data设置一个变量flag默认为false,当切换的时候通过索引找到在data中的位置,再设置为true

<template>
  <div class="top-element">
    <div v-for="(item,index) in datasource" :class={'currentElement':currentKey==item.key} @click="switch(item,index)">
{{item.key}}
  </div>
  </div>
</template>
<script>
data(){
  return {
  currentKey:"",
  datasource:[{key:'1'},{key:'2'}]
  }
},
methods:{
  switch(item,index){
  this.datasource[index].flag=! this.datasource[index].flag;
  }
}
</script>
<style lang="scss">
.currentElement{
  color:blue;
}
</style>
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 黎明即起,洒扫庭除,要内外整洁;既昏便息,关锁门户,必亲自检点。一粥一饭,当思来之不易,半丝半缕,恒念物力维艰。宜...
    苏辛子_8848阅读 3,318评论 0 5
  • 臂弯的发香 文/王明军 今日五一 值得纪念的日子 二十一年前 你把发香留在我的臂弯 后来 没有鲜花,也没有浪漫 谢...
    九竹山人阅读 1,526评论 0 2
  • 总说老天给你关上一扇门的时候,会给你打开一扇窗;总说失去的总会以另外一种方式还给你。可是我的生活里,没有窗,也没有...
    橘子屋阅读 3,520评论 2 8
  • 最令人气愤的是什么,是一盆水浇在一颗温热的心上。 当我以为要交卷了,可第二题的听写老师还听,于是我想去问下同桌。我...
    舒游阅读 2,750评论 0 0

友情链接更多精彩内容