選單常見於我們的生活當中,通常用於整理一系列的指令,簡化複雜的程序,使介面看起來更加友善。當應用程式愈複雜,功能愈多時,通常會利用多級選單將類似的指令組織成一個子選單。
一般網頁常見到二級選單,利用 CSS 即可達成,有些會透過 JavaScript 增加更多效果,例如動畫、延遲等。多級選單一般常使用 JavaScript 達成,不過透過 CSS 也能做出簡單的多級選單。
###HTML
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
<nav> <ul> <li><a href="">選單 1</a></li> <li> <a href="">選單 2</a> <ul> <li> <a href="">選單 2-1</a> <ul> <li><a href="">選單 2-1-1</a></li> <li><a href="">選單 2-1-2</a></li> </ul> </li> <li><a href="">選單 2-2</a></li> <li><a href="">選單 2-3</a></li> </ul> </li> <li><a href="">選單 3</a></li> <li><a href="">選單 4</a></li> </ul> </nav> |
選單的 HTML 如上,所有的選單物件都是可點選的連結,理論上無限層級。
###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 |
ul li { position: relative; /* 使子選單依照母選單的座標顯示 */ } /* 設定母選單的連結樣式 */ ul li a{ background: url(detail.png); } /* 當母選單下沒有子選單時,也就是說只有一個連結時,隱藏detail.png */ ul li a:only-child{ background: none; } ul li:hover > ul { display: block; /* 滑鼠滑入母選單後,顯示子選單 */ } /* 二級選單顯示於一級選單的正下方 */ ul ul { position: absolute; top: 100%; list-style: none; display: none; } /* 三級選單則顯示於二級選單的右方 */ ul ul ul { position: absolute; left: 100%; top: 0; } |
這樣就完成了所有步驟,不需要繁複的 JavaScript,是不是很簡單呢?