2010-06-28 2 views
4

, который лучше для использованияCSS селекторы: (меню уль LI) или (меню 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 li или menu li?

ответ

8

Когда вы говорите which tag is right menu ul li or menu li?, вы говорите о DIV с 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

+0

просто записка. *

* больше не устарел. Он был воскрешен для использования в HTML5. :) – 2011-03-28 14:06:33

+0

@ J.T.S. хорошо знать, но я никогда не слышал об этом, прежде чем я написал это сообщение (я просто сам это сделал в googled:)) –

2

Это не имеет значения, пока вам не придется взаимодействовать с другими аналогичными селекторами в одной таблице стилей - и тогда это зависит от того, что эти селекторы.

+0

Я действительно не понимаю, что этот ответ пытается сказать. Не могли бы вы немного уточнить, пожалуйста? – Beejamin

0

Если у вас нет списков заказов (<ol>) внутри .menu контейнеров, результат будет таким же. Некоторые, вероятно, скажут, что один быстрее, чем другой, но это не имеет значения (и трудно доказать, что он может различаться в каждом браузере)

2

Это зависит. Если у вас есть ol и ul в пределах .menu, вы хотите использовать более конкретные .menu ul li. В противном случае .menu li в порядке. Вам может понравиться read up on CSS specifity.

0

Ваших селекторы должны соответствовать вашему намерению - если вы имеете в виду для любого элемента списка, независимо от того, является ли он внутри UL или OL быть стилизованным то же самым, то пример B. Если это только UL LI систем вы хотите стиль, то 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 }.

Смежные вопросы