Идентификаторы и классы. Разница между class и id на примере тега div

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

Как применять CSS-селектор ID

Селектор ID используется для обозначения отдельного HTML-элемента с помощью уникального значения атрибута id . В следующем примере представлен элемент , значением атрибута id которого является header .

В CSS к этому div-элементу можно применять различную стилизацию:

#header { width: 100%; height: 80px; background: blue }

Не забывайте использовать знак # (хэштег ) перед именем. Подробнее об этом можно узнать здесь и здесь .

Как применять CSS-селектор class

Селектор class HTML CSS используется для выделения отдельного или целой группы HTML-элементов с идентичным значением атрибута class .

В CSS к нескольким абзацам можно применять различную стилизацию:

Content { margin: 20px 0; line-height: 24px; font-size: 15px }

Не забудьте использовать знак. (точка ) перед названием класса при объявлении CSS-правила . Подробнее об этом можно узнать здесь и здесь .

Чем отличаются CSS Class и ID

Cелектор id используется для отдельных элементов страницы (#header ), в то время как селектор class (.content) – для нескольких. Так как значение id задается лишь одному HTML-элементу . Другими словами, у нескольких элементов не может быть одинакового значения id в рамках одной отдельной страницы. Например, у вас может быть только один элемент с id #header , или же один элемент с id #footer .

Одинаковое значение class можно задавать одному или нескольким HTML-элементам . К примеру, у вас может быть несколько абзацев с классом .content или несколько ссылок с классом .external .

Следующий пример поможет лучше понять различия между CSS class и id , а также понять, как правильно использовать:

Ссылка 1 Ссылка 2 Ссылка 3 Ссылка 4

Это наш первый абзац.

Это наш второй абзац.

Это наш третий абзац.

Приведенную выше HTML-разметку мы начали с div-элемента container . Мы задали ему id (#container ), так как на нашей странице будет размещаться единственный контейнер. Внутри него мы размещаем разделы меню (#menu ) и контента (#content ). Как и в случае с контейнером, у нас будет только одно меню, и один раздел с контентом. Внутри menu располагаются четыре ссылки , но к каждой из них мы применили CSS class (.link ). Точно также мы применили класс (.text ) к каждому абзацу в div-элементе content .

Если нужно стилизовать эти элементы, то можно использовать следующий пример:

#container { width: 1080px; margin: 0 auto; background: #eee } #menu { height: 90px; background: #ddd } .link { color: #000; text-decoration: none } #content { padding: 20px } .text { font-size: 15px }

Когда используется class, а когда id?

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

Также следует учитывать, что у HTML-элемента может быть указан и id , и class . Предположим, что на странице имеется два блока с одинаковым размером и стилизацией, но с разным позиционированием. В таком случае можно применить один и тот же класс к этим блокам для изменения размеров и стилизации, а затем использовать отдельный ID-селектор к каждому блоку, чтобы задать им разное позиционирование.

Элементы также можно привязывать одновременно к нескольким классам. Это очень удобно, когда нужно применить стилизацию к отдельной группе элементов определенного типа. Например, имеется класс .content , который применен ко всем абзацам. Если нужно будет добавить границу или любую другую стилизацию к нескольким отдельным абзацам, то можно сделать это при помощи дополнительного CSS p class .bordered :

Этот пункт не имеет границ.

Этот пункт имеет границы.

Обратите внимание на пустое пространство между двумя именами классов в атрибуте class второго абзаца. Ниже приведен пример CSS-кода :

Content { margin: 10px; font-size: 15px; color: blue } .bordered { border: 2px solid #222 }

Важно правильно применять id и CSS class , так как их неправильное использование может привести к ошибкам в отображении HTML-кода .

Перевод статьи “CSS Class vs ID: Which One to Use ” был подготовлен дружной командой проекта .

Хорошо Плохо

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

Для начала перечислим характерные признаки этих селекторов.

Идентификаторы

  • В коде документа каждый идентификатор уникален и должен быть включён лишь один раз.
  • Имя идентификатора чувствительно к регистру.
  • Через метод getElementById можно получить доступ к элементу по его идентификатору и изменить свойства элемента.
  • Стиль для идентификатора имеет приоритет выше, чем у классов.

Классы

  • Классы могут использоваться в коде неоднократно.
  • Имена классов чувствительны к регистру.
  • Классы можно комбинировать между собой, добавляя несколько классов к одному тегу.
Идентификаторы

Если во время работы веб-страницы требуется изменить стиль некоторых элементов «на лету» или выводить внутри них какой-либо текст, с идентификаторами это делается гораздо проще. Обращение к элементу происходит через метод getElementById , параметром которого служит имя идентификатора. В примере 21.1 к текстовому полю формы добавляется идентификатор с именем userName , затем с помощью функции JavaScript делается проверка на то, что пользователь ввёл в это поле какой-либо текст. Если никакого текста нет, но кнопка Submit нажата, выводится сообщение внутри тега с идентификатором msg . Если всё правильно, данные формы отправляются по адресу, указанному атрибутом action .

Пример 21.1. Проверка данных формы

HTML5 IE Cr Op Sa Fx

Проверка формы function validForm(f) { user = document.getElementById("userName"); if(user.value == "") document.getElementById("msg").innerHTML = "Пожалуйста, введите имя."; else f.submit(); }

Введите свое имя:

Поскольку идентификаторы чувствительны к регистру, имеет значение их однотипное написание. Внутри тега используется имя userName , его же следует указать и в методе getElementById . При ошибочном написании, например, username , скрипт перестанет работать, как требуется.

В примере выше стили вообще никакого участия не принимали, сами идентификаторы требовались для работы скриптов. При использовании в CSS следует учитывать, что идентификаторы обладают высоким приоритетом по сравнению с классами. Поясним это на примере 21.2.

Пример 21.2. Сочетание стилей

HTML5 CSS 2.1 IE Cr Op Sa Fx

Идентификаторы #A, .a { border: none; background: #f0f0f0; color: green; padding: 5px; } .b { border: 1px solid red; color: red; padding: 0; }

Стиль идентификатора

Стиль классов a и b

Стиль класса b

Для первого абзаца устанавливается стиль от идентификатора A и класса b , свойства которых противоречат друг другу. При этом стиль класса будет игнорироваться из-за особенностей каскадирования и специфичности. Для второго абзаца стиль задаётся через классы a и b одновременно. Приоритет у классов одинаковый, значит, в случае противоречия будут задействованы те свойства, которые указаны в стиле ниже. К последнему абзацу применяется стиль только от класса b . На рис. 21.1 показан результат применения стилей.

Рис. 21.1. Использование стилей для текста

Специфичность в каскадировании начинает играть роль при разрастании стилевого файла за счёт увеличения числа селекторов, что характерно для больших и сложных сайтов. Чтобы стиль применялся корректно, необходимо грамотно управлять специфичностью селекторов путем использования идентификаторов, повышения важности через !important , порядком следования свойств.

Классы

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

Пример 21.3. Использование классов

R, .b { padding: 10px; background: #FCE3EE; } .r { border-radius: 8px; -webkit-border-radius: 8px; -moz-border-radius: 8px } .b { border: 1px solid #ED1C24; } .n { border: none; }

Указывая разные классы в атрибуте class мы можем комбинировать набор стилевых свойств и получить таким образом блоки с рамкой, блоки без рамки, со скруглёнными или прямыми уголками. Это несколько похоже на группирование селекторов, но обладает большей гибкостью.

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

Благодаря этому тегу весь HTML код документа имеет наглядную и логически понятную структуру. В которой легко разобраться не только верстальщику, но и другим специалистам, совместно работающим над одним проектом. Однако тег без своих «сателлитов» - селекторов id и class ничего не стоит.

Классы и идентификаторы

Классы (class) и идентификаторы (id) выполняют одни и те же задачи. Они задают разные стили для тега , как во внешнем CSS файле, так и внутри документа, через тег style . Тут надо пояснить, что они работают в связке не только с тегом , но и со многими другими тегами.

Рассмотрим на примере ниже следующий код HTML-разметки: