Uni-app/Vue实现微信小程序tab导航栏下划线切换动画
本文介绍移动端中常用的tab导航栏下划线动画,仅针对点击切换不支持滑动切换 html部分:
<view class="tab-wrap">
<view style="display: flex;width: 100vw;">
<view
class="menu-box"
:class="activeindex === menuindex? active : "
@tap="choosemenu(menuindex)"
v-for="(menu,menuindex) in menulist"
:key="menuindex">
{
{menu}}
</view>
<view class="bottom_line" :style="`left:${left}px`"></view>
</view>
</view>
CSS部分
.tab-wrap {
position: relative;
height: 160rpx;
display: flex;
align-items: flex-end;
}
.menu-box {
width: 15%;
height: 80rpx;
font-size: 16px;
display:flex;
flex-direction: column;
align-items: center;
}
.active {
font-weight:bold
}
.bottom_line {
width: 40rpx;
height: 4rpx;
background-color: #007AFF;
position: absolute;
bottom: 8rpx;
transition: all .2s linear;
}
js部分
export default {
data() {
return {
activeindex: 0,
menulist: [商品, 评价, 店铺],
left: 0
}
},
methods: {
choosemenu(menuindex) {
this.activeindex = menuindex
//做一个短暂的延迟保证选中的tab是用户点击的tab
setTimeout(()=>{
this.lineChange()
},100)
},
lineChange() {
const query = uni.createSelectorQuery()
query.select(.active).boundingClientRect().exec(res => {
//计算出当前选中的tab距离窗口左侧距离加上tab选项宽度减去下划线宽度除以2(目的:让下划线居中)
this.left = res[0].left + uni.upx2px(36)
})
}
}
}
上一篇:
uniapp开发微信小程序-2.页面制作
下一篇:
java 实现小程序 消息订阅
