關注點的分離以及正確使用CSS和HTML需求。如果您使用HTML正確(顯示的內容),您的導航應該是這個樣子:
<ul id="nav">
<li>
<a href="#">Home</a>
<ul>
<li>
Sub Menu Item
</li>
<li>
Sub Menu Item
</li>
<li>
Sub Menu Item
</li>
</ul>
</li>
<li>
<a href="#">Products</a>
<ul>
<li>
Sub Menu Item
</li>
<li>
Sub Menu Item
</li>
<li>
Sub Menu Item
</li>
</ul>
</li>
</ul>
這是冗長,可以肯定的,但它顯示的內容和它的語義和有效的,瀏覽器兼容。對於額外的獎勵,它看起來罰款沒有CSS。
使用CSS正確,我們將增加以下內容:
#nav
{
padding:5px;
margin:0;
}
#nav > li{
display:inline;
position:relative;
}
#nav > li ul
{
position:absolute;
width:150px;
background-color:red;
color:#fff;
left:0;
margin:0;
padding:0;
display:none;
}
#nav > li ul li{
display:block;
}
#nav > li:hover ul
{
display:block;
}
這是相當簡單的,我甚至在裏面添加了幾個unneccesary造型。我使用了直接的後代選擇器(element> element),所以它在舊版IE中不起作用,但是如果你重構了它,這完全是跨瀏覽器兼容的。更不用說它是有效和簡單的。
您似乎自相矛盾:您希望覆蓋儘可能多的用戶,但前進,並且您考慮使用JavaScript。爲什麼?通常,如果禁用JavaScript,則JavaScript方法會使子菜單項變得不可用。
JavaScript用於改進交互。您可以提出懸停菜單是「交互」的說法,但我認爲它是風格,並且這種方式最容易並且在語義上實現。
也許我想念這裏的東西;但CSS + HTML似乎是一個很好的解決方案,而且根本不是不雅,非語義,不兼容或無效。如果我錯了,請糾正我。
每當有人對「瀏覽器兼容性」會談,他們的意思是「它在IE中不起作用」。當你離開IE時,問題很少。所以這樣做,然後應用已知的黑客修復IE。你會好得多。 – Rob
@rob,這是如此真實...... – BumbleShrimp