uni-app 顶部tabbar切换
<p style="text-align: left"> </p><p>完成样式</p>
<p>项目地址:https://gitee.com/jielov/uni-app-tabbar</p>
<p><img src="https://img2020.cnblogs.com/blog/2237618/202012/2237618-20201215145515860-2099032386.png" alt="" loading="lazy"></p>
<p>顶部tabbar代码</p>
<p> </p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 0, 1)"><!--</span><span style="color: rgba(0, 128, 0, 1)">顶部导航栏</span><span style="color: rgba(0, 128, 0, 1)">--></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">view </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="uni_tab_bar"</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">view </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="uni_swiper_tab order_top"</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">block </span><span style="color: rgba(255, 0, 0, 1)">v-for</span><span style="color: rgba(0, 0, 255, 1)">="(tabBar,index) in tabBars"</span><span style="color: rgba(255, 0, 0, 1)"> :key</span><span style="color: rgba(0, 0, 255, 1)">="index"</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">view </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="swiper_tab_list"</span><span style="color: rgba(255, 0, 0, 1)"> :class</span><span style="color: rgba(0, 0, 255, 1)">="{'active': tabIndex==tabBar.id}"</span><span style="color: rgba(255, 0, 0, 1)"> @tap</span><span style="color: rgba(0, 0, 255, 1)">="toggleTab(tabBar.id)"</span><span style="color: rgba(0, 0, 255, 1)">></span><span style="color: rgba(0, 0, 0, 1)">
{{tabBar.name}}
</span><span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">view </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="swiper_tab_line"</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">view</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">view</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">block</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">view</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">view</span><span style="color: rgba(0, 0, 255, 1)">></span></pre>
</div>
<p>使用v-for 循环 tabbars 来进行标题的加载 v-for="(tabBar,index) in tabBars" :key="index" 。</p>
<p> :key="index" 使得在勾选复选框后不会不随这内容的变动而变动例如在勾选第一个后 添加一个新的内容后后勾线后的复选框不会一直是第一个</p>
<p> :class="{'active': tabIndex==index}" 根据index,动态切换css 样式,tabIndex为初始化第一个选择项,在data里面定义tabIndex: 0,tabBars循环数据,放在data里面。</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">data(){
</span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)">{
tabIndex: </span>0, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">选中标签栏的序列</span>
<span style="color: rgba(0, 0, 0, 1)"> tabBars: [
{name: </span>'全部',id: '0'<span style="color: rgba(0, 0, 0, 1)">},
{name: </span>'待服务',id: '1'<span style="color: rgba(0, 0, 0, 1)">},
{name: </span>'服务中',id: '2'<span style="color: rgba(0, 0, 0, 1)">},
{name: </span>'已完成',id: '3'<span style="color: rgba(0, 0, 0, 1)">},
{name: </span>'已取消',id: '4'<span style="color: rgba(0, 0, 0, 1)">},
],
}
}</span></pre>
</div>
<p> @tap="toggleTab(tabBar.id)" @tab为点击切换事件,放在methods里面。</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">toggleTab(index) {
</span><span style="color: rgba(0, 0, 255, 1)">this</span>.tabIndex =<span style="color: rgba(0, 0, 0, 1)"> index;
},</span></pre>
</div>
<p> 以下为tab内容区域,css样式在最后面哦~</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">view </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="order_centext"</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">swiper </span><span style="color: rgba(255, 0, 0, 1)">:current</span><span style="color: rgba(0, 0, 255, 1)">="tabIndex"</span><span style="color: rgba(255, 0, 0, 1)"> @change</span><span style="color: rgba(0, 0, 255, 1)">="tabChange"</span><span style="color: rgba(255, 0, 0, 1)"> class</span><span style="color: rgba(0, 0, 255, 1)">="order_centext"</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">swiper-item </span><span style="color: rgba(255, 0, 0, 1)">v-for</span><span style="color: rgba(0, 0, 255, 1)">="(content,index) in tabBars"</span><span style="color: rgba(255, 0, 0, 1)"> :key</span><span style="color: rgba(0, 0, 255, 1)">="index"</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">view </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="swiper_item"</span><span style="color: rgba(0, 0, 255, 1)">></span>{{content.name}}<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">view</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">swiper-item</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">swiper</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">view</span><span style="color: rgba(0, 0, 255, 1)">></span></pre>
</div>
<p>swiper为滑动切换内容,tabbar滑动切换稍微没那么流畅,有点卡顿。可以选择去掉滑动,只保留点击切换即可。</p>
<p>@change="tabChange" 滑动事件,同样也是放在methods里面</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">滑动切换swiper</span>
<span style="color: rgba(0, 0, 0, 1)">tabChange(e) {
const tabIndex </span>=<span style="color: rgba(0, 0, 0, 1)"> e.detail.current
</span><span style="color: rgba(0, 0, 255, 1)">this</span>.tabIndex =<span style="color: rgba(0, 0, 0, 1)"> tabIndex
}</span></pre>
</div>
<p> css样式</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(128, 0, 0, 1)">.order_top </span>{<span style="color: rgba(255, 0, 0, 1)">
display</span>:<span style="color: rgba(0, 0, 255, 1)"> flex</span>;<span style="color: rgba(255, 0, 0, 1)">
align-items</span>:<span style="color: rgba(0, 0, 255, 1)"> center</span>;<span style="color: rgba(255, 0, 0, 1)">
justify-content</span>:<span style="color: rgba(0, 0, 255, 1)"> space-around</span>;<span style="color: rgba(255, 0, 0, 1)">
background-color</span>:<span style="color: rgba(0, 0, 255, 1)"> #FFFFFF</span>;
}<span style="color: rgba(128, 0, 0, 1)">
.swiper_tab_list </span>{<span style="color: rgba(255, 0, 0, 1)">
color</span>:<span style="color: rgba(0, 0, 255, 1)"> #888888</span>;<span style="color: rgba(255, 0, 0, 1)">
font-weight</span>:<span style="color: rgba(0, 0, 255, 1)"> bold</span>;
}<span style="color: rgba(128, 0, 0, 1)">
.uni_tab_bar .active </span>{<span style="color: rgba(255, 0, 0, 1)">
color</span>:<span style="color: rgba(0, 0, 255, 1)"> #FEDE33</span>;<span style="color: rgba(255, 0, 0, 1)">
margin-top</span>:<span style="color: rgba(0, 0, 255, 1)"> 17rpx</span>;<span style="color: rgba(255, 0, 0, 1)">
background-color</span>:<span style="color: rgba(0, 0, 255, 1)"> #FFFFFF</span>;
}<span style="color: rgba(128, 0, 0, 1)">
.active .swiper_tab_line </span>{<span style="color: rgba(255, 0, 0, 1)">
border-bottom</span>:<span style="color: rgba(0, 0, 255, 1)"> 4rpx solid #FEDE33</span>;<span style="color: rgba(255, 0, 0, 1)">
width</span>:<span style="color: rgba(0, 0, 255, 1)"> 50rpx</span>;<span style="color: rgba(255, 0, 0, 1)">
margin</span>:<span style="color: rgba(0, 0, 255, 1)"> auto</span>;<span style="color: rgba(255, 0, 0, 1)">
margin-top</span>:<span style="color: rgba(0, 0, 255, 1)"> 17rpx</span>;<span style="color: rgba(255, 0, 0, 1)">
background-color</span>:<span style="color: rgba(0, 0, 255, 1)"> #0B9C13</span>;
}<span style="color: rgba(128, 0, 0, 1)">
.uni_swiper_tab </span>{<span style="color: rgba(255, 0, 0, 1)">
border-bottom</span>:<span style="color: rgba(0, 0, 255, 1)"> 2rpx solid #eeeeee</span>;<span style="color: rgba(255, 0, 0, 1)">
margin-bottom</span>:<span style="color: rgba(0, 0, 255, 1)"> 15rpx</span>;
}<span style="color: rgba(128, 0, 0, 1)">
.order_centext </span>{<span style="color: rgba(255, 0, 0, 1)">
height</span>:<span style="color: rgba(0, 0, 255, 1)"> 800rpx</span>;<span style="color: rgba(255, 0, 0, 1)">
position</span>:<span style="color: rgba(0, 0, 255, 1)"> fixed</span>;<span style="color: rgba(255, 0, 0, 1)">
top</span>:<span style="color: rgba(0, 0, 255, 1)"> 160rpx</span>;<span style="color: rgba(255, 0, 0, 1)">
left</span>:<span style="color: rgba(0, 0, 255, 1)"> 0</span>;<span style="color: rgba(255, 0, 0, 1)">
right</span>:<span style="color: rgba(0, 0, 255, 1)"> 0</span>;<span style="color: rgba(255, 0, 0, 1)">
bottom</span>:<span style="color: rgba(0, 0, 255, 1)"> 0</span>;<span style="color: rgba(255, 0, 0, 1)">
background-color</span>:<span style="color: rgba(0, 0, 255, 1)"> #8A6DE9</span>;<span style="color: rgba(255, 0, 0, 1)">
margin-left</span>:<span style="color: rgba(0, 0, 255, 1)"> 15rpx</span>;<span style="color: rgba(255, 0, 0, 1)">
margin-right</span>:<span style="color: rgba(0, 0, 255, 1)"> 15rpx</span>;
}</pre>
</div>
</div>
<div id="MySignature" role="contentinfo">
<p>本文来自博客园,作者:虚乄,转载请注明原文链接:https://www.cnblogs.com/lovejielive/p/14138611.html</p><br><br>
来源:https://www.cnblogs.com/lovejielive/p/14138611.html
頁:
[1]