vue实现选项卡效果

html:

    <body>  
        <div id="app" class="box">  
            <ul class="tabs clearfix">  
                <li v-for="(tab,index) in tabsName">  
                    <a href="#" class="tab-link" @click="tabsSwitch(index)" v-bind:class="{active:tab.isActive}">{{tab.name}}</a>  
                </li>  
            </ul>  
  
            <div class="cards">  
                <div class="tab-card" style="display: block;">这里是HTML教程</div>  
                <div class="tab-card">欢迎来到CSS模块</div>  
                <div class="tab-card">嗨,这里是Vue</div>  
            </div>  
        </div>  
    </body> 

js:

export default {
    data() {  
                tabsName: [{  
                    name: "HTML",  
                    isActive: true  
                }, {  
                    name: "CSS",  
                    isActive: false  
                }, {  
                    name: "Vue",  
                    isActive: false  
                }],  
                active: false  
            },  
            methods: {  
                tabsSwitch: function(tabIndex) {  
  
                    var tabCardCollection = document.querySelectorAll(".tab-card"),  
                        len = tabCardCollection.length;  
  
                    for(var i = 0; i < len; i++) {  
                        tabCardCollection[i].style.display = "none";  
                        this.tabsName[i].isActive = false;  
                    }  
                    this.tabsName[tabIndex].isActive = true;  
                    tabCardCollection[tabIndex].style.display = "block";  
                }  
            } 
}

css:

    <style>  
        * {  
            padding: 0;  
            margin: 0;  
        }  
          
        .box {  
            width: 800px;  
            height: 200px;  
            margin: 0 auto;  
            border: 1px solid #000;  
        }  
          
        .tabs li {  
            float: left;  
            margin-right: 8px;  
            list-style: none;  
        }  
          
        .tabs .tab-link {  
            display: block;  
            width: 250px;  
            height: 49px;  
            text-align: center;  
            line-height: 49px;  
            background-color: #5597B4;  
            color: #fff;  
            text-decoration: none;  
        }  
          
        .tabs .tab-link.active {  
            height: 47px;  
            border-bottom: 2px solid #E35885;  
            transition: .3s;  
        }  
          
        .cards {  
            float: left;  
        }  
          
        .cards .tab-card {  
            display: none;  
        }  
          
        .clearfix:after {  
            content: "";  
            display: block;  
            height: 0;  
            clear: both;  
        }  
          
        .clearfix {  
            zoom: 1;  
        }  
    </style>  

查看原文请点击

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 180,276评论 25 708
  • 兜了好几天的圈子,跟不同的人聊天,看到的生活方式也各不相同。我们总归是不需要所有都去理解,只是知道,里外各不...
    jelly_阅读 376评论 0 0
  • 背景音:当那一轮红日从遥远的地平线上升起,我们每个人都开始了崭新的一天。这空白的一天,正等着我们去用知识书写。匆匆...
    YUEHX阅读 601评论 0 0
  • 这本书我听了4遍,每一次都有不一样的学习收获,第一次听的时候,对作者时间管理和7个人物目标设定很佩服。第二次听的时...
    Alpenliebe520阅读 238评论 0 3
  • 春色嗾人狂 斑驳的城墙 失了忠孝礼义的肃穆之气 一层,一层 凌乱的字迹在诉说 谁与谁 戚戚终凄凄 爱如此短 三言两...
    岑子辛阅读 476评论 0 0

友情链接更多精彩内容