uniapp滑动切换tab标签_Vue 实现tab切换效果

利用Vue实现简易tab切换效果
1.1 在我们平时浏览网站的时候,经常看到的特效有图片轮播、导航子菜单的隐藏、tab标签的切换等等。这段时间学习了vue后,开始要写出一些简单的特效。
1.2 实现思路是点击上方的标题,下方的内容随之发生改变,上方和下方用的是两个块,是兄弟节点,所以需要点击tab标题和下方内容一一对应,基于两个模块若下标相同是一个内容实现的。
1.3     tab切换第一步先要把HTML写好,这个第一步很关键,主要分为两块结构
<div id="app">        <ul class="tab-tilte">            <li>标题一li>            <li>标题二li>            <li>标题三li>            <li>标题四li>        ul>        <div class="tab-content">            <div>内容一div>            <div>内容二div>            <div>内容三div>            <div>内容四div>        div>    div>

1.4     tab切换第二步写上对应的css样式

<style type="text/css">        ul li {            margin: 0;            padding: 0;            list-style: none;        }        #app {            width: 600px;            height: 400px;            margin: 0 auto;            border: 1px solid #ccc;        }        .tab-tilte{            width: 90%;        }        .tab-tilte li{            float: left;            width: 25%;            padding: 10px 0;            text-align: center;            background-color:#f4f4f4;            cursor: pointer;        }     /* 点击对应的标题添加对应的背景颜色 */        .tab-tilte .active{            background-color: #09f;            color: #fff;        }        .tab-content div{            float: left;            width: 25%;            line-height: 100px;            text-align: center;        }style>

1.5    tab切换第三步引入vue实现

<body>    <div id="app">        <ul class="tab-tilte">            <li @click="cur=0" :class="{active:cur==0}">标题一li>            <li @click="cur=1" :class="{active:cur==1}">标题二li>            <li @click="cur=2" :class="{active:cur==2}">标题三li>            <li @click="cur=3" :class="{active:cur==3}">标题四li>        ul>        <div class="tab-content">            <div v-show="cur==0">内容一div>            <div v-show="cur==1">内容二div>            <div v-show="cur==2">内容三div>            <div v-show="cur==3">内容四div>        div>    div>    <script src="./js/vue.js" type="text/javascript">script>    <script type="text/javascript">        var app = new Vue({            el: "#app",            data: {                cur:0 //默认选中第一个tab            }        });    script>body>

效果图:

eaaea557d12d4af5b9ad20869acd0c91.png

1.6tab切换效果改进与优化

(1) 以上代码看起来似乎很简单容易懂,而且效果也能实现,但不够灵活。我们可以发现如果标题和内容同时增多我们要不停的添加cur的索引值,因此我们有必要改进一下代码的写法。
(2)利用vue提供的v-for指令遍历得到索引和值 如下所示:

<div id="app">        <ul class="tab-tit">        <li v-for="(title,index) in tabTitle" @click="cur=index" :class="{active:cur==index}">{{title}}li>    ul>    <div class="tab-content">        <div v-for="(m,index) in tabMain" v-show="cur==index">{{m}}div>    div>div>    <script type="text/javascript">        window.onload = function(){           var app = new Vue({            el:'#app',            data:{                tabTitle: ['标题一', '标题二', '标题三', '标题四'],                tabMain: ['内容一', '内容二', '内容三', '内容四'],                cur: 0 //默认选中第一个tab            }        })    }script>

最终效果图如下:

c6820ccc9fa66e258eef9359e1458464.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值