Я пытался составить собственное мнение по этому вопросу, но не смог, поэтому решил спросить.
Хотя всем хорошо известно, что идентификатор в html создается для представления уникального элемента на странице, мой опыт показывает, что количество уникальных элементов на странице обычно довольно велико, особенно в пользовательских формах. Кроме того, множество уникальных элементов на странице являются вложенными.
Давайте рассмотрим простую структуру, подобную этой:
#content
form#search-filters
#datepicker
#search-results
Когда речь идет о стилизации этого кода, у вас есть два основных подхода (я использую scss и примеры):
- Организовать это иерархически, например,
#content {
columns(8, 12);
#search-filters {
@include search-filters;
etc.
- Перейти с простыми декларациями
#content {
columns(8, 12);
}
#search-fiters {
@include search-filters;
И, на мой взгляд, чертовски круто иметь его с первого взгляда, хотя это как-то противоречит всей логике.
Вопрос остается в силе с содержимым этого блока # search-filters, как показано в примере выше. Допустим, вы использовали некоторые леса Rails, которые генерировали идентификаторы для каждого элемента формы, в которой размещены фильтры, и вы хотите обратиться к этим идентификаторам, чтобы также обеспечить стилизацию.
Вы знаете, что элемент уникален и что он будет уникальным в любой форме, которая расширяет смесь поисковых фильтров. Итак, вы хотите, чтобы он имел идентификатор.
Но вы должны дать ему класс, чтобы сделать его логически непротиворечивым.
Что вы думаете об этой проблеме?
P.S. Я попытался прочитать спецификацию о том, есть ли разница в производительности в этих двух случаях, но ничего не сказано:
http://www.w3.org/TR/css3-selectors/#class-html