Css: почему бы не использовать ID, еще одна причина, чем тесно связаны - PullRequest
3 голосов
/ 16 июня 2011

У меня есть страница, где есть тег с id, но обычный класс CSS, такой как этот:

<div id='stack_overflow_example' class='title'> ... </div>

Как все знают, этот id должен быть уникальным на этой странице, и я использую его только для того, чтобы легко найти его в css (может использоваться, например, для запросов ajax, но это не так) .

Читая о css-локаторах (селекторах), я обнаружил, что не должен использовать идентификаторы в качестве css-селекторов, потому что это тесно связало бы мой css-код с моим html-кодом.

Хорошо, я согласен. Но вариант заключается в том, чтобы поместить уникальный класс CSS в этот тег, а затем использовать его в коде CSS.

Почему этот вариант не так тесно связан с первым?

Может ли кто-нибудь привести причину, отличную от той, о которой я только что подумал: «Потому что в этом втором варианте вы можете повторно использовать« уникальный »CSS для других« уникальных »тегов».

РЕДАКТИРОВАНИЕ : Думая о причине производительности, мой друг просто подумал (и я согласился):

  • Используя тег 'id', поиск будет проходить по всему HTML-коду до тех пор, пока не будет найдено первое использование идентификатора, а затем остановлен, потому что 'id' равен unique
  • Используя «уникальный класс», «поиск» будет проходить через весь HTML-код до EOF, поскольку многие элементы могут иметь этот «уникальный класс»

Не правда ли, в конце, сбой производительности, заставляющий вариант 1 звучать лучше?

Ответы [ 2 ]

2 голосов
/ 16 июня 2011

Вы можете применить один уникальный идентификатор к любому элементу на каждой странице. не имеет значения, какой элемент имеет идентификатор, если только один имеет его на странице. Для классов такого правила не существует. Следовательно, проблемы связывания, о которых вы говорите (т. Е. В CSS очень жесткое предположение, что элемент с определенным идентификатором служит для представления и цели на всех HTML-страницах, к которым он применяется).

Честно говоря, я бы не очень заботился о проблемах со связыванием ( РЕДАКТИРОВАТЬ: или производительность). Если у меня есть идентификатор, и я хочу применить стили только к этому идентификатору, я выбираю по этому идентификатору. Если элемент разделяет этот класс с другими элементами, и я хочу применить стили ко всем элементам этого класса, я выбираю по этому классу.

0 голосов
/ 16 июня 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...