码迷,mamicode.com
首页 > 其他好文 > 详细

Tab选项卡切换

时间:2016-05-07 08:37:02      阅读:227      评论:0      收藏:0      [点我收藏+]

标签:

Tab选项卡切换

基本代码

HTML代码:

    <div id="notice" class="notice">
        <!-- 标题-->
        <div id="notice-tit" class="notice-tit">
            <ul>
                <li><a href="#">公告</a></li>
                <li><a href="#">规则</a></li>
                <li><a href="#">论坛</a></li>
                <li><a href="#">安全</a></li>
                <li class="select"><a href="#">公益</a></li>
            </ul>
        </div>
        <!-- 内容-->
        <div id="notice-con" class="notice-con">
            <div class="mod" style="display: none">
                <ul>
                    <li><a href="#">张勇:要玩快乐足球</a></li>
                    <li><a href="#">阿里2000万驰援灾区!</a></li>
                    <li><a href="#">旅游宝让你边玩边赚钱</a></li>
                    <li><a href="#">多行跟进阿里信用贷款</a></li>
                </ul>
            </div>
            <div class="mod" style="display: none">
                <ul>
                    <li><a href="#"><span><a href="">[通知]</a></span>“滥发”即将换新</a></li>
                    <li><a href="#"><span><a href="">[通知]</a></span>比特币严管啦!</a></li>
                    <li><a href="#"><span><a href="">[通知]</a></span>禁发商品名录</a></li>
                    <li><a href="#"><span><a href="">[通知]</a></span>商品属性限制</a></li>
                </ul>
            </div>
            <div class="mod" style="display: none">
                <ul>
                    <li><a href="#">个人信息要严管</a></li>
                    <li><a href="#">个人信息要严管</a></li>
                    <li><a href="#">个人信息要严管</a></li>
                    <li><a href="#">个人信息要严管</a></li>
                </ul>
            </div>
            <div class="mod" style="display: none">
                <ul>
                    <li><a href="#">禁发商品名录</a></li>
                    <li><a href="#">禁发商品名录</a></li>
                    <li><a href="#">禁发商品名录</a></li>
                    <li><a href="#">禁发商品名录</a></li>
                </ul>
            </div>
            <div class="mod" style="display: block">
                <ul>
                    <li><a href="#">商品属性限制</a></li>
                    <li><a href="#">商品属性限制</a></li>
                    <li><a href="#">商品属性限制</a></li>
                    <li><a href="#">商品属性限制</a></li>
                </ul>
            </div>
        </div>
    </div>

css效果

*{
    margin: 0;
    padding: 0;
    list-style: none;
    font-size: 12px;
}

.notice{
    width: 298px;
    height: 98px;
    margin: 10px;
    border: 1px solid #eee;
    overflow: hidden;
}

.notice-tit{
    height: 27px;
    position: relative;
    background: #f7f7f7;
}

.notice-tit ul {
    position: absolute;
    width: 301px;//边框重合
    left: -1px;
}

.notice-tit ul li{
    float: left;
    width: 58px;
    height: 26px;
    padding: 0 1px;
    line-height: 26px;
    text-align: center;
    overflow: hidden;
    background: #f7f7f7;
    border-bottom: 1px solid #eee;
}

/*li选中的样式*/
.notice-tit ul li.select {
    background: #fff;
    border-bottom: 1px solid #fff;
    border-left: 1px solid #eee;
    border-right: 1px solid #eee;
    /*去除填充*/
    padding: 0;
    font-weight: bolder;
}

/*.notice-tit ul li a{*/
    /*display: block;*/
/*}*/

.notice ul li a:link, .notice-tit ul li a:visited{
    text-decoration: none;
    color: #000;
}

/*鼠标滑过颜色的变化*/
.notice ul li a:hover{
    color: #f90;
}

.notice-con .mod{
    margin: 10px 10px 10px 19px;
}

.notice-con .mod ul {
    overflow: hidden;
}

.notice-con .mod ul li{
    float: left;
    width: 134px;
    height: 25px;
    overflow: hidden;
}

效果如下:
技术分享

JS效果实现

当鼠标点击或者滑过时切换,JS代码如下:

