Почему я не должен использовать идентификаторы стилей с помощью CSS?
Возможный дубликат:
Почему выбор по идентификатору не рекомендуется в CSS?
Я читал в бесчисленных потоках и статьях, которые я НИКОГДА не должен использовать атрибут id, чтобы вместо этого использовать стили css, но классы.
Я знаю, что классы многократно используются, но только один сам по себе не является аргументом, достаточным для того, чтобы не использовать их. В конце концов, ID необходим для javascript, так почему бы не воспользоваться ими, так как они никуда не уходят?
Может кто-нибудь объяснить мне причины этих мнений?
Ответы
Ответ 1
Идентификаторы стилей идут против DRY принципов и это то, чего следует избегать, если это имеет смысл. Бывают ситуации, когда вам нужно стилизовать один объект, и вы знаете, что он никогда не будет использоваться ничем другим на странице, поэтому я думаю, что никогда не стильные идентификаторы неискренны, если вы знаете о риске ремонтопригодности, и это приемлемо что вам нужно сделать, чтобы выполнить работу.
Ответ 2
Нет особых причин избегать использования ID-селекторов. Не верьте всему, что вы читаете.
Тем не менее, если вы разрабатываете все с идентификаторами, вы теряете преимущества классов.
Ответ 3
Если вы ищете эмпирическое правило о том, когда использовать идентификаторы, здесь один, который я кодирую по:
идентификаторов:
- Верхние элементы, которые никогда не повторяются, например #top, #wrapper, #footer и т.д. и т.д.
- Элементы, которые должны быть идентифицированы внешним script или похожим.
-
<a name="anchor_name" id="anchor_name"><a>
. Хорошая практика кодирования заключается в предоставлении идентификатора якорям.
Ответ 4
Стилирование id
в порядке, но в целом вы должны использовать его только для исключений, если вы хотите максимизировать свои классы, которые можно повторно использовать. Например:
<div id="myid" class="box"></div>
.box {
padding:1em;
border:1px solid #ccc;
color:#222;
}
#myid {
padding:2em;
}
Если вы ставите стиль в основном id
, это говорит о том, что вы можете писать избыточный CSS и не использовать преимущества классов и каскада.