欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

基于Vue.js的二级选项卡(v-for的循环嵌套)(点击横向的选项tab,在纵向显示tab的子选项tabchild,在右边显示子选项卡对应的内容)

程序员文章站 2023-12-25 18:22:09
...

效果:点击横向的选项tab,在纵向显示tab的子选项tabchild,在右边显示子选项卡对应的内容
基于Vue.js的二级选项卡(v-for的循环嵌套)(点击横向的选项tab,在纵向显示tab的子选项tabchild,在右边显示子选项卡对应的内容)
准备HTML

 <style>
        *{
            padding: 0;
            margin: 0;
        }
        .box{
            width: 100%;
            height: 100%;
            position: relative;
        }
        .tabul{
            width: 100%;
            margin: 0 auto;
            overflow: auto;
            position: fixed;
            top: 0;
            left: 0;
            right: 0;
            z-index: 100;
        }
        .tabul ul{
            list-style: none;
            background-color: rgb(57, 57, 219);
        }
        .tabul ul li{
            display: inline-block;
            padding: 0 20px;
            height: 65px;
            line-height: 65px;
            color: #ffffff;
            cursor: pointer;
        }
        .tabul ul li:hover{
            background-color:darkblue;
        }
        .active{
            background-color: darkblue;
        }
        .active1{
            background-color: aquamarine;
        }
        .tabcont{
            padding: 20px;
            position: absolute;
            left: 220px;
            top: 65px;
            right: 0;
            z-index: 100;
        }
        .tabcontent{
            display: none;
        }
        .tableft{
            width: 220px;
            position: fixed;
            bottom: 0;
            top: 65px;
            left: 0;
            background-color: darkcyan;
            z-index: 99;
        }
        .tableft ul{
            list-style: none;
            overflow-y: auto;
        }
        .tableft ul li{
            height: 60px;
            line-height: 60px;
            text-align: left;
            padding: 0 15px;
            color: #ffffff;
            
        }
        .tableft ul li span{
            display: block;
        }
        .isShow{
            display: block;
        }
        .hidden{
            display: none;
        }
    </style>
