tab選項卡在鼠標經過時實現切換延遲

  偶然間在瀏覽網頁時,發現這樣的效果。當鼠標不經意間滑過tab時並不會切換,當鼠標停留在上面一段時候後纔會切換。

  個人覺得用戶體驗不錯,優點是1.當用戶只是滑過標籤,並不需要切換,而此時如果切換標籤需要請求數據時,會避免不必要的異步請求;2.避免頁面在用戶不需要的時候切換跳動,影響用戶體驗。

  網上查閱了幾個方法,發現下面的方法更簡潔有效。整理下來,供以後參考。

  其中的重點是那段js代碼:原理是,通過hover的時候設置定時器,延遲執行切換方法,離開時,清楚計時器。當hover的時間小於延遲時間時,會清楚計時器,不會執行切換方法。僅當停留時間大於延遲時間纔會切換。這樣能有效避免滑過tab觸發切換事件。

複製代碼

<!DOCTYPE html><html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <script type="text/javascript" src="js/jquery.1.11.3.min.js"></script>
        <script>
            $(function() {                var t_li = $(".tab")                var c_li = $(".tab-content div")
                t_li.hover(function() {                    var i = t_li.index($(this));                    function way() {
                        t_li.removeClass("cur").eq(i).addClass("cur");
                        c_li.hide().eq(i).show();
                    }
                    timer = setTimeout(way, 500);
                }, function() {
                    clearTimeout(timer);
                });
            });        </script>
        <style>
            .head {
                width: 300px;
                height: 51px;
                border: 1px dashed #ccc;
            }
            
            .tab {
                width: 50%;
                float: left;
                line-height: 50px;
                cursor: pointer;
            }
            
            .cur {
                border-bottom: 2px solid red;
            }
        </style>
    </head>
    <body>
        <div style="width: 300px;margin-left: 300px;" class="main">
            <div class="head">
                <div class="tab cur">tab1</div>
                <div class="tab">tab2</div>
            </div>
            <div class="tab-content">
                <div>tab1的內容<br>tab1的內容<br>tab1的內容<br></div>
                <div style="display: none;">tab2的內容<br>tab2的內容<br>tab2的內容<br></div>
            </div>
        </div>
    </body></html>

複製代碼

 


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