左側(cè)菜單欄左滑收起展開效果


上一篇文章左側(cè)菜單欄折疊展開效果-超級簡單介紹了將菜單列表上下展開的效果荐糜,這里在上一篇文章的基礎(chǔ)上增加了左右折疊展開,有時候左側(cè)菜單可能占了屏幕的一部分寬度暮蹂,我們想把左側(cè)菜單欄收縮起來以此讓右邊可視區(qū)域變大链患,就可以參考這篇文章的效果啦馁筐。效果圖如下:

一:頁面結(jié)構(gòu):

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
<div class="window-left">
    <div class="go-back">
        <a href="javascript:;">
            <i class="i-icon"></i>
        </a>
    </div>
    <div class="menu-list">
        <ul>
            <li class="first-menu">
                <a href="javascript:;"><i class="i-icon"></i></a>
                <span class="hover-tit">首頁</span>
            </li>
            <li class="first-menu">
                <a href="javascript:;"><i class="i-icon"></i></a>
                <span class="hover-tit">菜單1</span>
                <ul>
                    <li class="second-menu">
                        <a href="javascript:;">子菜單1-1</a>
                    </li>
                    <li class="second-menu">
                        <a href="javascript:;">子菜單1-2</a>
                    </li>
                    <li class="second-menu">
                        <a href="javascript:;">子菜單1-3</a>
                    </li>
                    <li class="second-menu">
                        <a href="javascript:;">子菜單1-4</a>
                    </li>
                </ul>
            </li>
            <li class="first-menu">
                <a href="javascript:;"><i class="i-icon"></i></a>
                <span class="hover-tit">菜單2</span>
                <ul>
                    <li class="second-menu">
                        <a href="javascript:;">子菜單2-1</a>
                    </li>
                    <li class="second-menu">
                        <a href="javascript:;">子菜單2-2</a>
                    </li>
                    <li class="second-menu">
                        <a href="javascript:;">子菜單2-3</a>
                    </li>
                </ul>
            </li>
            <li class="first-menu">
                <a href="javascript:;"><i class="i-icon"></i></a>
                <span class="hover-tit">菜單3</span>
                <ul>
                    <li class="second-menu">
                        <a href="javascript:;">子菜單3-1</a>
                    </li>
                    <li class="second-menu">
                        <a href="javascript:;">子菜單3-2</a>
                    </li>
                </ul>
            </li>
        </ul>
    </div>
</div>
</body>
</html>

二:頁面樣式css,放在head標(biāo)簽里

