js tab栏切换代码实例解析


Posted in Javascript onSeptember 03, 2019

今天机试有个内容是做网易云课堂tab栏切换的,如下

js tab栏切换代码实例解析

先简单说下我当时的想法

1.先弄一个大div盒子,我命名为tab

2.在大盒子tab里面有两个小盒子,分别是标题栏(tab_list)和内容栏(tab_con)

3.采用display:flex;使标题栏菜单和内容栏的内容水平对齐(可能待会放的代码不是很规范,但实现对齐效果)

4.js编写鼠标移入事件,主要是利用display:none和display:block之间的切换。

下面放下我当时写的代码吧,可能写得不是很正规,不符合习惯,请大家见谅

由于代码太多分几部分说

HTML部分——大致布局,标题栏和内容栏

<div class="tab">
    <div class="tab_list">
      <ul>
        <li class="active" >今日 20:00开抢</li>
        <li>明天 10:00开抢</li>
        <li>明天 14:00开抢</li>
        <li>明天 20:00开抢</li>
        <li>后天 10:00</li>
        <li>后天 14:00</li>
      </ul>
    </div>
    <div class="tab_con">
      <div class="item" style="display: block">
      </div>
      <div class="item">        
      </div>
      <div class="item">        
       </div>
      <div class="item">        
        </div>
      <div class="item">        
       </div>
      <div class="item">        
        </div>


    </div>
  </div>

部分内容区item区域的HTML代码,基本差不多

<div class="item" style="display: block">
        <div class="box">
          <div class="product">
            <a><img src="img/pic1.png"/></a>
            <div class="price" >
              <h3>javascript课程</h3>
              <h5>妙学堂</h5>
              <p>
                <span style="color: red;font-size: 16px;">¥49.9</span>
                <span style="text-decoration:line-through ;font-size: 10px;">¥1600</span>
                <span style="border: 3px gainsboro dashed;margin-left: 55px;font-size: 16px;">即将开抢</span>
              </p>
            </div>
          </div>
          <div class="product">
            <a><img src="img/pic1.png"/></a>
            <div class="price" >
            <h3>javascript课程</h3>
              <h5>妙学堂</h5>
              <p>
                <span style="color: red;font-size: 16px;">¥49.9</span>
                <span style="text-decoration:line-through ;font-size: 10px;">¥1600</span>
                <span style="border: 3px gainsboro dashed;margin-left: 55px;font-size: 16px;">即将开抢</span>
              </p>
            </div>
          </div>
          <div class="product">
            <a><img src="img/pic1.png"/></a>
            <div class="price" >
            <h3>javascript课程</h3>
              <h5>妙学堂</h5>
              <p>
                <span style="color: red;font-size: 16px;">¥49.9</span>
                <span style="text-decoration:line-through ;font-size: 10px;">¥1600</span>
                <span style="border: 3px gainsboro dashed;margin-left: 55px;font-size: 16px;">即将开抢</span>
              </p>
            </div>
          </div>
          <div class="product">
            <a><img src="img/pic1.png"/></a>
            <div class="price" >
            <h3>javascript课程</h3>
              <h5>妙学堂</h5>
              <p>
                <span style="color: red;font-size: 16px;">¥49.9</span>
                <span style="text-decoration:line-through ;font-size: 10px;">¥1600</span>
                <span style="border: 3px gainsboro dashed;margin-left: 55px;font-size: 16px;">即将开抢</span>
              </p>
            </div>
          </div>
          <div class="product">
            <a><img src="img/pic1.png"/></a>
            <div class="price" >
            <h3>javascript课程</h3>
              <h5>妙学堂</h5>
              <p>
                <span style="color: red;font-size: 16px;">¥49.9</span>
                <span style="text-decoration:line-through ;font-size: 10px;">¥1600</span>
                <span style="border: 3px gainsboro dashed;margin-left: 55px;font-size: 16px;">即将开抢</span>
              </p>
            </div>
          </div>       
        </div>
      </div>

CSS部分

.tab{
     width: 100%;
     height: 300px;
     text-align: center;
     
     margin: 10px auto;
     background-color: ghostwhite;
   }
   .tab_list ul{
     display: flex;
     height: 50px;
     margin: 0 auto;
     padding: 0;     
   }
   .tab li{
     
     list-style: none;
     height: 50px;
     line-height: 50px;
     flex:auto;     
   }

   .tab_list .active{
     background-color: red;
     color: #ffffff;
   }
   .tab_con{
     margin: 10px auto;
     width: 100%;
     height: 200px;
     
   }
   .item{
     display: none;
   }
   .box{
     display: flex;
   }
   .product{
     
     flex: auto;
   }
   .product img{
     width: 220px;
     height: 120px;       
   }
    .price{
      position: relative;
     
     width: 220px;
     height: 80px;
   } 
   .price p{
     margin: 0px;
     left: 0px;
     position: absolute;
   }

