有很多網頁在解說箇中原由,不過自己做一下筆記總沒錯。
html 基本格式
html 方面,就是
<ul>css 基本做法(ul)
<li><a href="">選項一</a></li>
<li><a href="">選項二</a></li>
......
</ul>
ul 會為 li 項目帶來圓點、數字各種前置記號,所以首先要讓這些記號不出現:
ul {list-style-type: none;}最好也去除各瀏覽器的邊距預設值,例如:
ul {list-style-type: none; padding: 0; margin: 0;}直式(a)
直式是要讓各個連結單位自成一塊(所以跟在連結之後的字,即使在同一個 li 裡,也會折行)。這一塊不是只有字的範圍而已,而是整塊區域,所以可以連帶設定這塊區域的大小,加上 width 或 padding 值:
a {display: block; width: 60px;}橫式(li)
橫式有兩種做法,對 li 做 inline 或 floating。
inline
li {display: inline;}li 本身是個 block,設為 inline 是去除這個預設值,讓 li 之間可以連成一行。這時 a 不能加 block。另外,根據 [1],只對 a 加上 padding、margin,而沒有設定 ul 的,會發生不可測的情形,但我是測不出來,先記下來再說。
此外,inline 的做法不能讓每個 li 的大小一樣,每個 li 的寬度是跟著連結字串的寬度變化。
floating
li {float: left;}要讓每個連結字塊的寬度一樣,要把 li 設為 float,並且 a 也要設為 block 及設定寬度。此外,既然用了 float,在 menu 結束之後,要記得 clear。
a {display: block; width: 60px;}
多層次 menu
當滑鼠經過某個選項,下面會冒出下一層選單。html 方面,是在 li 下面再跑一圈 ul - li。css 方面,重點是:
ul {list-style: none; position: relative;}不過其間當然可以有很多細節。橫式冒出直式選單,請參考 [2]。直式冒出橫式選單,沒看到什麼好的參考。javascript 請見 [3]。
ul li {float: left; position: relative;}
ul li a {display: block;}
ul ul {display: none; position: absolute;}
ul li:hover ul {display: block;}
ul ul li {clear: left;}
當然,最好為這一切做個 id 或 class,免得跟其他情形混用。
參考資料
[1] CSS Navigation Bar(初級篇。有清楚的解說及範例。)
[2] Horizontally Centered Drop-Down Menus(進階篇。附解說。)
[3] All Levels Navigational Menu (v3.03)(似乎是好用的 js。可選擇直式橫式。)
No comments:
Post a Comment