js--tab懸浮切換+延時效果+自動輪播


<html>
<head>
    <title></title>
    <style type="text/css">
    *{
        margin:0;
        padding:0;
        list-style: none;
        font-size: 12px;
    }
    .notice{
        width:298px;
        height:98px;
        margin:10px;
        border:1px solid #7c7c7c;
        overflow: hidden;
    }
    .notice-tit{
        height:27px;
        background-color: #eaeaea;
        position:relative;
    }
    .notice-tit ul{
        position: absolute;
        width:300px;
        left:-1px;
    }
    .notice-tit ul li{
        float:left;
        width:58px;
        height:26px;
        line-height: 26px;
        text-align: center;
        border-bottom:1px solid #7c7c7c;
        padding:0 1px;
    }
    .notice-tit ul a{
        text-decoration: none;
        display:block;
    }
    .notice-tit ul .select{
        background-color: white;
        border-right:1px solid #7c7c7c;
        border-left:1px solid #7c7c7c;
        border-bottom: 1px solid white;
        padding:0;
    }
    </style>
</head>
<body>
    <div class="notice">
        <div id="notice-tit" class="notice-tit">
            <ul>
                <li class="select"><a href="#">公告</a></li>
                <li><a href="#">規則</a></li>
                <li><a href="#">論壇</a></li>
                <li><a href="#">安全</a></li>
                <li><a href="#">公益</a></li>
            </ul>
        </div>
        <div class="notice-con" id="notice-con">
            <div style="display: block;">我是內容1</div>
            <div style="display: none;">我是內容2</div>
            <div style="display: none;">我是內容3</div>
            <div style="display: none;">我是內容4</div>
            <div style="display: none;">我是內容5</div>
        </div>
    </div>
 
    <script type="text/javascript">
        //獲取id封裝成一個函數$()方便調用
        function $(id) {
            //如果傳入的參數類型爲字符串則獲取當前ID元素,否則返回id
            return typeof id==="string"?document.getElementById(id):id;
        }
        //聲明 索引index,兩個變量來裝定時器,一個輪播定時器,一個延時定時器
            var index=0,timer=null,timer2=null;
            var titles=$('notice-tit').getElementsByTagName('li');
            var divs=$('notice-con').getElementsByTagName('div');
        function common(args){
            for(var i=0;i<titles.length;i++){
                titles[i].className="";
                divs[i].style.display="none";
            }
            titles[args].className="select";
            divs[args].style.display="block";
        }
        function tab(){
            for(var j=0;j<titles.length;j++){
                //給每個li設置ID
                titles[j].id=j;
                //給每個li綁定懸浮事件
                titles[j].onmouseover=function(){
                    //懸浮時首先清除延時定時器
                    clearInterval(timer);
                    //清除輪播定時器
                    clearTimeout(timer2);
                    //初始化兩個定時器
                    timer2=null;
                    timer=null;
                    //this的一個引用,因爲在setTimeout中this指向window對象
                    var that=this;
                    //創建一個延時定時器
                    timer2=setTimeout(function(){
                        common(that.id);
                        //鼠標懸浮時改變index的值爲當前的id
                        index=that.id;
                    },500);
                }
                //給每個Li綁定鼠標離開事件
                titles[j].onmouseout=function(){
                    //創建一個輪播定時器,離開時輪播能繼續進行,因爲上面設置了index=that
                    //所以鼠標離開後會自動播放下一個tab
                    timer=setInterval(function(){
                        index++;
                        if(index>=titles.length){
                            index=0;
                        }
                        common(index);
                    },2000);
                }
            }
            //創建之前看是否存在輪播定時器,有就清除掉
            if(timer){
                clearInterval(timer);
                timer=null;
            }
            //創建一個輪播定時器
            timer=setInterval(function(){
                index++;
                if(index>=titles.length){
                    index=0;
                }
                common(index);
            },2000);
        }
        tab();
    </script>
</body>

</html>


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章