#id
Селектор позволяет целевой элемент, ссылаясь на id
атрибут HTML. Подобно тому, как атрибуты класса обозначаются в CSS с «точкой» ( .
) перед именем класса, атрибуты ID имеют префикс «octothorpe» ( #
), более известный как «решетка» или «знак решетки».
#header ( /* this is the ID selector */ background: #eee; )
Значения атрибута ID должны быть уникальными. HTML с двумя или более идентичными id
s не проверяет и дает непредсказуемые результаты. Если есть два одинаковых, CSS все равно будет соответствовать и стилизовать оба. Однако JavaScript при запросе идентификатора найдет первый и остановится.
Селекторы ID чрезвычайно эффективны. У них очень высокая специфичность, обычно записываемая как (0, 1, 0, 0). Применяемые с ними стили переопределяют другие селекторы, которые используют только теги или классы. Показывать:
Посмотрите на эту ручку!
Передается абзац с идентификатором и атрибутом класса, что противоречит правилам CSS; даже несмотря на то, что селектор класса ( .reusable
) находится ниже селектора идентификатора ( #unique
) в CSS (обычно он переопределяет стили, расположенные над ним в «каскаде»), абзац остается красным, потому что перекрывает #unique
установленный синий цвет .reusable
. Бесконечное количество классов никогда не может превзойти специфику идентификатора (хотя однажды была ошибка, когда 256 классов превзошли идентификатор).
Высокая специфичность и уникальность означает, что использование #id
CSS является «ядерным вариантом»: чрезмерно мощным, негибким и непропорционально эффективным. Отказ от #id
селектора в CSS считается наилучшей практикой: предпочтительно использовать класс почти в каждом случае.
При этом атрибуты ID имеют несколько ценных применений за пределами CSS:
- Предоставление уникальных хуков для JavaScript
- Элементы с
id
атрибутами могут быть нацелены на теги привязки, установив дляhref
атрибутаid
значение с префиксом#
символа. Щелчок по этой якорной ссылке перефокусирует текущую страницу на соответствующий элементid
. Это называется «идентификатором фрагмента». - Для действительно уникальных элементов в вашем HTML, таких как элементы формы, идентификаторы могут быть полезны для таких вещей, как связывание
label
s иinput
s.
Точки интереса
- Действительный
#id
знак не может начинаться с числа и должен состоять как минимум из одного символа. Большая часть Unicode - допустимые символы вid
. id
атрибуты и селекторы чувствительны к регистру и должны точно совпадать в HTML, CSS и JavaScript.
Поддержка браузера
Хром | Сафари | Fire Fox | Опера | IE | Android | iOS |
---|---|---|---|---|---|---|
Любой | Любой | Любой | Любой | Любой | Любой | Любой |