Vue实现tab切换

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <script src="https://unpkg.com/vue"></script>
    <style>
        *{margin:0;padding:0;}
        body{padding:15px;}
        a{text-decoration: none;}
        ul{list-style:none;height:41px;}
        li{float:left;padding:10px;}
        #container div{height:300px;border:1px solid #0000ed;clear:both;}
        li.active{background:rgba(12,23,42,0.5);}
        li.active a{color:#fff;}
    </style>
</head>
<body>
<div id="container">
    <ul>
        <list-li v-for="(msg,index) in msgs" :msg="msg" :key="msg.id" :class="{ active:oks['ok'+msg.id]}"></list-li>
    </ul>
    <list-div v-if="ok" v-for="(ok,index) in oks" :ok="ok"  :index="index" :key="index"></list-div>
</div>

    <script>
        Vue.component('list-li',{
            props:['msg','oks'],
            template:'<li  @click="clickli(msg.id)" :mark="msg.id" ><a href="#">{{msg.text}}</a></li>',
            methods:{
                clickli:function(index){
                    for(let ok in vm.oks){
                        vm.oks[ok]=false;
                    }
                    vm.oks['ok'+index]=true;
                }
            }
        });
        Vue.component('list-div',{
            props:['ok','index'],
            template:'<div>{{index}}-{{ok}}</div>'
        });
        var vm=new Vue({
            el:'#container',
            data:{
                msgs:[
                    {id:1,text:'首页'},
                    {id:2,text:'详情页'},
                    {id:3,text:'产品页'},
                    {id:4,text:'联系我们'}
                ],
                oks:{
                    ok1:true,
                    ok2:false,
                    ok3:false,
                    ok4:false
                }
            }

        })
    </script>
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个简单的 Vue 实现 tab 切换的示例: ```html <template> <div class="tab-container"> <ul class="tab-nav"> <li v-for="(tab, index) in tabs" :key="index" :class="{ active: currentTab === index }" @click="currentTab = index">{{ tab.title }}</li> </ul> <div class="tab-content"> <div v-for="(tab, index) in tabs" v-show="currentTab === index" :key="index">{{ tab.content }}</div> </div> </div> </template> <script> export default { data() { return { currentTab: 0, tabs: [ { title: 'Tab 1', content: 'This is the content of Tab 1' }, { title: 'Tab 2', content: 'This is the content of Tab 2' }, { title: 'Tab 3', content: 'This is the content of Tab 3' } ] } } } </script> <style> .tab-container { display: flex; flex-direction: column; width: 500px; } .tab-nav { display: flex; list-style: none; margin: 0; padding: 0; } .tab-nav li { margin-right: 10px; padding: 5px; cursor: pointer; border: 1px solid #ccc; } .tab-nav li.active { background-color: #ccc; } .tab-content { border: 1px solid #ccc; padding: 10px; } </style> ``` 这个示例中,我们使用了一个 `currentTab` 变量来记录当前选中的 tab,然后使用 `v-for` 循环渲染出每个 tab 的标题和内容。标题部分使用一个 ul 和若干个 li 元素来展示,而内容部分则使用若干个 div 元素,并通过 `v-show` 指令来控制哪个内容块显示。在点击某个 tab 标题时,我们通过 `@click` 事件来更新 `currentTab` 的值,从而切换到对应的内容。 以上是一个简单的 Vue 实现 tab 切换的示例,你可以在此基础上根据自己的需求进行调整和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值