<style>
        *{
            margin: 0;
            padding: 0;
            box-sizing: border-box;
            -webkit-box-sizing: border-box;
        }
        html,body{
            height: 100%;
        }
        a, a:hover, a:focus {
            text-decoration: none;
            color: #262626;
        }
        .i-icon{
           display: inline-block;
        }
        .go-back{
            padding-top: 50px;
            text-align: center;
        }
        .window-left.fold{
            overflow: visible!important;
        }
        .window-left{
            position:relative;
            float:left;
            width:200px;
            height:100%;
            overflow: hidden;
            background-color: #e8e9ec;
        }
        .window-left.fold{
            overflow: visible!important;
        }
        .window-left .go-back a{
            display: inline-block;
            width: 160px;
            height: 30px;
            line-height: 30px;
            border-radius: 15px;
            border: solid 1px #7e84b1;
            text-align: center;
        }
        .window-left .go-back a .i-icon{
            width: 30px;
            height: 30px;
            margin: 0 auto;
            background-image: url("image/left-arrow.png");
        }
        .window-left.fold .go-back a{
            width: 30px;
            height: 30px;
            border-radius: 15px;
            border: solid 1px #7e84b1;
        }
        .window-left.fold .go-back a .i-icon{
            background-image: url("image/right-arrow.png");
        }
        .window-left .go-back{
            text-align: center;
        }
        .window-left .menu-list{
            padding-top:20px;
            font-size:18px;
        }
        .window-left .menu-list ul{
            list-style: none;
            padding:0;
            margin:0 auto;
        }
        .window-left .menu-list ul li{
            text-align:left;
            color: #616c82;
        }
        .window-left .menu-list ul li.first-menu{
            position: relative;
            color: #5f78a2;
        }
        .window-left .menu-list>ul>li .i-icon{
            width: 24px;
            height: 24px;
            vertical-align: sub;
            background-image: url("image/menu.png");
        }
        .window-left .menu-list ul li:HOVER>span{
            color: #1c9dff;
            cursor: pointer;
        }
        .window-left .menu-list ul li a{
            display:block;
        }
        .window-left .menu-list ul li.first-menu>a{
            position: relative;
            padding-left: 15px;
            width: 100%;
            line-height: 50px;
            white-space: nowrap;
        }
        .window-left .menu-list ul li.first-menu .hover-tit{
            display: block;
            position: absolute;
            left: 55px;
            top:13px;
            width: 140px;
        }
        .window-left.fold .menu-list ul li.first-menu .hover-tit{
            display: none;
            width: 180px;
            height: 50px;
            left: 60px;
            line-height: 50px;
            padding-left: 20px;
            background-color: #bfbcbc;
            color: #646567;
            cursor: Default;
        }
        .window-left.fold .menu-list ul li.first-menu:hover{
            background-color: #bfbcbc;
        }
        .window-left.fold .menu-list ul li.first-menu:hover .hover-tit{
            display: block!important;
            top:0;
        }
        .window-left.fold .menu-list ul li.first-menu:hover ul{
            display: block!important;
            position: absolute;
            width: 180px;
            top:50px;
            left: 60px;
        }
        .window-left.fold .menu-list ul li.first-menu:hover ul li{
            height: 45px;
            border-top: 1px solid #35395f;
            background-color: #bfbcbc;
        }
        .window-left.fold .menu-list ul li.first-menu:hover ul li a{
            width: 100%;
            white-space: nowrap;
            text-overflow: ellipsis;
            overflow: hidden;
        }
        .window-left .menu-list ul li.first-menu.active>span{
            color: #1c9dff;
        }
        .window-left .menu-list ul li.first-menu.active ul li.second-menu.current a{
            background-color: #bfbcbc;;
            border-left: 4px solid #101213;
            font-size: 16px;
        }
        .window-left .menu-list ul li.first-menu ul{
            display:none;
        }
        .window-left .menu-list ul li.first-menu ul li.second-menu a{
            padding: 12px 0 12px 55px;
            font-size:16px;
            color: #28292b;
        }
        .window-left.fold .menu-list ul li.first-menu ul li.second-menu a{
            padding-left: 20px;
            font-size:16px;
            color: #020e23;
        }
    </style>

三:js代碼:

<script type="text/javascript" src="http://code.jquery.com/jquery-1.8.2.min.js"></script>
<script>
    $(function(){
        $(".menu-list .first-menu").click(function(){
            $(this).addClass("active").siblings().removeClass("active");
            if(!$(".window-left").hasClass('fold')){
                $(this).find("ul").slideToggle(500);
                $(this).siblings().find("ul").hide();
            }
        })
        $(".menu-list .second-menu").click(function(){
            var $this = $(this);
            $(".second-menu").each(function () {
                if($(this).hasClass("current")){
                    $(this).removeClass("current");
                }
            })
            $this.addClass("current").siblings().removeClass("current");
            $this.parents(".first-menu").addClass("active").siblings().removeClass("active")
        })
        /*阻止事件冒泡*/
        $(".menu-list .first-menu ul").bind("click",function(event){
            event.stopPropagation();
        });
        $(".go-back a").click(function () {
            $(".menu-list .first-menu").find("ul").hide();
            //收起狀態(tài)
            if($(".window-left").hasClass('fold')){
                $(".window-left").animate({width:"200px"},300,'swing');
                $(".window-left").removeClass('fold');
            }else{
                $(".window-left").animate({width:"60px"},300,'swing');
                $(".window-left").addClass('fold')
            }
        })
    })
</script>

