Псевдокласс :target | htmlbook.ru
Internet Explorer | Chrome | Opera | Safari | Firefox | Android | iOS | |
9.0+ | 1.0+ | 9.6+ | 1.0+ | 3.0+ | 1.0+ | 1.0+ | 1.0+ |
Краткая информация
Версии CSS
CSS 1 | CSS 2 | CSS 2.1 | CSS 3 |
---|---|---|---|
Описание
Для перехода к выбранному фрагменту документа, в адресе пишется символ # и указывается имя идентификатора. К примеру, в адресе http://www.w3.org/TR/css3-selectors/#target-pseudo происходит переход к элементу, атрибут id которого задан как target-pseudo. Такая запись адреса называется «целевой элемент». Псевдокласс :target применяется к целевому элементу, иными словами, к идентификатору, который указан в адресной строке браузера.
Синтаксис
элемент:target { … }
Значения
Нет.
Пример
HTML5CSS3IECrOpSaFx
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>target</title>
<style>
h3:target {
background: #fc0; /* Цвет фона */
padding: 3px;
}
</style>
</head>
<body>
<ul>
<li><a href="#h2">История 1</a></li>
<li><a href="#h3">История 2</a></li>
</ul>
<h3>История 1</h3>
<p>История о том, как необходимо было сделать могилу,
ее начали копать, а потом закапывать, и что из этого получилось.</p>
<h3>История 2</h3>
<p>История о том, как возле столовой появились загадочные розовые
следы с шестью пальцами, и почему это случилось.</p>
</body>
</html>
В данном примере целевой элемент выделяется цветом фона.
Браузеры
В Safari до версии 3.0 стилевые правила не применяются, если пользователь использует навигацию в браузере (кнопки «Назад» и «Вперед»).
Использование псевдокласса :target в селекторах — Веб-технологии для разработчиков
Иногда пользователям трудно заметить, что URL указывает на определённую часть документа. Узнайте, как можно использовать простое CSS правило, чтобы привлечь внимание пользователей к цели указания URL и улучшить их впечатления.
Выбор целевых элементов
Псевдокласс :target
используется для стилизации целевого элемента URL, содержащего идентификатор фрагмента. Например, URL http://developer.mozilla.org/en/docs/Using_the_:target_selector#example
содержит идентификатор фрагмента #example
. В HTML, идентификаторы определяются значениями атрибутов id
или name
, т.к. эти аттрибуты разделяют одно пространство имён. Таким образом, в вышеприведённом примере URL указывает на первый элемент «example» в документе.
Пердположим, вы хотите стилизовать любой элемент h3
, который является целью URL, но не хотите, чтобы другие элементы получили стиль цели. Сделать это довольно просто:
h3:target { font-weight: bold; }
Также возможно создать стили, специфичные для определённого фрагмента документа. Это достигается использованием такого же идентификационного значения, как в URI. Таким образом, чтобы добавить рамку к фрагменту #example
, напишем:
#example:target { border: 1px solid black; }
Отметка всех элементов, как целевых
Если вы намерены создать общий стиль, который будет применяться ко всем целевым элементам, то вам пригодится следующий универсальный селектор:
:target { color: red; }
Пример
В данном примере имеются пять ссылок, которые ссылаются на элементы одного и того же документа. Выбор ссылки «First» , например, приведёт к тому, что <h2>
станет целевым элементом. Заметьте, что при прокутке документа целевые элементы располагаются вверху окна браузера, если это возможно.
<h5>...</h5> <p>...</p> <div>...</div> <a>...</a> <em>...</em> <a href="#one">First</a> <a href="#two">Second</a> <a href="#three">Third</a> <a href="#four">Fourth</a> <a href="#five">Fifth</a>
Вывод
В некоторых случаях, когда идентификатор фрагмента указывает на часть документа, читатели могут запутаться в том, какую именно часть документа они читают. Стилизуя целевой элемент URI, такую путаницу читателей можно уменьшить или убрать вообще.
Original Document Information
- Author(s): Eric Meyer, Standards Evangelist, Netscape Communications
- Original Copyright Information: Copyright © 2001-2003 Netscape. All rights reserved.
- Note: This reprinted article was originally part of the DevEdge site.
Псевдокласс :target | CSS | WebReference
Для перехода к выбранному фрагменту документа, в адресе пишется символ # и указывается имя идентификатора. К примеру, в адресе http://www.w3.org/TR/css3-selectors/#target-pseudo происходит переход к элементу, атрибут id которого задан как target-pseudo. Такая запись адреса называется «целевой элемент». Псевдокласс :target применяется к целевому элементу, иными словами, к идентификатору, который указан в адресной строке браузера.
Синтаксис
Селектор:target { ... }
Обозначения
Описание | Пример | |
---|---|---|
<тип> | Указывает тип значения. | <размер> |
A && B | Значения должны выводиться в указанном порядке. | <размер> && <цвет> |
A | B | Указывает, что надо выбрать только одно значение из предложенных (A или B). | normal | small-caps |
A || B | Каждое значение может использоваться самостоятельно или совместно с другими в произвольном порядке. | width || count |
[ ] | Группирует значения. | [ crop || cross ] |
* | Повторять ноль или больше раз. | [,<время>]* |
+ | Повторять один или больше раз. | <число>+ |
? | Указанный тип, слово или группа не является обязательным. | inset? |
{A, B} | Повторять не менее A, но не более B раз. | <радиус>{1,4} |
# | Повторять один или больше раз через запятую. | <время># |
Пример
<!DOCTYPE html>
<html>
<head>
<meta charset=»utf-8″>
<title>target</title>
<style>
h3:target {
background: #fc0; /* Цвет фона */
padding: 3px;
}
</style>
</head>
<body>
<ul>
<li><a href=»#h2″>История 1</a></li>
<li><a href=»#h3″>История 2</a></li>
</ul>
<h3>История 1</h3>
<p>История о том, как необходимо было сделать могилу,
ее начали копать, а потом закапывать, и что из этого получилось.</p>
<h3>История 2</h3>
<p>История о том, как возле столовой появились загадочные розовые
следы с шестью пальцами, и почему это случилось.</p>
</body>
</html>
В данном примере целевой элемент выделяется цветом фона.
Примечание
В Safari до версии 3.0 стилевые правила не применяются, если пользователь использует навигацию в браузере (кнопки «Назад» и «Вперед»).
Спецификация
Каждая спецификация проходит несколько стадий одобрения.
- Recommendation (Рекомендация) — спецификация одобрена W3C и рекомендована как стандарт.
- Candidate Recommendation (Возможная рекомендация) — группа, отвечающая за стандарт, удовлетворена, как он соответствует своим целям, но требуется помощь сообщества разработчиков по реализации стандарта.
- Proposed Recommendation (Предлагаемая рекомендация) — на этом этапе документ представлен на рассмотрение Консультативного совета W3C для окончательного утверждения.
- Working Draft (Рабочий проект) — более зрелая версия черновика после обсуждения и внесения поправок для рассмотрения сообществом.
- Editor’s draft (Редакторский черновик) — черновая версия стандарта после внесения правок редакторами проекта.
- Draft (Черновик спецификации) — первая черновая версия стандарта.
Браузеры
В таблице браузеров применяются следующие обозначения.
- — свойство полностью поддерживается браузером со всеми допустимыми значениями;
- — свойство браузером не воспринимается и игнорируется;
- — при работе возможно появление различных ошибок, либо свойство поддерживается лишь частично, например, не все допустимые значения действуют или свойство применяется не ко всем элементам, которые указаны в спецификации.
Число указывает версию браузера, начиная с которой свойство поддерживается.
Автор и редакторы
Автор: Влад Мержевич
Последнее изменение: 18.03.2018
Редакторы: Влад Мержевич
Псевдокласс :target | CSS — Примеры
Изменить внешний вид элемента при смене URL-адреса
Элементу задан атрибут id
и некие стили CSS, в данном случае свойство border
.
Образец
<style> #raz { border: solid yellow; } #raz:target { border-color: green; } </style> <div id="raz">Образец</div>
Если в адресной строке к URL добавить #
(хэш-символ) с тем же значением, что id
у элемента, то содержимое окна браузера без перезагрузки страницы промотается так, что первым будет виден верхний край рассматриваемого элемента. Меняют URL-адрес преимущественно не вручную, а с помощью ссылки или с помощью объекта Window.location (JavaScript).
При этом внешний вид данного элемента сменится на тот, что указан в псевдоклассе :target
, благодаря чему можно подсветить элемент, к которому был сделан переход.
Образец
<a href="#raz">Образец</a>
Для того, чтобы вернуть элемент к исходному виду, можно изменить часть URL после хэша на любую другую.
Образец
<a href="#razNo">Образец</a>
Разный стиль :target
для одного тега
Тегу можно задать только один уникальный id
.
Второй образец
Красный | Синий | Зелёный
<style> #dvaRed:target { color: red; } #dvaBlue:target { color: blue; } #dvaGreen:target { color: green; } </style> <div> <div> <div> Второй образец </div> </div> </div> <a href="#dvaRed">Красный</a> | <a href="#dvaBlue">Синий</a> | <a href="#dvaGreen">Зелёный</a>
Общий стиль :target
для нескольких тегов
Третий образец
Третий образец
Третий образец
Первый DIV | Второй DIV | Третий DIV
<style> .tri:target { color: red; } </style> <div>Третий образец</div> <div>Третий образец</div> <div>Третий образец</div> <a href="#tri1">Первый DIV</a> | <a href="#tri2">Второй DIV</a> | <a href="#tri3">Третий DIV</a>
Изменить нескольких тегов при переходе к одному id
Четвёртый образец
Четвёртый образец
Четвёртый образец
Все три DIV
<style> #pyat:target, #pyat:target ~ .pyat { color: red; } </style> <div>Четвёртый образец</div> <div>Четвёртый образец</div> <div>Четвёртый образец</div> <a href="#pyat">Все три DIV</a>
Псевдокласс :target
«без прыжков»
Когда полезна связь с URL, но не нужна перемотка к элементу. Например, для того, чтобы переправить посетителя к изначально открытой tab-вкладке (см. пункт «CSS Tabs, с переходом по щелчку»), раскрытой полностью таблице и т.п.
Пятый образец
Изменить цвет без прокрутки к DIV
<style> #shest { position: fixed; } #shest:target ~ .shest { color: red; } </style> <br> <div>Пятый образец</div> <a href="#shest">Изменить цвет без прокрутки к DIV</a>
Шестой образец раз два три
Шестой образец раз два три
11
12
13
21
22
23
<style> [id^="sem"] { position: fixed; } [id^="sem1"]:target ~ .sem:nth-of-type(1), [id^="sem2"]:target ~ .sem:nth-of-type(2) { background: green; } #sem11:target ~ .sem:nth-of-type(1) b:nth-of-type(1), #sem12:target ~ .sem:nth-of-type(1) b:nth-of-type(2), #sem13:target ~ .sem:nth-of-type(1) b:nth-of-type(3), #sem21:target ~ .sem:nth-of-type(2) b:nth-of-type(1), #sem22:target ~ .sem:nth-of-type(2) b:nth-of-type(2), #sem23:target ~ .sem:nth-of-type(2) b:nth-of-type(3) { color: yellow; } </style> <br><br><br><br><br><br> <div><b>первый</b> <b>второй</b> <b>третий</b></div> <div><b>первый</b> <b>второй</b> <b>третий</b></div> <a href="#sem11">11</a> <a href="#sem12">12</a> <a href="#sem13">13</a> <a href="#sem21">21</a> <a href="#sem22">22</a> <a href="#sem23">23</a>
Зачем нужен псевдокласс target в CSS3.
Вы здесь:
Главная — CSS — CSS3 — Зачем нужен псевдокласс target в CSS3.
В CSS3 появилось много нового, и сегодня мы разберем один из новых псевдоклассов — target.
Target с английского переводится как «цель» и это не просто так. Дело в том, что данный псевдокласс применяет какие-то стили к элементу, на который ссылаются. Объяснять это просто так нет смысла, лучше посмотрим сразу на пример.
К примеру, у нас есть такой HTML код:
<div>Какой-то текст</div>
Теперь мы можем сослаться на данный элемент из строки запроса
http://site.local/#id1
Таким образом мы сможем перейти к данному элементу.
Теперь рассмотрим пример с псевдоклассом target.
<a href="#id1">Ссылка</a>
<div>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Dolore dignissimos odio eius, delectus autem facilis sunt vero ex, eum tempore excepturi harum voluptatem corporis modi, ducimus quam ab. Ipsa, officia.</p>
</div>
И пропишем для данного элемента стили
div p:target {
color: green;
}
Теперь, при клике по ссылке, текст в параграфе станет зеленого цвета, т.к. вы начнете на него ссылаться.
Итак, вот такой простой псевдокласс target в CSS3, однако, он позволяет делать очень крутые вещи. Одну из таких мы разберем в следующей статье.
Спасибо за внимание и удачи!
-
Создано 02.09.2014 16:27:23 -
Михаил Русаков
Предыдущая статья Следующая статья
Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!
Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.
Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления
Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.
Порекомендуйте эту статью друзьям:
Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):
-
Кнопка:
<a href=»https://myrusakov.ru» target=»_blank»><img src=»https://myrusakov.ru/images/button.gif» alt=»Как создать свой сайт» /></a>Она выглядит вот так:
-
Текстовая ссылка:
<a href=»https://myrusakov.ru» target=»_blank»>Как создать свой сайт</a>Она выглядит вот так: Как создать свой сайт
- BB-код ссылки для форумов (например, можете поставить её в подписи):
[URL=»https://myrusakov.ru»]Как создать свой сайт[/URL]
Псевдоклассы СSS :not() и :target
Сегодня мы рассмотрим менее распространенные псевдоклассы CSS, которые поддерживаются в современных браузерах: child-indexed и typed child-indexed, а также псевдоклассы для элементов ввода input. Псевдоклассы child-indexed и typed child-indexed позволяют выделять элементы по их расположению в дереве документа. Псевдоклассы input определяют поля формы на основе их значений и состояний.
В этом случае идентификатор фрагмента является частью URL, который следует после хеша # (например, #top или #footnote1). Такое часто используется для организации навигации по странице при помощи так называемой «jump-link». С помощью псевдокласса :target можно подсветить фрагмент документа:
<section> <h3>Comments on this post</h3> <article>...</article> <article>...</article> <article>...</article> </section>
После нескольких штрихов и работы с CSS получается результат, который приведен ниже:
Каждый comment в коде обозначен идентификатором, который позволяет ссылаться на конкретный фрагмент. Например, <a href=»#comment-1146937891″>. Всё что остаётся – это стилизовать комментарий, используя псевдокласс CSS child :target:
.comment:target { background: #ffeb3b; border-color: #ffc107 }
Когда идентификатор фрагмента в URL совпадает с комментарием (например, http://example.com/post/#comment-1146937891), он будет подсвечен жёлтым цветом, как показано ниже:
Псевдокласс CSS :target позволяет создавать комбинации, что открывает пространство для манёвров и позволяет не использовать JavaScript. Стилизуем наш пример с помощью CSS3. Для начала посмотрите на HTML-код:
<div> <div> <a href="#tab1">Tab 1</a> <a href="#tab2">Tab 2</a> <a href="#tab3">Tab 3</a> </div> <ul> <li> <p>This is tab 1.</p> </li> <li> <p>This is tab 2</p> </li> <li> <p>This is tab 3.</p> </li> </ul> </div>
Здесь всё просто: три вкладки и контент с привязкой. Добавим CSS:
[id^=tab] { position: absolute; } [id^=tab]:first-child { z-index: 1; } [id^=tab]:target { z-index: 2; }
Здесь и начинается волшебство. Сначала мы задаём вкладкам абсолютное позиционирование. Затем располагаем первую вкладку поверх контента при помощи свойства z-index: 1. Это важно, если при первом посещении пользователи должны видеть именно эту вкладку. Добавляем свойство z-index 1 к нашей вкладке target. Это гарантирует, что выделенный слой всегда будет расположен поверх остального контента. Результат представлен ниже:
В более доступной версии (в том числе и псевдоклассах CSS ссылок) можно использовать JavaScript для переключения атрибутов hidden и aria-hidden=true.
Клик по вкладке обновляет URL с использованием нового идентификатора фрагмента, после чего приводится в действие состояние :target.
Одним из самых многофункциональных считается псевдокласс :not(). Он возвращает все элементы, за исключением тех, которые совпадают с аргументом селектора. Например, p:not(.message) выделяет все элементы p без класса message.
Псевдокласс :not() принимает один аргумент, как и большинство функций в других языках программирования. Любой аргумент, заданный в :not(), должен быть простым селектором, названием класса или ID, другим псевдоклассом. Псевдоклассы не работают так, как составные селекторы типа label.checkbox или сложные селекторы типа p img.
Посмотрите на пример формы, в которой используется текстовые элементы ввода и radio buttons:
<form method="post" action="#"> <h2>Join the Cool Kids Club</h2> <p> <label for="name">Name:</label> <input type="text" name="name" required> </p> <p> <label for="email">Email:</label> <input type="email" name="email" required> </p> <fieldset> <legend>Receive a digest?</legend> <p> <input type="radio" name="digest"> <label for="daily">Daily</label> <input type="radio" name="digest"> <label for="weekly">Weekly</label> </p> </fieldset> <button type="submit">Buy Tickets!</button> </form>
В HTML label, ассоциированные с элементами типа radio, имеют класс .label-radio. Можно использовать псевдокласс CSS нажатия :not() для выделения элементов, не имеющих класса label-radio, как это показано на картинке ниже:
label:not(.label-radio) { font-weight: bold; display:block; }
Рассмотрим более сложный пример. Используем стилизацию текстовых полей. Сюда входят элементы ввода number, email и text, а также password и url. Кроме этого мы исключим элементы radio, checkbox и range. Вам наверняка захочется воспользоваться следующим списком селектора:
([type=radio]), input:not([type=checkbox]), input:not([type=range]) { ... }
К сожалению, это не поможет, так как каждый новый селектор переписывает предыдущий. Это всё равно, что писать:
input:not([type=radio]){ ... } input:not([type=checkbox]) { ... } input:not([type=range]) {... }
Вместо этого, нужно связать псевдоклассы :not() в цепочку, чтобы они отфильтровывали все элементы input:
input:not([type=radio]):not([type=checkbox]):not([type=range]) { ... }
Приведённая цепочка селекторов также соответствует элементам [type=image], [type=reset], [type=color] и [type=submit]
Использование псевдоклассов и псевдоэлементов CSS без простого селектора эквивалентно его использованию с универсальным селектором. Другими словами, :not([type=radio]) – то же, что и *:not([type=radio]). В данном случае нашему критерию отвечает любой элемент без атрибута type и значения radio, включая html и body. Чтобы предотвратить это, используйте :not() с названием класса, ID или селектор атрибутов в качестве селектора.
В CSS-селекторах Level 4 изменен принцип работы :not(), так что, теперь он принимает в качестве аргумента не только простые селекторы, но и списки. Вместо того чтобы связывать классы, как это делалось раньше, можно указывать аргументы через запятую:
input:not([type=radio], [type=checkbox], [type=range]) { ... }
К сожалению, пока далеко не все браузеры поддерживают этот вариант, поэтому мы рекомендуем и дальше использовать цепочки.
Данная публикация представляет собой перевод статьи «CSS Pseudo-classes: :not() and :target» , подготовленной дружной командой проекта Интернет-технологии.ру
телеграм канал. Подпишись, будет полезно!
Псевдоклассы CSS: :not и :target
От автора: статья является выдержкой из нашей книги CSS мастер за авторством Tiffany B. Brown. Книгу можно купить в магазинах по всему миру или приобрести цифровую версию. Ранее в этой главе мы уже говорили, что псевдоклассы позволяют задавать стили на основе информации, которую невозможно получить из дерева документа и на которую нельзя сослаться с помощью простых селекторов. К ним относятся логические и лингвистические псевдоклассы типа :not и :lang(), а также псевдоклассы, срабатывающие на пользовательские события, типа :hover и :focus.
В этом разделе мы рассмотрим тайные и малоизвестные псевдоклассы с упором на то, что есть в браузерах: дочерние и типизированные дочерние псевдоклассы, а также псевдоклассы ввода. Дочерние обычные и дочерние типизированные псевдоклассы позволяют выбирать элементы на основе их позиции в поддереве документа. Псевдоклассы ввода выбирают поля форм по их значениям и состояниям.
Выделение фрагментов страницы с помощью :target
Идентификатор фрагмента – это та часть URL, которая идет после символа #. Например, #top или #footnote1. Вы могли их использовать для создания внутренней навигации по странице – так называемые якоря. С помощью :target можно выделить часть документа, относящуюся к этому фрагменту. И тут совсем не нужен JS.
Например, у вас есть несколько комментариев или ветка дискуссионного клуба:
Практический курс по верстке адаптивного сайта с нуля!
Изучите курс и узнайте, как верстать современные сайты на HTML5 и CSS3
Узнать подробнее
<section>
<h3>Comments on this post</h3>
<article>…</article>
<article>…</article>
<article>…</article>
</section>
<section> <h3>Comments on this post</h3> <article>…</article> <article>…</article> <article>…</article> </section> |
Добавим немного CSS и всяких украшений, и страница будет выглядеть примерно так.
У каждого комментария в коде выше есть свой идентификатор фрагмента. То есть на каждый комментарий можно получить прямую ссылку. Например, <a href=»#comment-1146937891″>. Осталось лишь задать стили комментария с помощью псевдокласса :target:
.comment:target {
background: #ffeb3b;
border-color: #ffc107
}
.comment:target { background: #ffeb3b; border-color: #ffc107 } |
Когда в URL есть идентификатор фрагмента, ссылающийся на комментарий (например, http://example.com/post/#comment-1146937891), комментарий будет выделяться желтым фоном, как на скриншоте ниже.
С :target можно использовать любые стили, что позволяет создавать вкладки без подключения JS. Craig Buckler подробно описал эту технику в своем уроке «как создать вкладки на чистом CSS3 с помощью селектора :target». Мы немного освежим его способ, добавим чуть больше CSS3 свойств. Во-первых, давайте взглянем на наш HTML:
<div>
<div>
<a href=»#tab1″>Tab 1</a>
<a href=»#tab2″>Tab 2</a>
<a href=»#tab3″>Tab 3</a>
</div>
<ul>
<li>
<p>This is tab 1.</p>
</li>
<li>
<p>This is tab 2</p>
</li>
<li>
<p>This is tab 3.</p>
</li>
</ul>
</div>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <div> <div> <a href=»#tab1″>Tab 1</a> <a href=»#tab2″>Tab 2</a> <a href=»#tab3″>Tab 3</a> </div>
<ul> <li> <p>This is tab 1.</p> </li> <li> <p>This is tab 2</p> </li> <li> <p>This is tab 3.</p> </li> </ul> </div> |
Довольно простая разметка. Тут есть вкладки и контент для них. Добавим CSS:
[id^=tab] {
position: absolute;
}
[id^=tab]:first-child {
z-index: 1;
}
[id^=tab]:target {
z-index: 2;
}
[id^=tab] { position: absolute; } [id^=tab]:first-child { z-index: 1; } [id^=tab]:target { z-index: 2; } |
А вот тут и кроется вся магия. Наши вкладки имеют абсолютное позиционирование. Дальше мы помещаем первую вкладку на самый верх с помощью z-index: 1. Данное свойство делает первую вкладку видимой по умолчанию. В конце мы добавляем z-index: 1 к нашей целевой вкладке. Так нужная нам вкладка всегда будет лежать поверх остальных. Результат представлен на скриншоте ниже.
Совет: повышение доступности
Для большей доступности можно использовать JS, с помощью которого будет устанавливаться атрибут hidden или aria-hidden=true в зависимости от видимости вкладок.
Клик по вкладке обновляет идентификатор фрагмента в URL, что в свою очередь вызывает состояние :target.
Вычитание селекторов с помощью :not()
Псевдокласс :not(), возможно, самый мощный из новых. Он возвращает все элементы кроме тех, которые указаны в аргументе. Например, p:not(.message) выберет все теги p без класса message.
Практический курс по верстке адаптивного сайта с нуля!
Изучите курс и узнайте, как верстать современные сайты на HTML5 и CSS3
Узнать подробнее
Псевдокласс :not() также известен как функциональный псевдокласс. Он принимает один аргумент, как функции в других языках программирования. Передаваемый в :not() аргумент должен быть простым селектором: тип элемента, класс, ID или другой псевдокласс. Псевдокласс не сработает, если будет передан составной селектор типа label.checkbox или сложный селектор типа p img.
Пример формы с текстовыми полями и радиокнопками:
<form method=»post» action=»#»>
<h2>Join the Cool Kids Club</h2>
<p>
<label for=»name»>Name:</label>
<input type=»text» name=»name» required>
</p>
<p>
<label for=»email»>Email:</label>
<input type=»email» name=»email» required>
</p>
<fieldset>
<legend>Receive a digest?</legend>
<p>
<input type=»radio» name=»digest»>
<label for=»daily»>Daily</label>
<input type=»radio» name=»digest»>
<label for=»weekly»>Weekly</label>
</p>
</fieldset>
<button type=»submit»>Buy Tickets!</button>
</form>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | <form method=»post» action=»#»> <h2>Join the Cool Kids Club</h2> <p> <label for=»name»>Name:</label> <input type=»text» name=»name» required> </p> <p> <label for=»email»>Email:</label> <input type=»email» name=»email» required> </p> <fieldset> <legend>Receive a digest?</legend> <p> <input type=»radio» name=»digest»> <label for=»daily»>Daily</label> <input type=»radio» name=»digest»> <label for=»weekly»>Weekly</label> </p> </fieldset> <button type=»submit»>Buy Tickets!</button> </form> |
В HTML выше лейблы, относящиеся к типу radio, имеют класс .label-radio. С помощью псевдокласса :not() можно выбрать элементы без класса label-radio, как показано на скриншоте ниже:
label:not(.label-radio) {
font-weight: bold;
display:block;
}
label:not(.label-radio) { font-weight: bold; display:block; } |
Этот пример поинтереснее. Давайте стилизуем текстовые поля. К таким полям относятся инпуты с типом number, email, text, password и url. Но давайте сделаем это, исключив из выборки радиокнопки, чекбоксы и ползунки. Первое, что может прийти в голову:
([type=radio]),
input:not([type=checkbox]),
input:not([type=range]) {
…
}
([type=radio]), input:not([type=checkbox]), input:not([type=range]) { … } |
Но это не сработает, так как каждый селектор будет переписывать предыдущий. Это эквивалент такой записи:
input:not([type=radio]){ … }
input:not([type=checkbox]) { … }
input:not([type=range]) {… }
input:not([type=radio]){ … } input:not([type=checkbox]) { … } input:not([type=range]) {… } |
Вместо этого необходимо сцепить псевдоклассы :not(), чтобы они все фильтровали поля input.
input:not([type=radio]):not([type=checkbox]):not([type=range]) {
…
}
input:not([type=radio]):not([type=checkbox]):not([type=range]) { … } |
Использовать псевдокласс или псевдоэлемент без простого селектора – это то же самое, что использовать его с универсальным селектором. То есть запись :not([type=radio]) равна *:not([type=radio]). В таком случае в выборку попадут все элементы без атрибута type и значения radio, в том числе html и body. Чтобы исключить это, используйте :not() с классом, ID или селектором атрибута. Кстати, это касается и классов, ID и селекторов атрибутов: .warning и [type=radio] равны *.warning и *[type=radio] соответственно.
Спецификация CSS Selectors Level 4 улучшает принцип работы :not(). Теперь он может принимать список аргументов, а не просто селекторы. Вместо сцепки можно использовать запятую в качестве разделителя в аргументе:
input:not([type=radio], [type=checkbox], [type=range]) {
…
}
input:not([type=radio], [type=checkbox], [type=range]) { … } |
К сожалению, этот синтаксис на данный момент не поддерживается ни в одном браузере. Пока что пользуйтесь сцепкой.
Автор: Tiffany Brown
Источник: https://www.sitepoint.com/
Редакция: Команда webformyself.
Практический курс по верстке адаптивного сайта с нуля!
Изучите курс и узнайте, как верстать современные сайты на HTML5 и CSS3
Узнать подробнее
PSD to HTML
Практика верстки сайта на CSS Grid с нуля
Смотреть
Использование псевдокласса: target в селекторах — Веб-технологии для разработчиков
Когда URL-адрес указывает на конкретную часть документа, пользователю может быть трудно заметить. Узнайте, как можно использовать простой CSS, чтобы привлечь внимание к цели URL-адреса и улучшить взаимодействие с пользователем.
Выбор цели
Псевдокласс : target
используется для стилизации целевого элемента URL-адреса, содержащего идентификатор фрагмента. Например, URL-адрес http: // developer.mozilla.org/en/docs/Using_the_:target_selector#example
содержит идентификатор фрагмента #example
. В HTML идентификаторы находятся в виде значений атрибутов id
или name
, поскольку они используют одно и то же пространство имен. Таким образом, URL-адрес примера будет указывать на заголовок «пример» в этом документе.
Предположим, вы хотите стилизовать любой элемент h3
, который является целью URL-адреса, но не хотите, чтобы какой-либо другой тип элемента получил целевой стиль.Это достаточно просто:
h3: target {font-weight: bold; }
Также можно создавать стили, специфичные для определенного фрагмента документа. Это делается с использованием того же идентификационного значения, что и в URI. Таким образом, чтобы добавить границу к фрагменту #example
, мы должны написать:
#example: target {border: 1px сплошной черный; }
Нацелены на все элементы
Если намерение состоит в том, чтобы создать «общий» стиль, который будет применяться ко всем целевым элементам, тогда пригодится универсальный селектор:
: цель {цвет: красный; }
Пример
В следующем примере пять ссылок указывают на элементы в одном документе.Выбор ссылки «Первая», например, приведет к тому, что
станет целевым элементом. Обратите внимание, что документ может перейти в новую позицию прокрутки, так как целевые элементы размещаются в верхней части окна браузера, если это возможно. ...
...
... ... ...
Первый
Второй
Третий
Четвертый
Пятое
Заключение
В случаях, когда идентификатор фрагмента указывает на часть документа, читатели могут запутаться в том, какую часть документа они должны читать.Путем стилизации цели URI можно уменьшить или устранить путаницу у читателя.
Информация об исходном документе
- Автор (ы): Эрик Мейер, евангелист стандартов, Netscape Communications
- Оригинальная информация об авторских правах: Copyright © 2001-2003 Netscape. Все права защищены.
- Примечание. Эта перепечатанная статья изначально была частью сайта DevEdge.
.
Псевдоклассы — Веб-технологии для разработчиков
Псевдокласс CSS — это ключевое слово, добавляемое к селектору, определяющее особое состояние выбранных элементов. Например, : hover
можно использовать для изменения цвета кнопки при наведении на нее указателя пользователя.
/ * Любая кнопка, над которой находится указатель пользователя * /
button: hover {
цвет синий;
}
Псевдоклассы
позволяют применять стиль к элементу не только по отношению к содержимому дерева документа, но и по отношению к внешним факторам, таким как история навигатора (например, : посетил
), статус его содержимое (например, : проверено
для определенных элементов формы) или положение мыши (например, : hover
, которое позволяет узнать, находится ли указатель мыши над элементом или нет).
Примечание: В отличие от псевдоклассов, псевдоэлементы могут использоваться для стилизации определенной части элемента .
Синтаксис
Селектор
: псевдокласс {
стоимость имущества;
}
Как и обычные классы, вы можете объединить в один селектор столько псевдоклассов, сколько захотите.
Указатель стандартных псевдоклассов
Технические характеристики
Спецификация Статус Комментарий Полноэкранный режим API Жилой стандарт Определено : полноэкранный
. HTML Living Standard Жилой стандарт Определяет, когда определенные селекторы соответствуют элементам HTML. Селекторы уровня 4 Осадка рабочий Defined : any-link
, : blank
, : local-link
, : scope
, : drop
, : current
, : past
, : future
, : placeholder- показано
, : недействительный пользователь
, : nth-col ()
, : nth-last-col ()
, : is ()
и : где ()
.
Изменено : пусто
, чтобы вести себя как : -moz-only-whitespace
.
Нет значительных изменений для других псевдоклассов, определенных в Selectors Level 3 и HTML5 (хотя семантическое значение не принимается). HTML5 Рекомендация Копирует соответствующий раздел из канонической (WHATWG) спецификации HTML. Модуль базового пользовательского интерфейса CSS, уровень 3 Рекомендация Определено : по умолчанию
, : верно
, : недействительно
, : в пределах
, : вне диапазона
, : обязательно
, : необязательно
, : только для чтения
и : чтение-запись
, но без связанного семантического значения. Селекторы уровня 3 Рекомендация Определено : цель
, : root
, : nth-child ()
, : nth-last-of-child ()
, : nth-of-type ()
, : nth-last -of-type ()
, : последний ребенок
, : первый тип
, : последний тип
, : единственный ребенок
, : только тип
, : пусто
и : нет ()
.
Определяет синтаксис : включен
, : выключен
, : проверен
и : неопределенный
, но без соответствующего семантического значения.
Нет значительных изменений для псевдоклассов, определенных в CSS Level 2 (Revision 1). CSS, уровень 2 (редакция 1) Рекомендация Определено : lang ()
, : first-child
, : hover
и : focus
.
Нет значительных изменений для псевдоклассов, определенных в CSS Level 1. Уровень CSS 1 Рекомендация Определено : ссылка
, : посещена
и : активна
, но без связанного семантического значения.
См. Также
.
CSS Псевдоклассы
Что такое псевдоклассы?
Псевдокласс используется для определения особого состояния
элемента.
Например, его можно использовать для:
- Стиль элемента, когда пользователь наводит на него курсор
- Различный стиль посещенных и непосещенных ссылок
- Стиль элемента, когда он получает фокус
Синтаксис
Синтаксис псевдоклассов:
селектор: псевдокласс {
свойство: значение;
}
Псевдоклассы якоря
Ссылки могут отображаться по-разному:
Пример
/ * непосещенная ссылка * /
a: link {
color: # FF0000;
}
/ * посетил
ссылка * /
a: посетил {
color: # 00FF00;
}
/ * наведение курсора мыши на ссылку * /
a: hover {
color: # FF00FF;
}
/ * выбранная ссылка * /
a: активная {
цвет: # 0000FF;
}
Попробуй сам »
Примечание: a: hover
ДОЛЖЕН идти после a: link
и
a: посетил
в определении CSS, чтобы быть эффективным! a: активный
ДОЛЖЕН быть после
a: наведите указатель мыши на
в определении CSS для повышения эффективности!
Имена псевдоклассов не чувствительны к регистру.
Псевдоклассы и классы CSS
Псевдоклассы можно комбинировать с классами CSS:
Когда вы наводите курсор на ссылку в примере, она меняет цвет:
Наведите курсор на Пример использования псевдокласса : hover
в элементе
:
Простая всплывающая подсказка
Наведите указатель мыши на элемент
, чтобы отобразить элемент (например, всплывающую подсказку):
Наведите указатель мыши на меня, чтобы показать элемент
.
Тада! А вот и я!
Пример
p {
дисплей: нет;
цвет фона: желтый;
отступ: 20 пикселей;
}
div: hover p {
display: block;
}
Попробуй сам »
CSS — Псевдо-класс: first-child
Псевдокласс : first-child
соответствует указанному элементу, который является первым дочерним элементом другого элемента.
Соответствует первому элементу
В следующем примере селектор соответствует любому элементу
, который является первым дочерним элементом любого элемента:
Соответствует первому элементу во всех элементах
В следующем примере селектор соответствует первому элементу во всех элементах
:
Сопоставить все элементы во всех первых дочерних элементах
В следующем примере селектор соответствует всем элементам в элементах
, которые являются первым дочерним элементом другого элемента:
CSS — Псевдокласс: lang
Псевдокласс : lang
позволяет определять специальные правила для разных языков.
В приведенном ниже примере : lang
определяет кавычки для элементов с lang = «no»:
.
Пример
q: lang (no) {
цитаты: «~» «~»;
}
Некоторый текст Цитата в абзаце
Немного текста.
...
...
: hover
можно использовать для изменения цвета кнопки при наведении на нее указателя пользователя.: посетил
), статус его содержимое (например, : проверено
для определенных элементов формы) или положение мыши (например, : hover
, которое позволяет узнать, находится ли указатель мыши над элементом или нет).: полноэкранный
.: any-link
, : blank
, : local-link
, : scope
, : drop
, : current
, : past
, : future
, : placeholder- показано
, : недействительный пользователь
, : nth-col ()
, : nth-last-col ()
, : is ()
и : где ()
.Изменено
: пусто
, чтобы вести себя как : -moz-only-whitespace
. Нет значительных изменений для других псевдоклассов, определенных в Selectors Level 3 и HTML5 (хотя семантическое значение не принимается).
: по умолчанию
, : верно
, : недействительно
, : в пределах
, : вне диапазона
, : обязательно
, : необязательно
, : только для чтения
и : чтение-запись
, но без связанного семантического значения.: цель
, : root
, : nth-child ()
, : nth-last-of-child ()
, : nth-of-type ()
, : nth-last -of-type ()
, : последний ребенок
, : первый тип
, : последний тип
, : единственный ребенок
, : только тип
, : пусто
и : нет ()
. Определяет синтаксис
: включен
, : выключен
, : проверен
и : неопределенный
, но без соответствующего семантического значения.Нет значительных изменений для псевдоклассов, определенных в CSS Level 2 (Revision 1).
: lang ()
, : first-child
, : hover
и : focus
. Нет значительных изменений для псевдоклассов, определенных в CSS Level 1.
: ссылка
, : посещена
и : активна
, но без связанного семантического значения.элемента.
свойство: значение;
}
a: link {
color: # FF0000;
}
ссылка * /
a: посетил {
color: # 00FF00;
}
a: hover {
color: # FF00FF;
}
a: активная {
цвет: # 0000FF;
}
a: hover
ДОЛЖЕН идти после a: link
и a: посетил
в определении CSS, чтобы быть эффективным! a: активный
ДОЛЖЕН быть после a: наведите указатель мыши на
в определении CSS для повышения эффективности!Имена псевдоклассов не чувствительны к регистру.
Пример использования псевдокласса : hover
в элементе
Простая всплывающая подсказка
Наведите указатель мыши на элемент
(например, всплывающую подсказку):
Наведите указатель мыши на меня, чтобы показать элемент
.
Тада! А вот и я!
Пример
p {
дисплей: нет;
цвет фона: желтый;
отступ: 20 пикселей;
}
div: hover p {
display: block;
}
Попробуй сам »
CSS — Псевдо-класс: first-child
Псевдокласс : first-child
соответствует указанному элементу, который является первым дочерним элементом другого элемента.
Соответствует первому элементу
В следующем примере селектор соответствует любому элементу
, который является первым дочерним элементом любого элемента:
Соответствует первому элементу во всех элементах
В следующем примере селектор соответствует первому элементу во всех элементах
:
Сопоставить все элементы во всех первых дочерних элементах
В следующем примере селектор соответствует всем элементам в элементах
, которые являются первым дочерним элементом другого элемента:
CSS — Псевдокласс: lang
Псевдокласс : lang
позволяет определять специальные правила для разных языков.
В приведенном ниже примере : lang
определяет кавычки для элементов с lang = «no»:
.
Пример
q: lang (no) {
цитаты: «~» «~»;
}
Некоторый текст Цитата в абзаце
Немного текста.