动态切换tabbar, 内容列表list跟着改变:
<div class="navbar">
<ul class="nav-bar">
<li v-for="(item, index) in itemTab" class="nav-bar-item" :class="{'nav-bar-active': initIndex === index}" @click="changeTab(index)">
{{item.title}}
</li>
</ul>
</nav>
<section class="scroll-list">
<travel v-for="(item, index) in travelsList" :travel="item" v-show="initIndex == 0"></travel>
<panel v-for="(item, index) in sportsList" :sports="item" v-show="initIndex == 1"></panel>
</section>
<div class="btn-apply" id="drag1" @click="post">
<i class="icon">๧</i>
<span>去发布</span>
</div>
</div>
methods:{
changeTab(index) {
window.scroll(0, 0)
this.initIndex = index
},
post() {
this.$router.push('/user/post')
}
}
.navbar{
.nav-box{
position:fixed;
top:1rem;
z-index:1;
width:100%;
height:1rem;
line-height:1rem;
text-align:center;
background:white;
.nav-bar{
display:flex;
.nav-bar-item{
flex:1;
font-size:14px;
}
.nav-bar-active{
border-bottom:3px;solid green;
color:green;
}
}
}
.scroll-list{
margin-top:1rem;
background:white;
}
.btn-apply{
position:fixed;
bottom:0.5rem;
right:0.4rem;
width:1.5rem;
height:1.5rem;
line-height:1;
background-color:green;
border-radius:50%;
text-align:center;
z-index:9;
display:block;
font-size:14px;
}
}
https://cn.vuejs.org/v2/guide/class-and-style.html
对象语法
我们可以传给 v-bind:class
一个对象,以动态地切换 class:
<div v-bind:class="{ active: isActive }"></div> |
<div class="static" v-bind:class="{ active: isActive, 'text-danger': hasError }"> </div> |
和如下 data:
data: { isActive: true, hasError: false } |
结果渲染为:
<div class="static active"></div> |
数组语法
我们可以把一个数组传给 v-bind:class
,以应用一个 class 列表:
<div v-bind:class="[activeClass, errorClass]"></div>
|
data: { activeClass: 'active', errorClass: 'text-danger' } |
渲染为:
<div class="active text-danger"></div> |