Псевдоклассы css: Псевдоклассы | htmlbook.ru

Содержание

Псевдоклассы — CSS — Дока

Кратко

Скопировано

Псевдоклассы — особый вид селектора, который уточняет тип или состояние. Обычно это какой-то качественный признак: реакция на наведение курсора, порядок следования и другие.

Пример

Скопировано

Рассмотрим CSS для подсветки строки таблицы при наведении курсора.

В обычном состоянии цвет фона — тёмный:

tr {  background-color: #18191C;}
          tr {
  background-color: #18191C;
}

При наведении курсора цвет фона изменится на голубой:

tr:hover {  background-color: #123E66;}
          tr:hover {
  background-color: #123E66;
}
Открыть демо в новой вкладке

Как понять

Скопировано

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

Как пишется

Скопировано

.block:hover {  color: red;}
          .block:hover {
  color: red;
}

Селектор может и отсутствовать. Тогда правило применится ко всем элементам, которые могут иметь признак этого псевдокласса. Например, CSS-правило :focus {} применится к любому элементу, который будет в фокусе.

:focus {  color: lightblue;}
          :focus {
  color: lightblue;
}

:active

Скопировано

Основная статья.

Применяется к интерактивным элементам в момент взаимодействия. Например, нажатая кнопка.

:is()

Скопировано

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

Вместо:

h2 a, h3 a, h4 a, h5 a, h5 a, h6 a {  /* … */}
          h2 a, h3 a, h4 a, h5 a, h5 a, h6 a {
  /* … */
}

с :is() это можно описать так:

:is(h2, h3, h4, h5, h5, h6) a {  /* … */}
          :is(h2, h3, h4, h5, h5, h6) a {
  /* … */
}

:any-link, :link, :visited

Скопировано

  • Основная статья про :link;
  • Основная статья про :visited.

Применяется ко всем элементам, которые могут иметь атрибут href (<a>, <area> и <link>). :link характеризует ещё не посещённые страницы, :visited — наоборот, посещённые (в рамках одного домена).

:checked

Скопировано

Основная статья.

Применяется к элементам, состояние которых меняется с помощью атрибута checked.

:default

Скопировано

Применяется к элементам формы (<input type="radio">, <input type="checkbox">, <option> и <button>

), у которых можно задать начальное состояние.

Например, у <input type="checkbox"> селектор применится к тому чекбоксу, у которого в разметке установлен атрибут checked, т. е. он по умолчанию выбран:

:default + span {  color: #2E9AFF;}
          :default + span {
  color: #2E9AFF;
}
Открыть демо в новой вкладке

:dir()

Скопировано

Позволяет найти элементы по направлению текста в нём (например, в арабском направление письма идёт справа налево). К сожалению, пока свойство поддерживается только в Firefox.

:disabled, :enabled

Скопировано

Основная статья.

Позволяют находить элементы формы по состоянию их атрибута disabled. Почти эквивалентны селекторам по атрибуту ([disabled] и :not([disabled]) соответственно), но более гибкие, т. к. среагируют на унаследованное состояние disabled. Если есть <fieldset disabled>, то отключаются вложенные в него контролы форм.

Открыть демо в новой вкладке

:empty

Скопировано

Основная статья.

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

Открыть демо в новой вкладке

Псевдоклассы группы child

Скопировано

Основная статья.

Селекторы элемента по его положению относительно родителя (первый, последний, n-й, единственный).

Псевдоклассы группы type

Скопировано

Основная статья.

Селектор по типу внутри одного родителя.

:fullscreen

Скопировано

Признак того, что документ развернули на всё окно (с помощью JavaScript).

Скроем панель управления у плеера, если он развёрнут на весь экран:

.player:fullscreen .player__controls {  display: none;}
          .player:fullscreen .player__controls {
  display: none;
}

:focus и :focus-within

Скопировано

Основная статья.

Элемент, который сейчас находится в фокусе. А :focus-within ещё обозначает элемент, внутри которого находится элемент в фокусе.

:has()

Скопировано

Основная статья.

Позволяет выбрать элемент, уточнив основной селектор дополнительным, при этом не увеличив его вес. В отличие от привычных селекторов, правило применится только к тому селектору, который был описан до :has(). В январе 2021 года нет поддержки ни в одном браузере.

:hover

Скопировано

Основная статья.

Состояние элемента, когда на него навели курсор.

:indeterminate

Скопировано

Элементы, которые могут находиться в промежуточном состоянии:

  • <input type="checkbox">, отображающий, что не все пункты вложенной группы были выделены.
  • Группа <input type="radio"> с одинаковым name, но у которой ни один элемент не установлен в checked.
  • <progress>.

Для <input> состояние indeterminate в HTML можно задать только через JavaScript.

Открыть демо в новой вкладке

:in-range и :out-of-range

Скопировано

Основная статья.

Применяется для <input>, у которого определены атрибуты min и max и введённое значение соответствует (:in-range) или нет (:out-of-range) этому диапазону.

Открыть демо в новой вкладке

:lang()

Скопировано

Селектор по языку содержимого. В HTML есть атрибут lang, который указывает на язык содержимого. Псевдокласс lang(

) позволяет обратиться к элементу, чьё значение атрибута lang подходит под условие.

Например, в арабском языке нет переносов:

:lang(ar) {  hyphens: none;}
          :lang(ar) {
  hyphens: none;
}

:not()

Скопировано

Основная статья.

Находит элемент, который не соответствует селектору, переданному в качестве аргумента. Очень мощный псевдокласс, позволяющий писать эффективные CSS-селекторы.

Выделим красной рамкой все <img>, которым забыли прописать атрибут alt:

img:not([alt]) {  outline: 2px solid red;}
          img:not([alt]) {
  outline: 2px solid red;
}

:optional и :required

Скопировано

Основная статья про :required.

:optional находит любой <input>, у которого не установлен атрибут required — то есть находит необязательные поля ввода. А :required — наоборот, те <input>, у которых есть этот атрибут.

:read-only и :read-write

Скопировано

Находит элементы, недоступные (:read-only) или наоборот (:read-write) для редактирования. Например, ориентируется на наличие атрибута disabled или readonly.

:root

Скопировано

Основная статья.

Соответствует корневому тегу-элементу документа. Для HTML это, соответственно, <html>, для SVG — <svg>. Специфичность селектора :root выше, чем у селектора по тегу.

:target

Скопировано

При переходе по ссылке, которая ведёт на URI-фрагмент (элемент внутри страницы), id фрагмента совпадает со значением атрибута id этого элемента — это состояние можно «поймать» с помощью псевдокласса :target:

Открыть демо в новой вкладке

:valid и :invalid

Скопировано

Основная статья.

Селектор :valid соответствует <input>, <fieldset> или <form>-элементу, контент которого валиден в соответствии с типом поля или полей внутри. Обратный эффект у :invalid — сработает при ошибке HTML-валидации.

Подсказки

Скопировано

💡 Псевдоклассы пишутся с одним двоеточием впереди.

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

💡 Если задать псевдокласс элементу-родителю, то можно стилизовать дочерний элемент при изменении состояния у родителя.

Если курсор находится внутри <nav>, увеличить размер шрифта у вложенных ссылок:

nav:hover a {  font-size: 120%;}
          nav:hover a {
  font-size: 120%;
}

На практике

Скопировано

Realetive советует

Скопировано

🛠 Понимание изменения состояния элементов и манипулирование им через псевдоклассы помогает делать производительные интерфейсы даже без JavaScript или, например, создавать собственный стиль для контролов формы:

Открыть демо в новой вкладке

Что такое псевдоклассы (pseudo classes) и псевдоэлементы (pseudo elements)


следующий → ← предыдущая

Псевдокласс можно определить как ключевое слово, объединенное с селектором, определяющим особое состояние выбранных элементов. Он добавляется в селектор для добавления эффекта к существующим элементам на основе их состояний. Например, «:hover» используется для добавления специальных эффектов к элементу, когда пользователь наводит курсор на элемент.

Имена псевдоклассов не чувствительны к регистру.

Синтаксис

Псевдокласс начинается с двоеточия (:). Посмотрим его синтаксис.

селектор: псевдокласс { стоимость имущества; }

Хотя существуют различные псевдоклассы CSS, здесь мы собираемся обсудить некоторые из наиболее часто используемых псевдоклассов. Широко используемые классы CSS сведены в следующую таблицу:

псевдокласс Описание
:активный Используется для добавления стиля к активному элементу.
:наведение Добавляет специальные эффекты к элементу, когда пользователь наводит указатель мыши на элемент.
:ссылка IIДобавляет стиль непросмотренной ссылке.
:посетили Добавляет стиль посещенной ссылке.
:язык Используется для определения языка, который будет использоваться в указанном элементе.
:фокус Выбирает элемент, на котором в данный момент находится фокус пользователя.
:первый ребенок Добавляет специальные эффекты к элементу, который является первым дочерним элементом другого элемента.

Давайте обсудим приведенные выше псевдоклассы вместе с примером.

: наведение псевдокласса

Этот псевдокласс добавляет элементу особый стиль, когда пользователь наводит на него курсор. Если вы хотите сделать его эффективным, его нужно применять после «:link» и «:visited» псевдоклассов.

Пример

<голова> <стиль> тело{ выравнивание текста: по центру; } h2: наведите { красный цвет; } h3: наведите { цвет синий; } <тело>

Привет, мир

Это пример псевдокласса :hover

Протестируйте сейчас

:активный псевдокласс

Применяется при нажатии или активации элементов. Он выбирает активированный элемент.

Мы можем понять это на примере, приведенном ниже.

Пример

<голова> <стиль> тело{ выравнивание текста: по центру; } а: активный { цвет: желтый; } h2, h3, h4{ красный цвет; ; } <тело>

Привет, мир

Псевдокласс :active

Нажмите на следующую ссылку, чтобы увидеть эффект

Нажмите на ссылку

Протестируйте сейчас

:посетил псевдокласс

Выбирает посещенные ссылки и добавляет к ним специальные стили. Его возможными значениями могут быть любые названия цветов в допустимом формате.

Пример

<голова> <стиль> тело{ выравнивание текста: по центру; } а: посетил { красный цвет; } <тело>

Привет, мир

Псевдокласс :visited

Нажмите на следующую ссылку, чтобы увидеть эффект

Нажмите на ссылку

Протестируйте сейчас

:язык псевдокласса

Это полезно для документов, которые требуют нескольких языков.

Это позволяет нам определять специальные правила для разных языков.

Пример

В этом примере мы указываем p:lang(fr) , который выбирает элементы с атрибутом lang=»fr» .

<голова> <стиль> тело{ выравнивание текста: по центру; } п: язык (фр) { семейство шрифтов: Verdana; цвет синий; } <тело>

Без псевдокласса :lang

С псевдоклассом :lang со значением fr

Протестируйте сейчас

: фокус псевдокласса

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

Пример

<стиль> форма{ выравнивание текста: по центру; } ввод: фокус { граница: 5px сплошной светло-голубой; box-shadow: 10px 10px 10px черный; цвет синий; ширина: 300 пикселей; }

<тело> <форма>

Имя:

Протестируйте сейчас

:первый дочерний псевдокласс

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

Примечание. Мы должны объявить вверху документа, чтобы псевдокласс «:first-child» работал в IE8 и его более ранних версиях.

На следующем рисунке это поясняется более четко.

Пример

<голова> <стиль> h2: первый ребенок { отступ текста: 200px; цвет синий; } <тело> <дел>

Это первый заголовок в div. Он будет иметь отступ, а его цвет будет синим.

Это второй заголовок в div, который не будет затронут.

Протестируйте сейчас

Простая всплывающая подсказка

Подсказка указывает дополнительную информацию о чем-либо, когда пользователь наводит курсор на элемент. Давайте создадим всплывающую подсказку, используя псевдокласс «:hover» .

Пример

<голова> <стиль> тело{ выравнивание текста: по центру; } h3{ дисплей: нет; цвет фона: красный; белый цвет; отступ: 20 пикселей; } дел { размер шрифта: 40px; } div: hover h3 { дисплей: блок; } <тело>

Наведите указатель мыши на текст ниже, чтобы увидеть эффект

Привет, мир

Добро пожаловать в javaTpoint

Протестируйте сейчас

CSS-классы и псевдоклассы

Классы в CSS можно комбинировать с псевдоклассами. Мы можем записать это как-

Синтаксис

selector.class: псевдокласс { стоимость имущества; }

Мы можем понять это на следующем примере.

Пример

<голова> <стиль> тело{ выравнивание текста: по центру; } div.hello:наведите { красный цвет; размер шрифта: 40px; } <тело>

CSS-классы и псевдоклассы

Наведите курсор на текст ниже

Привет, мир

Протестируйте сейчас

Следующая темаПсевдоэлементы CSS

← предыдущая следующий →