Оптимизация CSS: идентификатор элемента по сравнению с классом

С MVC и jQuery я значительно больше использую CSS. Вопрос, который пришел на ум, - это лучший подход для использования Element ID по сравнению с классами. Если я использую Element ID, селектора в jQuery короче. Например:

#imageTag... $('#imageTag')
#searchTag... $('#searchTag')

В качестве альтернативы он может быть структурирован с помощью родительского элемента контейнера.

#searchTool, #classifyTool .tag

В этом случае селектора, такие как

$('# searchTool.tag') или $('# classifyTool.tag')

. Этот подход может быть особенно полезен, если на странице есть несколько экземпляров класса, например,.tag. Вы просто изменяете родительский объект-контейнер.

Это просто простой теоретический пример и не предназначен для представления реальных стилей, просто изображайте концепцию.

Итак, есть два вопроса:

  • Есть ли какое-либо влияние на производительность страницы /CSS или jQuery, если на странице есть большое количество стилей?

  • Второй подход выглядит более гибким и удобным. Мысли основаны на вашем опыте.

Есть ли лучший альтернативный подход?

Спасибо

Ответы

Ответ 1

  • Идентификаторы являются самыми быстрыми
  • Названия тегов следующие быстро:
  • Имена классов без имени тега являются самыми медленными

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

Попробуйте не использовать селектор (в CSS или jQuery), например ".class". Вы заставляете jQuery или браузер в основном перемещаться по всему дереву документа. В большинстве случаев класс будет применяться только к одному типу тега, поэтому укажите его (например, "div.class" ). Это само по себе может сделать разницу в производительности огромной (особенно в jQuery с большим документом).

Длина селектора не должна рассматриваться. Производительность, читаемость и ремонтопригодность должны быть.

Ответ 2

Обычно я предпочитаю метод класса. Причина в том, что вам не нужно писать новый селектор css для каждого нового элемента ID'd в вашей системе.

Кроме того, я предпочитаю различать "struct" и "style" css. Смысл, что я отделяю вещи, которые имеют дело с размером (шириной/высотой) и положением из классов css, которые делают шрифт-вес, цвет и т.д.

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