VUE,关于导航列表样式切换(VUE Router:router-link-active)

发布时间:2019-05-28 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了VUE,关于导航列表样式切换(VUE Router:router-link-active)脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

导航样式图
当我们新建一个网站时,总是要做一个导航列表,在传统的WEB开发中这已经是一种很成熟的技,自己学VUE,看了官方文档,加上自己摸索,也学到不少,现在拿来分享一下。在自己VUE入门学习的笔记中也有提及
第一种:jqUERY中我们通常采用:
$("li[class='active']").removeClass("active"); //将当前选中的项目解除被选中的样式;
$(selector).addClass('active');//为选中的条目添加被选中的样式;
非常简便,需要npm install jquery,并在baseconfig中配置。但学VUE,还是用其本身的Class 与 Style 绑定最好。
第二种:VUE中没有选择器,但对于CSS属性支持状态关联操作(Class 与 Style 绑定):
eg:v-bind:class="{ active: isActive }"
解读:当isActive值为真时,active样式有效,Dom渲染结果是:class=“active”
当为false时,active样式无效,Dom渲染结果是:class=“”
因此我们可以利用这个属性做文章
标签HTML:<li v-for:"tagName of tagnames" v-bind:class={active:activeName==tagName} v-on:click="selected(tagName)">
这条语句我们生成了一个列表,并为其绑定了一个选中事件,为class动态绑定了一个判断事件
同样我们在选择这个事件中:
function selected(seclctedName){
this.activeName= seclctedName;
}
数据属性:

data(){
    return{
        tagNames:[
            {name:'hello',tabLink:'/Hello'},
            {name:'Login',tabLink:'/LOGin'},
            {name:'Myblog',tabLink:'/MyBlog'}
        ],
        activeName:'hello' //当activeName初始值为空时,浏览器加载时默认没有选择的列表项,当为hello时,hello列表默认被选中
    }
},

初看运行起来还可以,切换也正常,但当我们停留在非HELLO页面时,刷新页面,hello被选中了,而刷新前的选中样式被解除了,这是因为我们为activeName:'hello' 赋了初值。所以有BUG。
第三种:思路同二,但activeName,我新建导航样式列表组件时,我为其定义了一个TITLE属性
PRops: {

  title: {
      tyPE: String,
       default: 'any'
        }
  }

并在列表中使用:class="{active:title== tabbarName.name}来绑定active CSS
当其他页面调用这个组件时,指定TITLE,比如: 、
<v-header title="MyBlog">
</v-header>
这是当切换到MyBlog时,他就会被选中,随便刷新,都没有方法二的情况出现。

四种:也是最官方,最简单的。自己当时看VUEROUTER,因为看着面熟,看的比较快,所以错过了这个知识点,开始页的最下面有这样一句话:当 <router-link> 对应的路由匹配成功,将自动设置 class 属性值 .router-link-active,所以你只需要在自己的STYLE文件中,写了.router-link-active的样式,列表选中后,系统就会自动去绑定这个样式。此处应该有很多个锤头掩面的表情*。

然后

脚本宝典总结

以上是脚本宝典为你收集整理的VUE,关于导航列表样式切换(VUE Router:router-link-active)全部内容,希望文章能够帮你解决VUE,关于导航列表样式切换(VUE Router:router-link-active)所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。