Отличие class от id. Идентификаторы и классы. Что же такое "внешний IP адрес"

На первый взгляд нет никакой разницы что использовать: id или class . Ведь присвоив одинаковые параметры CSS стилей для id и class - результат будет идентичен. На самом деле, отличий между id и class в CSS практичесски нет, за исключением приоритета их обработки. Но в некоторых других случаях, которые весьма часто используются в web-разработке, разница весьма ощутима. Эта статья как раз и выделяет все отличия class и id .

Id

Id - это уникальный идентификатор элемента. На одной странице один идентификатор применяется только единожды, хотя можно применять и несколько одинаковых идентификаторов в пределах одной страницы, но это может вызвать проблемы при использовании HTML-якорей и JS. Если попытаться присвоить одному элементу (HTML-тегу) два различных ID, то сработает только правила из первого (самого левого) ID

Пример 1: как не желательно использовать идентификаторы (ID)

Блок выделенного текста

Блок выделенного текста

Пример 2: как нельзя использовать идентификаторы (ID)

Присвоение двух или более id 1-му элементу не допускается

В случае одновременного применения к одному элементу id и class, приоритет у ID будет выше, чем у class:

Определение стилей CSS

#my_id_r7t { color : green ; font-weight : bold ; }

Этому абзацу присвоены класс my_class и идентификатор my_id.

Как видно, цвет приобрел значения, записанные в идентификаторе. Но если присмотрется внимательнее, то id и class могут с успехом дополнять друг-друга: жирный шрифт, заданный в идентификаторе сочетается с курсивным начертанием, записанным в class.

Если же дописать дескриптору еще и стиль: , то результат будет таким:

Самым высоким приоритетом обладает стиль, присвоенный дискриптору с помощью style="...".

Хороший пример приоритетов, приведен в официальной документации по CSS (eng) . В кратце, приоритеты в порядке убывания таковы: style, id, class, стиль тега.

Элемент id может быть применён в качестве HTML-якоря, вместо более древней конструкции , для того, чтобы можно было сослаться на определенную часть страницы, без ее перезагрузки с попомщью Наверх . Если на странице окажется несколько идентичных id, возникнет неоднозначная ситуация.

При программировании страниц с помощью JS, зачастую используется функция getElementById() , которая также "рассчитывает" на то, что идентификатор должен быть уникальным. В противном случае могут возникнуть ошибки в коде.

Class

При использовании class , одному HTML-дескриптору можно назначить стили из нескольких классов одновременно:

My_class_r7t { color : blue ; font-style : italic ; }
.my_class_ffR5 { color : black ; background-color : #fafafa ; padding : 3px ; border : 1px solid #757575 ; margin-left : 30px ; }

Имена различных классов записываются через пробел:

Пример применения 2-ух различных классов для 1-го HTML-тега.

Результат применения двух различных классов для 1-го дескриптора HTML.

Классы my_class_r7t и my_class_ffR5 устанавливают различные цвета содержимому HTML-тега. Использован будет тот цвет, который определен в файле стилей позже (в данном случае class my_class_ffR5 записан после my_class_r7t). Порядок применения классов в самом HTML-дескрипторе значения не имеет.

Чтобы назначить составным классам уникальное стилевое оформление, они записываются вместе, без проблеов:

My_class_bbbb755 { font-weight : bold ; }
.my_class_ffR5 .my_class_bbbb755 { text-align : right ; }

Выравнивание по правому краю, будет применено только в случае, когда одному HTML-дескриптору присвоено сразу 2 класса:

Пример применения стилей для составных классов

Как это выглядит, смотрите ниже:

Пример применения стилей для составных классов

Один и тот же class, в отличае от id, можно без проблем присваивать не ограниченному кол-ву различных элементов:

...
...
...
...
...

Class или id - что использовать?

На самом деле, нельзя выбирать, что использовать: class или id. Это на подобии, как выбирать, что лучше: есть или пить? Пользоваться необходимо и классами и идентификаторами, в зависимости от поставленной цели. В большинстве случаев лучше использовать class, чтобы нечаяно не использовать id на одной странице более одного раза. Но там где необходимо, нужно применять id: выделение уникального блока страницы, для якорей, для JS и др.

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

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

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

  • В коде документа каждый идентификатор уникален и должен быть включён лишь один раз.
  • Имя идентификатора чувствительно к регистру.
  • Через метод 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-элементов на странице можно при помощи нескольких селекторов. 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 ” был подготовлен дружной командой проекта .

Хорошо Плохо

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

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

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

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

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