在vue中因为没有dome元素,所以动态添加class名不用使用jquery的方法,在这里讲解下vue动态添加的方法:
<li v-for="(item,index) in navList" :key="item" :class="[{'nav_left':index%2 != 1},{'nav_right':index%2 != 0},{'nav_active':index==current}]" @click='navClick(index,item);'>{{ item }}</li>
在这里使用的数组的方法,里面嵌套多个对象,
[
{'nav_left':index%2 != 1},//判断是否为奇行
{'nav_right':index%2 != 0},//判断是否为偶行
{'nav_active':index==current}
]
至于第三个class名则是点击改变当前class:
第一:
第二:见上代码,动态绑定,添加判断条件
第三:
下面是这个组件完整代码,有需要可以看看:
<template>
<ul class="nav" id="nav">
<li v-for="(item,index) in navList" :key="item" :class="[{'nav_left':index%2 != 1},{'nav_right':index%2 != 0},{'nav_active':index==current}]" @click='navClick(index,item);'>{{ item }}</li>
</ul>
</template>
<script>
export default {
data () {
return {
current:0,
};
},
props:['navList'],
mounted() {
},
methods: {
navClick(index,item){
this.current=index;
this.$emit('navClick',item);
},
},
}
</script>
<style lang='less' scoped>
.nav{
padding:0 18%;
overflow: hidden;
li{
font-size:22px;
padding:10px;
font-weight: 100;
color:#4fa8b5;
}
li:hover{
cursor: pointer;
}
.nav_active{
background: url(../../assets/images/nav_act.png) no-repeat center;
color:#fff;
}
.nav_left{
float:left;
margin-left:30px;
}
.nav_right{
float:right;
margin-right:30px;
}
}
</style>