HTML
Классы и идентификаторы
Поиск…
Вступление
Классы и идентификаторы облегчают обращение к элементам HTML из сценариев и таблиц стилей. Атрибут class может использоваться в одном или нескольких тегах и используется CSS для стилизации. Однако идентификаторы предназначены для обозначения одного элемента, что означает, что один и тот же идентификатор никогда не должен использоваться дважды. Идентификаторы обычно используются с JavaScript и внутренними ссылками документа и не рекомендуется в CSS. В этом разделе содержатся полезные пояснения и примеры относительно правильного использования атрибутов класса и идентификатора в HTML.
Синтаксис
- class = "class1 class2 class3"
- ID = "UniqueID"
параметры
параметр | подробности |
---|---|
учебный класс | Указывает класс элемента (не уникальный) |
Я бы | Указывает идентификатор элемента (уникальный в том же контексте) |
замечания
- Оба
class
иid
являются глобальными атрибутами и поэтому могут быть привязаны к любому элементу HTML. - Имена классов должны начинаться с буквы (AZ или az), за которой могут следовать буквы, цифры, дефисы и символы подчеркивания.
- В
HTML5
атрибуты class и id могут использоваться для любого элемента. В HTML 4.0.1 они были недоступны для тегов<base>
,<head>
,<html>
,<meta>
,<param>
,<script>
,<style>
и<title>
. - Элемент может иметь один или несколько классов. Классы разделяются пробелами и сами не могут содержать пробелы.
- Элемент может иметь только один идентификатор, и он должен быть уникальным в своем контексте (т.е. веб-странице). Идентификаторы также не могут содержать пробелы.
Предоставление элемента класса
Классы - это идентификаторы для элементов, которым они назначены. Используйте атрибут class
чтобы назначить класс элементу.
<div class="example-class"></div>
Чтобы назначить несколько классов элементу, отделите имена классов пробелами.
<div class="class1 class2"></div>
Использование классов в CSS
Классы могут использоваться для стилизации определенных элементов без изменения всех элементов такого типа. Например, эти два элемента span
могут иметь совершенно разные стили:
<span></span>
<span class="special"></span>
Классы с одинаковым именем могут быть предоставлены любому количеству элементов на странице, и все они получат стиль, связанный с этим классом. Это всегда будет верно, если вы не укажете элемент внутри CSS.
Например, у нас есть два элемента: оба с highlight
класса:
<div class="highlight">Lorem ipsum</div>
<span class="highlight">Lorem ipsum</span>
Если наш CSS такой, как показано ниже, то зеленый цвет будет применен к тексту в обоих элементах:
.highlight { color: green; }
Однако, если мы хотим только нацеливать div
на highlight
класса, мы можем добавить определенность, как показано ниже:
div.highlight { color: green; }
Тем не менее, при стилизации с помощью CSS обычно рекомендуется использовать только классы (например, .highlight
), а не элементы с классами (например, div.highlight
).
Как и любой другой селектор, классы могут быть вложенными:
.main .highlight { color: red; } /* Descendant combinator */
.footer > .highlight { color: blue; } /* Child combinator */
Вы также можете связать селектор классов только с элементами, имеющими комбинацию из нескольких классов. Например, если это наш HTML:
<div class="special left menu">This text will be pink</div>
И мы хотим покрасить эту определенную часть текста розовым, мы можем сделать следующее в нашем CSS:
.special.left.menu { color: pink; }
Предоставление элемента идентификатора
Атрибут ID элемента - это идентификатор, который должен быть уникальным во всем документе. Его цель состоит в том, чтобы однозначно идентифицировать элемент при связывании (с использованием привязки), написании сценариев или стилизации (с помощью CSS).
<div id="example-id"></div>
У вас не должно быть двух элементов с одинаковым идентификатором в одном документе, даже если атрибуты привязаны к двум различным типам элементов. Например, следующий код неверен:
<div id="example-id"></div>
<span id="example-id"></span>
Браузеры сделают все возможное, чтобы сделать этот код, но неожиданное поведение может возникнуть при стилизации с помощью CSS или добавлении функциональности с помощью JavaScript.
Чтобы ссылаться на элементы по их идентификатору в CSS, префикс ID с #
.
#example-id { color: green; }
Чтобы перейти к элементу с идентификатором на заданной странице, добавьте #
с именем элемента в URL.
http://example.com/about#example-id
Эта функция поддерживается в большинстве браузеров и не требует дополнительного JavaScript или CSS для работы.
Проблемы, связанные с дублируемыми идентификаторами
Наличие более одного элемента с одним и тем же идентификатором - проблема с устранением неполадок. Парсер HTML обычно пытается отобразить страницу в любом случае. Обычно ошибка не возникает. Но темпы могут оказаться на неправильной веб-странице.
В этом примере:
<div id="aDiv">a</div>
<div id="aDiv">b</div>
Селекторы CSS все еще работают
#aDiv {
color: red;
}
Но JavaScript не справляется с обоими элементами:
var html = document.getElementById("aDiv").innerHTML;
В этом случае переменная html
несет только первое содержимое div
("a")
.
Допустимые значения
Для идентификатора
Единственными ограничениями на значение id
являются:
- он должен быть уникальным в документе
- он не должен содержать пробелов
- он должен содержать хотя бы один символ
Таким образом, значением могут быть все цифры, только одна цифра, только знаки пунктуации, включают специальные символы, что угодно. Просто нет пробелов.
Таким образом, они действительны:
<div id="container"> ... </div>
<div id="999"> ... </div>
<div id="#%LV-||"> ... </div>
<div id="____V"> ... </div>
<div id="⌘⌥"> ... </div>
<div id="♥"> ... </div>
<div id="{}"> ... </div>
<div id="©"> ... </div>
<div id="♤₩¤☆€~¥"> ... </div>
Это неверно:
<div id=" "> ... </div>
Это также неверно, если включено в тот же документ:
<div id="results"> ... </div>
<div id="results"> ... </div>
Значение id
должно начинаться с буквы, которая затем может выполняться только:
- буквы (AZ / az)
- цифры (0-9)
- дефисы ("-")
- подчеркивания ("_")
- colons (":")
- периоды (".")
Ссылаясь на первую группу примеров в вышеприведенном HTML5, допустимо только одно:
<div id="container"> ... </div>
Они также действительны:
<div id="sampletext"> ... </div>
<div id="sample-text"> ... </div>
<div id="sample_text"> ... </div>
<div id="sample:text"> ... </div>
<div id="sample.text"> ... </div>
Опять же, если он не начинается с буквы (в верхнем или нижнем регистре), это недействительно.
Для класса
Правила для классов по существу те же, что и для id
. Разница в том, что значения class
не обязательно должны быть уникальными в документе.
Ссылаясь на приведенные выше примеры, хотя это недопустимо в одном документе:
<div id="results"> ... </div>
<div id="results"> ... </div>
Это совершенно нормально:
<div class="results"> ... </div>
<div class="results"> ... </div>
Важное примечание. Как значения идентификатора и класса обрабатываются вне HTML
Имейте в виду, что приведенные выше правила и примеры применяются в контексте HTML.
Использование чисел, знаков препинания или специальных символов в значении id
или class
может вызвать проблемы в других контекстах, таких как CSS, JavaScript и регулярные выражения.
Например, хотя в HTML5 допустим следующий id
:
<div id="9lions"> ... </div>
... это неверно в CSS:
В CSS идентификаторы (включая имена элементов, классы и идентификаторы в селекторах) могут содержать только символы [a-zA-Z0-9] и символы ISO 10646 U + 00A0 и выше, плюс дефис (-) и подчеркивание ( _); они не могут начинаться с цифры, двух дефисов или дефисов, за которыми следует цифра . (выделено мной)
В большинстве случаев вы можете избегать символов в контекстах, где у них есть ограничения или особый смысл.