漢堡式選單常運用在小尺寸螢幕的機器上,可以保持畫面簡單、選單設計彈性等等優點。
但有時會產生操作上的問題,例如不夠直覺、操作麻煩等問題。應該依照實際情況跟頁籤式選單交互或配合使用。
這裏介紹一下,如何實作漢堡式選單。這裡是將選單列或導覽列切換成漢堡式選單,固定在畫面左上角,可以依照情況調整。
首先處理 HTML 部分
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| <body> <!--選單--> <ul class="menu-s"> <li><a href="#profile">profile</a></li> <li><a href="#resume">resume</a></li> <li><a href="#skill">skills</a></li> <li><a href="#portfolio">portfolio</a></li> <li><a href="#contact">contact</a></li> </ul> <!--圖示--> <a href="#" class="showmenu"> menu </a> </body>
|
接著是 CSS
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
| // 漢堡選單 // 圖示,一開始隱藏 display: none; .showmenu { color: #69CA62; display: none; width: 50px; height: 50px; position: fixed; top: 30px; left: 25px; // 置於其他元素上 z-index: 9; cursor: pointer; .fa-bars { font-size: 35px; } }
// 選單 .menu-s { position: fixed; // display: none; width: 100%; // border-bottom: 1px solid #777; // padding: 10px 20px; text-transform: uppercase; // background-color: rgba(255, 255, 255, 0.8); // 置於其他元素上 z-index: 9; list-style-type: none; li { line-height: 2em; } a { color: #69CA62; text-decoration: none; } }
// 當螢幕尺寸小於 768px 時 @media (max-width: 768px) { .menu-s { /* 選單出現*/ display: block; /*隱藏選單開始*/ max-height: 0px; overflow: hidden; /*隱藏選單結束*/ transition: max-height 2.3s; margin-top: 1px; /*絕對定位疊在網頁上*/ position: fixed; z-index: 9; /*header 80px+1px boder 線條*/ top: 81px; left: 0; right: 0; // background: #69CA62; } // .menu-s li{ // border-bottom: 1px dashed #69CA62; // } .menu-s li a{ transition: all 0.2s; } .menu-s li a:hover{ background: gray; color: #fff; } // 顯示圖示 .showmenu{ display: block; float: right; margin: 1em; } /*jQ點擊後動態在 body 加上 class 影響選單高度*/ .menu-show .menu-s { max-height: 500px } }
|
最後是 jQuery
1 2 3 4 5 6 7 8 9
| $(document).ready(function () { $('.showmenu').on('click', function (e) { // 讓原來 <a> 效果失效 e.preventDefault(); $('body').toggleClass('menu-show'); }); });
/* toggleClass()可以用來為匹配的元素進行新增或是刪除CSS類別。實際運作時有點類似開關一樣。如果某個類別存在,那就刪除他,若是不存在那就新增。 */
|
以上是程式碼部分,下列網址是 demo。
https://codepen.io/jw103/pen/xxGQPOZ?editors=1111
另外也可以使用 Bootstrap 4 的模板來做。
參考:
https://a-cart.com.tw/blog/blog_detail/204
https://w3c.hexschool.com/blog/5054d6fe