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 相关文章推荐
Javascript 中介者模式实例
Dec 16 Javascript
JavaScript实现页面实时显示当前时间的简单实例
Jul 20 Javascript
jQuery图片轮播的具体实现
Sep 11 Javascript
javascript生成随机数的方法
May 16 Javascript
JavaScript中的类(Class)详细介绍
Dec 30 Javascript
js实现全国省份城市级联下拉菜单效果代码
Sep 07 Javascript
《JavaScript高级编程》学习笔记之object和array引用类型
Nov 01 Javascript
Angular.js中$apply()和$digest()的深入理解
Oct 13 Javascript
Javascript 实现计算器时间功能详解及实例(二)
Jan 08 Javascript
详解微信小程序开发之城市选择器 城市切换
Jan 17 Javascript
Vue 2.0 服务端渲染入门介绍
Mar 29 Javascript
如何使用vuex实现兄弟组件通信
Nov 02 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/10/09 PHP
谈谈新手如何学习PHP
2006/12/23 PHP
PHP编译安装中遇到的两个错误和解决方法
2014/08/20 PHP
php采用curl模仿登录人人网发布动态的方法
2014/11/07 PHP
php中mysql连接方式PDO使用详解
2015/02/25 PHP
PHP列出MySQL中所有数据库的方法
2015/03/12 PHP
ThinkPHP2.x防范XSS跨站攻击的方法
2015/09/25 PHP
PHP rsa加密解密算法原理解析
2020/12/09 PHP
取得一定长度的内容,处理中文
2006/12/20 Javascript
JavaScript初学者需要了解10个小技巧
2010/08/25 Javascript
JavaScript初学者应注意的七个细节小结
2012/01/30 Javascript
jquery miniui 教程 表格控件 合并单元格应用
2012/11/25 Javascript
js和jquery使按钮失效为不可用状态的方法
2014/01/26 Javascript
jQuery.parseJSON(json)将JSON字符串转换成js对象
2014/07/27 Javascript
jQuery 中$(this).index与$.each的使用指南
2014/11/20 Javascript
jQuery提示插件alertify使用指南
2015/04/21 Javascript
js实现控制textarea输入字符串的个数,鼠标按下抬起判断输入字符数
2016/10/25 Javascript
JS在浏览器中解析Base64编码图像
2017/02/09 Javascript
完美解决spring websocket自动断开连接再创建引发的问题
2017/03/02 Javascript
jQuery实现简单日期格式化功能示例
2017/09/19 jQuery
jQuery实现高度灵活的表单验证功能示例【无UI】
2020/04/30 jQuery
[06:04]DOTA2英雄梦之声Vol19卓尔游侠
2014/06/20 DOTA
[39:02]DOTA2亚洲邀请赛 3.31 小组赛 B组 Mineski vs VGJ.T
2018/04/01 DOTA
[48:27]EG vs Liquid 2018国际邀请赛淘汰赛BO3 第二场 8.25
2018/08/29 DOTA
Python实现拷贝多个文件到同一目录的方法
2016/09/19 Python
Python 爬虫之Beautiful Soup模块使用指南
2018/07/05 Python
python3使用matplotlib绘制条形图
2020/03/25 Python
python实现简单银行管理系统
2019/10/25 Python
python自动提取文本中的时间(包含中文日期)
2020/08/31 Python
制药工程专业毕业生推荐信
2013/12/24 职场文书
学校七一活动方案
2014/01/19 职场文书
运动会通讯稿150字
2014/02/15 职场文书
我有一个梦想演讲稿
2014/05/05 职场文书
体育委员竞选稿
2015/11/21 职场文书
CSS极坐标的实例代码
2021/06/03 HTML / CSS
基于PostgreSQL/openGauss 的分布式数据库解决方案
2021/12/06 PostgreSQL