關(guān)于菜單折疊收起綁定事件有不明白的可以參考上一篇文章舟陆,這里寫了兩套樣式误澳,因為展開狀態(tài)和折疊狀態(tài)下子菜單的位置及樣式不一樣,所以當(dāng)我們點擊展開折疊圖標(biāo)時添加移除元素類名就可以吨娜,并且添加菜單欄展開和折疊寬度變化時的動畫脓匿,采用jquery的animate方法。
原文作者技術(shù)博客:http://www.reibang.com/u/ac4daaeecdfe
95后前端妹子一枚宦赠,愛閱讀陪毡,愛交友,將工作中遇到的問題記錄在這里勾扭,希望給每一個看到的你能帶來一點幫助毡琉。
歡迎留言交流

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末近忙,一起剝皮案震驚了整個濱河市貌笨,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌既绩,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,464評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件丐谋,死亡現(xiàn)場離奇詭異芍碧,居然都是意外死亡,警方通過查閱死者的電腦和手機号俐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,033評論 3 399
  • 文/潘曉璐 我一進店門泌豆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人吏饿,你說我怎么就攤上這事踪危。” “怎么了猪落?”我有些...
    開封第一講書人閱讀 169,078評論 0 362
  • 文/不壞的土叔 我叫張陵贞远,是天一觀的道長。 經(jīng)常有香客問我笨忌,道長蓝仲,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,979評論 1 299
  • 正文 為了忘掉前任蜜唾,我火速辦了婚禮杂曲,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘袁余。我一直安慰自己擎勘,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 69,001評論 6 398
  • 文/花漫 我一把揭開白布颖榜。 她就那樣靜靜地躺著棚饵,像睡著了一般。 火紅的嫁衣襯著肌膚如雪掩完。 梳的紋絲不亂的頭發(fā)上噪漾,一...
    開封第一講書人閱讀 52,584評論 1 312
  • 那天,我揣著相機與錄音且蓬,去河邊找鬼欣硼。 笑死,一個胖子當(dāng)著我的面吹牛恶阴,可吹牛的內(nèi)容都是我干的诈胜。 我是一名探鬼主播,決...
    沈念sama閱讀 41,085評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼冯事,長吁一口氣:“原來是場噩夢啊……” “哼焦匈!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起昵仅,我...
    開封第一講書人閱讀 40,023評論 0 277
  • 序言:老撾萬榮一對情侶失蹤缓熟,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體够滑,經(jīng)...
    沈念sama閱讀 46,555評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡垦写,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,626評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了版述。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片梯澜。...
    茶點故事閱讀 40,769評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡寞冯,死狀恐怖渴析,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情吮龄,我是刑警寧澤俭茧,帶...
    沈念sama閱讀 36,439評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站漓帚,受9級特大地震影響母债,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜尝抖,卻給世界環(huán)境...
    茶點故事閱讀 42,115評論 3 335
  • 文/蒙蒙 一毡们、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧昧辽,春花似錦衙熔、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,601評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至咕痛,卻和暖如春痢甘,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背茉贡。 一陣腳步聲響...
    開封第一講書人閱讀 33,702評論 1 274
  • 我被黑心中介騙來泰國打工塞栅, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人腔丧。 一個月前我還...
    沈念sama閱讀 49,191評論 3 378
  • 正文 我出身青樓放椰,卻偏偏與公主長得像,于是被迫代替她去往敵國和親悔据。 傳聞我的和親對象是個殘疾皇子庄敛,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,781評論 2 361

推薦閱讀更多精彩內(nèi)容

  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML標(biāo)準(zhǔn)科汗。 注意:講述HT...
    kismetajun閱讀 27,519評論 1 45
  • 在AngularJS應(yīng)用中創(chuàng)建動畫藻烤,有三種途徑: 使用CSS3動畫 使用JavaScript動畫 使用CSS3過渡...
    oWSQo閱讀 1,461評論 0 3
  • $HTML, HTTP,web綜合問題 1怖亭、前端需要注意哪些SEO 2涎显、 的title和alt有什么區(qū)別 3、HT...
    Hebborn_hb閱讀 4,612評論 0 20
  • 一 話說初三了兴猩,學(xué)習(xí)應(yīng)該是好緊張的呢期吓。 那些“別人家的孩子”呢,一放學(xué)就沖回家拼命學(xué)習(xí)倾芝,那分數(shù)呢也是天天向上讨勤。 二...
    敏Yang閱讀 559評論 1 3
  • 剛回國那年潭千,同事介紹我相親,男孩大我一歲借尿,是同鄉(xiāng)刨晴。其實我對同鄉(xiāng)沒有特別的親切感,從異國他鄉(xiāng)回來我覺得國內(nèi)都是同胞路翻,...
    麗莎小工匠閱讀 273評論 0 0