2010-10-12 4 views
19

В последнее время я применяю идентификатор тега тега моих документов HTML to allow greater CSS control (#9). Недавно мне пришло в голову, что я могу сделать то же самое, применив класс к тегу body. Я хочу знать положительные и отрицательные стороны каждого выбора. Если у меня есть несколько страниц, где тег body имеет одинаковый идентификатор, лучше ли использовать класс? Как вы думаете? Зачем?Класс или идентификатор на теге тела

ОБНОВЛЕНИЕ: Класс/ID - это в основном то, что я намереваюсь использовать для определения таблицы стилей, на страницу или тип страницы которой применяется стильная таблица. Например, это главная страница, страница контактов, одна из многих страниц результатов поиска, страница архива и т. Д.?

ответ

18

Использование класса вполне приемлемо, возможно, больше, чем использование идентификатора. Использование идентификаторов должно быть ограничено как можно больше, потому что они могут столкнуться с другими идентификаторами и нарушать такие вещи, как document.getElementById.

Селектор идентификаторов более специфичен, чем селектор классов, что обычно делает его лучшим выбором для вашего прецедента. - Дэвид Dorward

Однако высокая "specificness" не всегда желательно. Рассмотрим body#faq #col_b a {color:gray;} в главной таблице стилей, а затем кто-то разработает плагин с серым фоном, который идет на странице faq, теперь им нужно использовать !important или создать другой атрибут id, чтобы получить более высокую специфичность.

Кроме того, рассмотреть возможность использования нескольких классов в одном элементе корпуса:

<body class="faq two_column big_footer"> ... 
+0

Ваш пример кого-то разрабатывает плагин, где стили может привести к сбою, очень вероятно, произойдет в этой ситуации. Мне кажется, что если кто-то написал тело правила # faq #col_b a {color: gray;}, вы правы, что, возможно, придется применять идентификатор/класс для получения более высокой специфичности. Однако, если у вас есть body.faq #col_b a {color: gray;} Мне кажется, что идентификатор/класс также должен применяться для получения более высокой специфичности. Можете ли вы объяснить, какая разница между этими двумя ситуациями? –

+0

Нет большой разницы, действительно ... Я лично не сделал бы идентификатор col_b (для правого столбца в макете страницы, скажем), я бы использовал класс. Между 'body # faq .col_b a' vs' body.faq .col_b a', второй должен быть намного проще переопределить кого-то другого. В общем, я думаю, что если вы создаете CSS, который могут использовать другие, высокая специфичность (если это то, что он называется) - это плохо, когда более низкая специфичность может достичь того же. –

+0

Хорошие рассуждения. Если другие основываются на вашем CSS, всегда используйте самую низкую специфичность, необходимую для достижения желаемых результатов. –

2

ID должен быть уникальным на странице (если вы хотите, действительный код), то есть только один экземпляр определенного ID должен существовать на странице.

С другой стороны, классы могут применяться к многочисленным элементам на странице. Используйте классы для вещей, которые повторно используют одни и те же стили и используют идентификаторы для более уникальных элементов, которые требуют собственного стиля.

В идеале используйте классы по возможности и ограничьте использование идентификаторов.

Дополнительную информацию об идентификаторе см. В разделе here и другие о классах, см. here.

+0

Спасибо. Я уже читал о w3schools. В моей ситуации я мог бы использовать класс или идентификатор, и это было бы приемлемо. Тем не менее, я пытаюсь провести мозговой штурм любых возможных положительных/отрицательных последствий использования одного над другим. –

+0

В этом случае на самом деле нет значительного влияния, поскольку долгое время вы используете их для семантически корректных. –

+1

Пожалуйста, не связывайтесь с W3Schools - [они часто неточны и не связаны с W3C] (http://w3fools.com/). – iono

1

Лучше использовать класс, если вы планируете повторно использовать стиль на страницах. Идентификаторы хороши, если таблица стилей предназначена для конкретной страницы. Но все равно зависит от вашего приложения.

0

Вы можете (читать: следует) использовать только идентификатор на теге тела.

ID = одноразовое использование на страницу

Класс = множественный использует

1 Тело тега = 1 Идентификатор тег. Это может быть одинаково на разных страницах. По сути, использование тега класса, вероятно, слишком велико для этой цели.

4

Селектор идентификаторов больше specific, чем селектор класса, который обычно делает его лучшим выбором для вашего прецедента.

0

В HTML5 атрибут id может использоваться для любого элемента HTML (он будет проверяться на любом элементе HTML, но это не обязательно полезно).

В HTML 4.01, атрибут ID не может быть использован с: <base>, <head>, <html>, <meta>, <param>, <script>, <style>, and <title>.

Примечание: HTML 4.01 имеет большие ограничения на содержание значений идентификаторов (например, в HTML 4.01 значения ID не может начинаться с цифры).

Источник: W3School

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