JQuery實現二級菜單宵荒,stop方法分析

效果圖

完整效果圖

一、HTML

    <div class="wrapper">
        <ul class="nav">
            <li>
                <a href="#">明星</a>
                <ul class="detail">
                    <li><a href="#">胡歌</a></li>
                    <li><a href="#">黃曉明</a></li>
                    <li><a href="#">馬思純</a></li>
                </ul>
            </li>
            <li>
                <a href="#">演員</a>
                <ul class="detail">
                    <li><a href="#">李幼斌</a></li>
                    <li><a href="#">何冰</a></li>
                    <li><a href="#">胡軍</a></li>
                </ul>
            </li>
            <li>
                <a href="#">歌手</a>
                <ul class="detail">
                    <li><a href="#">蔡徐坤</a></li>
                    <li><a href="#">吳亦凡</a></li>
                    <li><a href="#">鹿晗</a></li>
                </ul>
            </li>
        </ul>
    </div>

二净嘀、CSS

CSS沒有什么报咳,只需要稍微關注一下提到的細節(jié)點就行了。

        * {margin: 0px;padding: 0px;}
        
        ul {list-style-type: none;}
        
        a {text-decoration: none;color: black;}

        .wrapper {width: 300px;}

        .wrapper ul.nav::after {
            content: "";
            display: block;
            clear: both;
        }

        .wrapper ul li {
            height: 30px;
            /*  此處height是功能實現的關鍵挖藏,固定高度height==line-hieght使得:
             *  當ul.detail display時呈現overflow效果暑刃,不會額外占據地方,不會將wrapper撐大膜眠,
             */
            float: left;
            text-align: center;
            font-size: 14px;
            width: 100px;
            line-height: 30px;
            background-color: rgb(88, 187, 190);
            cursor: pointer;
        }

        .wrapper ul li:hover{color: white;}

        .wrapper ul li ul.detail {display: none;}

        .wrapper ul li ul li {background-color: rgb(129, 221, 224);}

        .wrapper ul li ul li:hover {background-color: rgb(178, 246, 248);}

細節(jié)點:

  • 一級菜單是float:left稍走,因此需要使用偽元素after清除浮動流;
  • .wrapper ul li 需要設置 height==line-height 柴底,使得當二級菜單顯示時不會講wrapper撐大婿脸,導致影響到后續(xù)元素的位置;固定height使得顯示的二級菜單成為overflow的那部分柄驻;效果對比如下:
    • height == line-height == 30px


      height == line-height == 30px
    • height未指定狐树,line-height==30px


      height未指定,line-height==30px

三鸿脓、JQuery

    <script src="http://libs.baidu.com/jquery/1.7.1/jquery.min.js"></script>
    <script>
        $(function () {
            // stop很重要抑钟,試驗了好久.......這種寫法算是比較滿意的動畫效果
            $("div ul.nav>li").mouseenter(function () {
                $(this).find(".detail").stop(true, true)
                    .show("fast");
            }).mouseleave(function () {
                $(this).find(".detail").hide("fast");
            })
        });
    </script>

重點:

  • JQuery中動畫隊列的消除涯曲,stop方法的應用;
    • 直接使用不帶參數在塔,stop()方法會結束當前正字啊進行的動畫幻件,并立即執(zhí)行隊列中的下一個動畫。
    • stop()方法有兩個參數蛔溃,第一個參數clearQueue绰沥,將其設置為true,則會將當前元素接下來的尚未執(zhí)行完的動畫隊列都清空贺待。
    • 第二個參數gotoEnd徽曲,將其設置為true,可以用于讓正在執(zhí)行的動畫直接到達結束時刻的狀態(tài)麸塞,通常用于后一個動畫需要基于前一個動畫的末狀態(tài)的情況秃臣。
  • 網上很多代碼的處理都是直接使用.stop().show("fast")以及.stop().hide("fast")但是在我暴力測試之下發(fā)現 有致命bug:在緩慢情況下能正常使用,在快速劃過時會出錯哪工。
    stop()+stop()
  • 那么.stop().show("fast")+.hide("fast")呢奥此? 實驗表明也會有bug
    stop()+null
  • 那么.stop(true).show("fast")+.stop(true).hide("fast")呢?有bug
    .stop(true)+.stop(true)
  • 那么.stop(true).show("fast")+.hide("fast")呢雁比?有bug
    .stop(true)+null
  • 等等等等稚虎、、章贞、后續(xù)的就不在測試了..
  • 最后我得到的最佳方法就是.stop(true,true).show("fast")+.hide("fast"),效果最佳祥绞,無bug
    .stop(true,true)+null

完整代碼:鏈接:https://pan.baidu.com/s/1BavI1UGR_PzUPMernS4xmg 提取碼:f0oa

本文為作者原創(chuàng),未經允許鸭限,不得轉載蜕径,違者必究!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末败京,一起剝皮案震驚了整個濱河市兜喻,隨后出現的幾起案子,更是在濱河造成了極大的恐慌赡麦,老刑警劉巖朴皆,帶你破解...
    沈念sama閱讀 217,185評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異泛粹,居然都是意外死亡遂铡,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 92,652評論 3 393
  • 文/潘曉璐 我一進店門晶姊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來扒接,“玉大人,你說我怎么就攤上這事〖卣” “怎么了碱呼?”我有些...
    開封第一講書人閱讀 163,524評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長宗侦。 經常有香客問我愚臀,道長,這世上最難降的妖魔是什么矾利? 我笑而不...
    開封第一講書人閱讀 58,339評論 1 293
  • 正文 為了忘掉前任姑裂,我火速辦了婚禮,結果婚禮上梦皮,老公的妹妹穿的比我還像新娘炭分。我一直安慰自己桃焕,他們只是感情好剑肯,可當我...
    茶點故事閱讀 67,387評論 6 391
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著观堂,像睡著了一般让网。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上师痕,一...
    開封第一講書人閱讀 51,287評論 1 301
  • 那天溃睹,我揣著相機與錄音,去河邊找鬼胰坟。 笑死因篇,一個胖子當著我的面吹牛,可吹牛的內容都是我干的笔横。 我是一名探鬼主播竞滓,決...
    沈念sama閱讀 40,130評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼吹缔!你這毒婦竟也來了商佑?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,985評論 0 275
  • 序言:老撾萬榮一對情侶失蹤厢塘,失蹤者是張志新(化名)和其女友劉穎茶没,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體晚碾,經...
    沈念sama閱讀 45,420評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡抓半,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,617評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了格嘁。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片笛求。...
    茶點故事閱讀 39,779評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出涣易,到底是詐尸還是另有隱情画机,我是刑警寧澤,帶...
    沈念sama閱讀 35,477評論 5 345
  • 正文 年R本政府宣布新症,位于F島的核電站步氏,受9級特大地震影響,放射性物質發(fā)生泄漏徒爹。R本人自食惡果不足惜荚醒,卻給世界環(huán)境...
    茶點故事閱讀 41,088評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望隆嗅。 院中可真熱鬧界阁,春花似錦、人聲如沸胖喳。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽丽焊。三九已至较剃,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間技健,已是汗流浹背写穴。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留雌贱,地道東北人啊送。 一個月前我還...
    沈念sama閱讀 47,876評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像欣孤,于是被迫代替她去往敵國和親馋没。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,700評論 2 354

推薦閱讀更多精彩內容