js实现简单的tab切换案例

11 篇文章 0 订阅
效果如下

在这里插入图片描述
每点击就切换相应的页面

/*css*/
html ,body ,div ,ul ,li{
            padding: 0;
            margin: 0;
        }
        ul{
            list-style: none;
        }
        body{
            padding: 100px;
        }
        .tab .tab-h{
            height: 30px;
            width: 500px;
            position: relative;
            z-index: 2;
        }
        .tab .tab-h .tab-h-item{
            float: left;
            background-color: #eee;
            cursor: pointer;
            border: 1px solid #ccc;
        }
        .tab .tab-h li.active {
            border-bottom-color: white;
            color: red;
            background-color: white;
        }
        .tab .tab-h .tab-h-item  a{
            color: #333;
            text-decoration: none;
            width: 100px;
            display: block;
            line-height: 28px;
            text-align: center;
        }
        .tab .tab-b{
            width: 500px;
            border: 1px solid #ccc;
            position: relative;
            z-index: 1;
            top:-1px;
        }
        .tab-b-item{
            display: none;
            height: 300px;
        }
        .tab-b div.active{
            display: block;
        }
<!-- html部分 -->
<div class="tab">
    <div class="tab-h">
        <ul class="tab-h-list">
        <!-- index设置为0开始是为了让它的值作为页面显示div的索引值 -->
           <li index='0' class="tab-h-item active"><a href="javascript:void(0)">产品</a></li>
           <li index='1' class="tab-h-item"><a href="javascript:void(0)">用户</a></li>
           <li index='2' class="tab-h-item"><a href="javascript:void(0)">新闻</a></li>
           <li index='3' class="tab-h-item"><a href="javascript:void(0)">体育</a></li>
        </ul>
    </div>
    <div class="tab-b">
        <div index='0' class="tab-b-item active">页面1</div>
        <div index='1' class="tab-b-item">页面2</div>
        <div index='2' class="tab-b-item">页面3</div>
        <div index='3' class="tab-b-item">页面4</div>
    </div>
</div>
//js
var ulList=document.querySelector('.tab-h-list');
var liItem=ulList.querySelectorAll('li');
var divList=document.querySelector('.tab-b').querySelectorAll('div');
ulList.addEventListener('click',function(e){  //其实可以给这个func抽出来
    for(let i=0;i<liItem.length;i++){  //每次点击时都将所有内容class的active去掉
        liItem[i].className='tab-h-item';
        divList[i].className='tab-b-item';
    }
    var target=e.target;
    console.log(target);
    if(target==ulList){  //此处相当于是用了事件委托,免得要给每个子li元素绑定事件
        return ;
    }else if(target.href){
        let parentLi=target.parentElement;
        parentLi.className='tab-h-item active';
        console.log(parentLi.getAttribute('index')) ;
        divList[parseInt(parentLi.getAttribute('index'))].className='tab-b-item active';
    }
});
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单的 Vue 实现 tab切换的代码示例。 首先,需要在 Vue 实例中定义一个 data,用来存储当前选中的 tab: ```javascript new Vue({ el: '#app', data: { currentTab: 'tab1' }, methods: { selectTab(tab) { this.currentTab = tab } } }) ``` 然后,在 HTML 中使用 v-bind 和 v-on 指令来绑定数据和事件: ```html <div id="app"> <div class="tabs"> <div class="tab" :class="{ 'active': currentTab === 'tab1' }" @click="selectTab('tab1')">Tab 1</div> <div class="tab" :class="{ 'active': currentTab === 'tab2' }" @click="selectTab('tab2')">Tab 2</div> <div class="tab" :class="{ 'active': currentTab === 'tab3' }" @click="selectTab('tab3')">Tab 3</div> </div> <div class="tab-content"> <div class="tab-pane" v-show="currentTab === 'tab1'"> Content for tab 1 </div> <div class="tab-pane" v-show="currentTab === 'tab2'"> Content for tab 2 </div> <div class="tab-pane" v-show="currentTab === 'tab3'"> Content for tab 3 </div> </div> </div> ``` 在这个示例中,使用了 v-bind:class 指令来动态绑定 class,根据当前选中的 tab 判断是否添加 active 类名。同时使用了 v-on:click 指令来监听点击事件,并调用 selectTab 方法切换 tab。 最后,在 CSS 中定义样式: ```css .tabs { display: flex; } .tab { padding: 10px; cursor: pointer; } .tab.active { background-color: #ccc; } .tab-content { border: 1px solid #ccc; padding: 10px; } .tab-pane { display: none; } .tab-pane.show { display: block; } ``` 在这个示例中,使用了 display 属性来控制 tab 内容的显示,根据当前选中的 tab 判断是否显示。同时为 active 类名和 show 类名分别定义了样式,使得选中的 tab 和对应的内容高亮显示。 以上就是一个简单的 Vue 实现 tab切换的代码示例,希望对你有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值