JS部分

<script>
    var tab_list=document.querySelector('.tab_list');
    var lis=tab_list.querySelectorAll('li');
    var items=document.querySelectorAll('.item');
    for(var i=0;i<lis.length;i++){
      lis[i].setAttribute('index',i);

      lis[i].onmouseover=function(){
        for(var i=0;i<lis.length;i++){
          lis[i].className='';
        }

        this.className='active';
        var index=this.getAttribute('index');
        console.log(index);
        for(var i=0;i<items.length;i++){
          items[i].style.display='none';
        }
        items[index].style.display='block';      
      }
    }
  </script>

最终我的效果如下

js tab栏切换代码实例解析

不是很相像,但还算过得去。。。。。。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
prototype 源码中文说明之 prototype.js
Sep 22 Javascript
原生js实现查找/添加/删除/指定元素的class
Apr 12 Javascript
JS操作数据库的实例代码
Oct 17 Javascript
jQuery调取jSon数据并展示的方法
Jan 29 Javascript
JavaScript数据类型之基本类型和引用类型的值
Apr 01 Javascript
Jquery实现简单的轮播效果(代码管用)
Mar 14 Javascript
Window.Open打开窗体和if嵌套代码
Apr 15 Javascript
JS FormData上传文件的设置方法
Jul 05 Javascript
JS回调函数 callback的理解与使用案例分析
Sep 09 Javascript
layui实现二维码弹窗、并下载到本地的方法
Sep 25 Javascript
Vue实现push数组并删除的例子
Nov 01 Javascript
js+cavans实现图片滑块验证
Sep 29 Javascript
解决layui 三级联动下拉框更新时回显的问题
Sep 03 #Javascript
Node.js学习教程之Module模块
Sep 03 #Javascript
vue动态绘制四分之三圆环图效果
Sep 03 #Javascript
微信小程序拼接图片链接无底洞深入探究
Sep 03 #Javascript
layui radio单选限制下一个radio单选的实例
Sep 03 #Javascript
JavaScript Array对象基本方法详解
Sep 03 #Javascript
微信小程序通过一个json实现分享朋友圈图片
Sep 03 #Javascript
You might like
PHP面向对象编程快速入门
2006/12/14 PHP
详解php中生成标准uuid(guid)的方法
2019/04/28 PHP
js 限制input只能输入数字、字母和汉字等等
2013/12/18 Javascript
jQuery实现的Div窗口震动特效
2014/06/09 Javascript
使用delegate方法为一个tr标签加一个链接
2014/06/27 Javascript
使用vue.js开发时一些注意事项
2016/04/27 Javascript
vue项目打包部署_nginx代理访问方法详解
2018/09/20 Javascript
微信小程序map组件结合高德地图API实现wx.chooseLocation功能示例
2019/01/23 Javascript
js array数组对象操作方法汇总
2019/03/18 Javascript
ES6 Array常用扩展的应用实例分析
2019/06/26 Javascript
layUI实现三级导航菜单效果
2019/07/26 Javascript
layui实现根据table数据判断按钮显示情况的方法
2019/09/26 Javascript
vue 微信分享回调iOS和安卓回调出现错误的解决
2020/09/07 Javascript
vue 如何从单页应用改造成多页应用
2020/10/23 Javascript
[04:27]2014DOTA2国际邀请赛 NAVI战队官方纪录片
2014/07/21 DOTA
使用python开发vim插件及心得分享
2014/11/04 Python
Windows和Linux下使用Python访问SqlServer的方法介绍
2015/03/10 Python
Python学习教程之常用的内置函数大全
2017/07/14 Python
Python logging管理不同级别log打印和存储实例
2018/01/19 Python
基于Python中numpy数组的合并实例讲解
2018/04/04 Python
Python之列表的插入&amp;替换修改方法
2018/06/28 Python
Django logging配置及使用详解
2019/07/23 Python
Python实现钉钉订阅消息功能
2020/01/14 Python
基于django 的orm中非主键自增的实现方式
2020/05/18 Python
python软件都是免费的吗
2020/06/18 Python
Python 没有main函数的原因
2020/07/10 Python
python 利用zmail库发送邮件
2020/09/11 Python
通过实例解析Python文件操作实现步骤
2020/09/21 Python
python爬虫构建代理ip池抓取数据库的示例代码
2020/09/22 Python
Crocs欧洲官网:Crocs Europe
2020/01/14 全球购物
小区停车场管理制度
2014/01/27 职场文书
公司司机岗位职责范本
2014/03/03 职场文书
学生会部长竞选稿
2015/11/19 职场文书
二年级数学教学反思
2016/02/16 职场文书
党组织关系的介绍信模板
2019/06/21 职场文书
「月刊Comic Alive」2022年5月号封面公开
2022/03/21 日漫