<div id="demo">
        <div class="box">
            <!-- tab -->
            <div class="tabul">
                <ul>
                	<!--横向父级选项卡-->
                    <li  :class="currentId==index?'active':' '"  v-for="(item, index) in lists" :key="index" @click='handle(index)'>{{item.tabname}}</li>         
                </ul>
            </div>
            <div class="tableft">
            		<!--纵向子级选项卡-->
                <ul :class="currentId == index ?'isShow':'hidden'" v-for="(item, index) in lists" :key="index">
                    <li :class="currentID2 == index ?'active1':' '" v-for="(itemc, index) in item.tabchild" :key="itemc.id"  @click='handleChild(index)'>
                        {{itemc.tagname}}      
                    </li>
                </ul>
            </div>
            <!-- tabcont -->
            <!--子级内容-->
            <div class="tabcont" :class="currentID2 == index ? 'isShow':'hidden' " v-for="(item, index) in lists" :key="index">
                <div class="tabcontent" :id="index" :class="currentID2 == index ?'isShow':''" v-for="(itemc, index) in item.tabchild" :key="itemc.id"> 
                    {{itemc.tabcont}}
                </div>              
            </div>
        </div>
    </div>
    <script>
        const vm = new Vue({
            el:'#demo',
            data:{
                currentId:0,
                currentID2:0,
                lists:[ //准备的假数据
                    {
                        id:1,
                        tabname:'tab1',
                        tabchild:[
                            {
                                id:1,
                                tagname:'tab1child1',
                                tabcont:'1loremloremloremloremloremloremloremloremloremlorem'
                            },
                            {
                                id:2,
                                tagname:'tab1child2',
                                tabcont:'2loremloremloremloremloremloremloremloremloremlorem'
                            },
                            {
                                id:3,
                                tagname:'tab1child3',
                                tabcont:'3loremloremloremloremloremloremloremloremloremlorem'
                            },
                            {
                                id:4,
                                tagname:'tab1child4',
                                tabcont:'4loremloremloremloremloremloremloremloremloremlorem'
                            },
                            {
                                id:5,
                                tagname:'tab1child5',
                                tabcont:'5loremloremloremloremloremloremloremloremloremlorem'
                            }
                        ]
                    },
                    {
                        id:2,
                        tabname:'tab2',
                        tabchild:[
                            {
                                id:1,
                                tagname:'tab2child1',
                                tabcont:'1loremloremloremloremloremloremloremloremloremlorem'
                            },
                            {
                                id:2,
                                tagname:'tab2child2',
                                tabcont:'2loremloremloremloremloremloremloremloremloremlorem'
                            },
                            {
                                id:3,
                                tagname:'tab2child3',
                                tabcont:'3loremloremloremloremloremloremloremloremloremlorem'
                            },
                            {
                                id:4,
                                tagname:'tab2child4',
                                tabcont:'4loremloremloremloremloremloremloremloremloremlorem'
                            },
                            {
                                id:5,
                                tagname:'tab2child5',
                                tabcont:'5loremloremloremloremloremloremloremloremloremlorem'
                            }
                        ]
                    },
                    {
                        id:3,
                        tabname:'tab3',
                        tabchild:[
                            {
                                id:1,
                                tagname:'tab3child1',
                                tabcont:'1loremloremloremloremloremloremloremloremloremlorem'
                            },
                            {
                                id:2,
                                tagname:'tab3child2',
                                tabcont:'2loremloremloremloremloremloremloremloremloremlorem'
                            },
                            {
                                id:3,
                                tagname:'tab3child3',
                                tabcont:'3loremloremloremloremloremloremloremloremloremlorem'
                            }
                        ]
                    },
                    {
                        id:4,
                        tabname:'tab4',
                        tabchild:[
                            {
                                id:1,
                                tagname:'tab4child1',
                                tabcont:'1loremloremloremloremloremloremloremloremloremlorem'
                            },
                            {
                                id:2,
                                tagname:'tab4child2',
                                tabcont:'2loremloremloremloremloremloremloremloremloremlorem'
                            },
                            {
                                id:3,
                                tagname:'tab4child3',
                                tabcont:'3loremloremloremloremloremloremloremloremloremlorem'
                            },
                            {
                                id:4,
                                tagname:'tab4child4',
                                tabcont:'4loremloremloremloremloremloremloremloremloremlorem'
                            }
                            
                        ]
                    },
                    {
                        id:5,
                        tabname:'tab5',
                        tabchild:[
                            {
                                id:1,
                                tagname:'tab5child1',
                                tabcont:'1loremloremloremloremloremloremloremloremloremlorem'
                            },
                            {
                                id:2,
                                tagname:'tab5child2',
                                tabcont:'2loremloremloremloremloremloremloremloremloremlorem'
                            },
                            {
                                id:3,
                                tagname:'tab5child3',
                                tabcont:'3loremloremloremloremloremloremloremloremloremlorem'
                            },
                            {
                                id:4,
                                tagname:'tab5child4',
                                tabcont:'4loremloremloremloremloremloremloremloremloremlorem'
                            },
                            {
                                id:5,
                                tagname:'tab5child5',
                                tabcont:'5loremloremloremloremloremloremloremloremloremlorem'
                            }
                        ]
                    },
                    {
                        id:6,
                        tabname:'tab6',
                        tabchild:[
                            {
                                id:1,
                                tagname:'tab6child1',
                                tabcont:'1loremloremloremloremloremloremloremloremloremlorem'
                            }
                        ]
                    },
                    {
                        id:7,
                        tabname:'tab7',
                        tabchild:[
                            {
                                id:1,
                                tagname:'tab7child1',
                                tabcont:'1loremloremloremloremloremloremloremloremloremlorem'
                            },
                            {
                                id:2,
                                tagname:'tab7child2',
                                tabcont:'2loremloremloremloremloremloremloremloremloremlorem'
                            },
                            {
                                id:3,
                                tagname:'tab7child3',
                                tabcont:'3loremloremloremloremloremloremloremloremloremlorem'
                            },
                            {
                                id:4,
                                tagname:'tab7child4',
                                tabcont:'4loremloremloremloremloremloremloremloremloremlorem'
                            },
                            {
                                id:5,
                                tagname:'tab7child5',
                                tabcont:'5loremloremloremloremloremloremloremloremloremlorem'
                            }
                        ]
                    }
                ]
            },
            methods: {
                handle:function(index){
                    this.currentId = index
                },
                handleChild:function(index){
                    this.currentID2 = index
                }
            },
        })
    </script>
相关标签: Vue 效果

上一篇:

下一篇: