2010-06-28 66 views
4

這是更好地使用CSS選擇器(菜單UL LI)或(菜單裏)

.menu{ 
    float:left; 
    width:600px; 
    height:25px; 
    background:url(bg.png) repeat-x; 

} 
.menu ul{ 
    float:left; 
} 
.menu ul li{ 
    float:left; 
    width:150px; 
    height:25px; 
    background:#F00; 
} 

.menu{ 
    float:left; 
    width:600px; 
    height:25px; 
    background:url(bg.png) repeat-x; 

} 
.menu ul{ 
    float:left; 
} 
.menu li{ 
    float:left; 
    width:150px; 
    height:25px; 
    background:#F00; 
} 

這標籤是正確menu ul limenu li

回答

8

當你說which tag is right menu ul li or menu li?,你是在說一個與class="menu"格或你在談論deprecated menu tag<menu>)?

如果你只是在談論你的CSS代碼,那些不是標籤,它們是選擇器。而且我要提供最具體的選擇去,以避免意外分配

.menu > ul > li{ 
    // this matches only list items directly inside a ul directly inside a .menu 
} 

更妙的是這樣的:

#menu > ul > li{ 
    // now you are referencing the menu by id, so you know this is a unique assignment 
} 

,或者如果你有多個菜單:

#menubar > .menu > ul > li{ 
} 

因爲否則你是在驚喜,你可能實際上有這樣的結構: (這是醜陋的,我知道,但只是爲了證明一點)

<div class="menu"> 
    <ul> 
     <li>Menu Item 1</li> 
     <li>Menu Item 2</li> 
     <li>Menu Item 3 
     <ul> 
      <li id="abc">Menu Item abc</li> 
     </ul> 
     </li> 
     <li>Menu Item 4 
     <div><div><div><ol><li><div><ul> 
       <li id="xyz">Menu Item xyz</li> 
     </ul></div></li></ol></div></div></div> 
     </li> 
    </ul> 
</div> 

(您可能不想匹配項目abc或xyz)。

+0

我也要評論嵌套列表。這絕對是最好的方式。 – theorise 2010-06-28 13:57:00

+0

只是一個說明。 *

*不再被棄用。它已被複活用於HTML5。 :) – 2011-03-28 14:06:33

+0

@ J.T.S。很高興知道,但在我寫這篇文章之前我從來沒有聽說過它(我只是自己搜索了一下:-)) – 2011-03-28 14:40:34

2

除非您必須與同一樣式表中的其他類似選擇器交互,否則它沒有區別 - 然後取決於這些選擇器是什麼。

+0

我真的不明白這個答案試圖說什麼。請你澄清一下嗎? – Beejamin 2010-06-28 15:18:22

0

除非你打算在.menu容器內也有有序列表(<ol>),結果是完全一樣的。有人可能會說一個比另一個更快,但這是無關的(很難證明,因爲它可能會在每個瀏覽器中不同)

2

這取決於。如果您在.menu內有olul,則您需要使用更具體的.menu ul li。否則,.menu li是好的。您可能想要read up on CSS specifity

0

你的選擇應與你的意圖 - 如果你的意思是任何列表項,無論它是否是一個UL或OL裏面設置樣式相同,那麼例如B.如果UL李的要的風格,這只是,那麼A.

這是一個相當簡單的例子,但這是一個有用的經驗法則。問問自己:「如果某人來了,在.menu裏面加入了一個有序列表,我該怎麼看它?

這是一個很好的方法來保持CSS的正確水平的特異性,同時保持HTML結構的靈活性它可以應用到。

+0

好,簡單的答案。 :) – 2011-03-28 14:08:24

0

Mozilla的Devcenter推薦使用.menu li。你可以紅更多關於Writing Efficient CSS和優化CSS代碼。就個人而言,我用<ul id='menu'>,然後#menu { display: block; margin: 0; padding: 0 }