function $(id) {
    return typeof id === ‘string‘ ? document.getElementById(id):id;
}
window.onload = function () {
    //获取鼠标滑过或点击的标签和要切换内容的元素
    var titles = $(‘notice-tit‘).getElementsByTagName(‘li‘);
    var divs = $(‘notice-con‘).getElementsByTagName(‘div‘);
    //alert(titles.length);
    //alert(divs.length);

    if(titles.length != divs.length){
        return;
    }

    //遍历titles下的所有的li
    for(var i=0; i < titles.length; i++){
        titles[i].id = i;
        titles[i].onmouseover = function () {
            //alert(this.id);
            //清除所有li上的class
            for(var j=0; j < titles.length;j++){
                titles[j].className = ‘‘;
                divs[j].style.display = ‘none‘;
            }
            //设置当前为高亮显示
            this.className = ‘select‘;
            divs[this.id].style.display = ‘block‘;
        }
    }

鼠标滑过延迟切换

window.onload = function () {
    //点击延迟加载
    var index = 0;
    var timer = null;
    var titles = $(‘notice-tit‘).getElementsByTagName(‘li‘);
    var divs = $(‘notice-con‘).getElementsByTagName(‘div‘);

    if(titles.length != divs.length){
        return;
    }

    //遍历titles下的所有的li
    for(var i=0; i < titles.length; i++){
        titles[i].id = i;
        titles[i].onclick = function () {
            //用that这个变量来引用当前滑过的li
            var that = this;
            //如果存在准备执行的定时器,立即清除
            if(timer){
                clearTimeout(timer);
                timer = null;
            }
            timer = setTimeout(function () {
                //清除所有li上的class
                for(var j=0; j < titles.length;j++){
                    titles[j].className = ‘‘;
                    divs[j].style.display = ‘none‘;
                }
                //this当前属于window对象
                titles[that.id].className = ‘select‘;
                divs[that.id].style.display = ‘block‘;
            },500);
        }
    }

}

自动切换

//自动切换
window.onload = function () {
    //当前高亮显示的页面的索引
    var index = 0;
    var timer = null;
    //获取所有的页签和要切换的内容
    var lis = $(‘notice-tit‘).getElementsByTagName(‘li‘);
    var divs = $(‘notice-con‘).getElementsByTagName(‘div‘);
    //遍历每一个叶签给它们绑定事件
    for(var i=0;i<lis.length;i++){
        lis[i].onmouseover = function () {
            index = this.id;
            clearInterval(timer);
            changeOption(this.id);
        }
        //鼠标离开事件
        lis[i].onmouseout = function () {
            //添加定时器,改变当前高亮的索引
            timer = setInterval(autoPlay,2000);
        }
    }
    //添加定时器,改变当前高亮的索引
    if(timer){
        clearInterval(timer);
        timer = null;
    }
    timer = setInterval(autoPlay,2000);

    //自动播放
    function autoPlay()
    {
        index++;
        if(index>=lis.length){
            index = 0;
        }
        changeOption(index);
    }

    function changeOption(curIndex){
        for(var j=0;j<lis.length;j++){
            lis[j].className = ‘‘;
            divs[j].style.display = ‘none‘;
        }
        //高亮显示
        lis[curIndex].className = ‘select‘;
        divs[curIndex].style.display = ‘block‘;
        index = curIndex;
    }

}

其它例子

折叠列表

HTML&CSS
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style type="text/css">
    *{margin:0;
     padding:0;
     font-size:13px;
     list-style:none;}

.menu{width:210px;
      margin:50px auto;
      border:1px solid #ccc;}

.menu p{height:25px;
        line-height:25px;
        font-weight:bold;
        background:#eee;
        border-bottom:1px solid #ccc;
        cursor:pointer;
        padding-left:5px;}

.menu div ul{display:none;}

.menu li{height:24px;
         line-height:24px;
         padding-left:5px;}
</style>
</head>
<body>
    <div class="menu" id="menu">
        <div>
            <p>Web前端</p>
            <ul style="display:block">
                <li>JavaScript</li>
                <li>DIV+CSS</li>
                <li>jQuery</li>
            </ul>
        </div>
        <div>
            <p>后台脚本</p>
            <ul>
                <li>PHP</li>
                <li>ASP.net</li>
                <li>JSP</li>
            </ul>
        </div>
        <div>
            <p>前端框架</p>
            <ul>
                <li>Extjs</li>
                <li>Esspress</li>
                <li>YUI</li>
            </ul>
        </div>
    </div>
</body>
</html>

JS代码

    <script type="text/javascript">
    window.onload=function(){

      // 将所有点击的标题和要显示隐藏的列表取出来
      var menu = document.getElementById(‘menu‘);
      var titles = menu.getElementsByTagName(‘p‘);
      var uls = menu.getElementsByTagName(‘ul‘);

     // 遍历所有要点击的标题且给它们添加索引及绑定事件
     for(var i=0;i<titles.length;i++){
         titles[i].id = i;
         titles[i].onclick=function(){
             var ul = uls[this.id];
             if(ul.style.display == ‘block‘){
                 ul.style.display = ‘none‘;
             }else{
                 ul.style.display = ‘block‘;
             }
         }
     }


    }
    </script>

焦点轮播图效果

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
  *{margin:0;
    padding:0;
    list-style:none;}
  .wrap{height:170px;
        width:490px;
        margin:60px auto;
        overflow: hidden;
        position: relative;
        margin:100px auto;}
  .wrap ul{position:absolute;} 
  .wrap ul li{height:170px;}
  .wrap ol{position:absolute;
           right:5px;
           bottom:10px;}
  .wrap ol li{height:20px; width: 20px;
              background:#ccc;
              border:solid 1px #666;
              margin-left:5px;
              color:#000;
              float:left;
              line-height:center;
              text-align:center;
              cursor:pointer;}
  .wrap ol .on{background:#E97305;
               color:#fff;}

  </style>
  <script type="text/javascript">
  window.onload=function(){
    var wrap=document.getElementById(‘wrap‘),
        pic=document.getElementById(‘pic‘),
        list=document.getElementById(‘list‘).getElementsByTagName(‘li‘),
        index=0,
        timer=null;

    if(timer){
        clearInterval(timer);
        timer = null;
    }
    timer = setInterval(autoPlay,2000);

      // 定义并调用自动播放函数
    function autoPlay()
    {
        index++;
        if(index>=list.length){
            index = 0;
        }
        changeOption(index);
    }
      // 定义图片切换函数
    function changeOption(curIndex){
        for(var i=0;i<list.length;i++){
            list[i].className=‘‘;
        }
        list[curIndex].className=‘on‘;
        pic.style.top = -170*curIndex+‘px‘; 
        index = curIndex;
    }

     // 鼠标划过整个容器时停止自动播放
     wrap.onmouseover = function(){
         if(timer){
             clearInterval(timer);
            timer = null;
         }
     }

     // 鼠标离开整个容器时继续播放至下一张
     wrap.onmouseout = function(){
            timer = setInterval(autoPlay,2000);

     }

     // 遍历所有数字导航实现划过切换至对应的图片
     for(var i=0;i<list.length;i++){
         list[i].id = i;
         list[i].onmouseover=function()
         {
             changeOption(this.id);
         }
     }


   }

  </script> 
</head>
<body>
  <div class="wrap" id=‘wrap‘>
    <ul id="pic">
      <li><img src="http://img.mukewang.com/54111cd9000174cd04900170.jpg" alt=""></li>
      <li><img src="http://img.mukewang.com/54111dac000118af04900170.jpg" alt=""></li>
      <li><img src="http://img.mukewang.com/54111d9c0001998204900170.jpg" alt=""></li>
      <li><img src="http://img.mukewang.com/54111d8a0001f41704900170.jpg" alt=""></li>
      <li><img src="http://img.mukewang.com/54111d7d00018ba604900170.jpg" alt=""></li>    
    </ul>
    <ol id="list">
      <li class="on">1</li>
      <li>2</li>
      <li>3</li>
      <li>4</li>
      <li>5</li>
    </ol>
  </div>
</body>
</html>

Tab选项卡切换

标签:

原文地址:http://blog.csdn.net/winfredzen/article/details/51318512

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!