Статьи

Селекторы CSS Уровень 4: Путь к CSS4

Недавно я опубликовал статью на SitePoint, в которой демонстрируются различные примеры использования CSS3 2D и 3D-преобразования . CSS3 нас так сильно волнует, что вы можете простить, что это самая продвинутая версия CSS.

Не так.

Даже сейчас, так же, как вы все еще учитесь использовать CSS3 и HTML5, эти талантливые ребята из W3C выпустили рабочий проект стандартов уровня 4 для селекторов CSS, создавая слух, что CSS4 близок.

CSS3 уже устарел?

Точно нет! Нам еще многое предстоит сделать, прежде чем CSS3 станет широко использоваться и полностью поддерживается. Сеть, однако, находится в состоянии постоянного преобразования. Селекторный уровень 4 — это проект редактора, выпущенный 16 января. Он предназначен только для обсуждения и должен рассматриваться как работа в процессе разработки.

Также обратите внимание, что обсуждаемый уровень селекторов 4-го уровня не соответствует версии 4 выпускаемого CSS.

Что он показывает, так это различные новые способы использования селекторов в таблицах стилей. То, что эти разработки достигли уровня 4, показывает, что, вероятно, будет включено в CSS4. Итак, мы смотрим на путь к CSS4, и нам предстоит еще очень долгий путь.

В этой статье я попытаюсь осветить некоторые наиболее интересные и потенциально важные способы использования селекторов уровня 4.

Какие селекторы?

Селекторы — это условия сопоставления с образцом в древовидной структуре HTML. Мы используем селекторы с уровня 1 CSS. Селектор может варьироваться от простых имен элементов до сложных представлений. Документ уровня 4 о селекторах в основном состоит из псевдоклассов для добавления к ним эффектов. Это документирует некоторые интересные и интересные особенности, которые я объясню.

Основные примеры селекторов:

h1{ font-family: arial; } /* Element matching selector for matching heading1 statements */ 
 a{ text-decoration: underline; } /* Element matching selector for hyperlinks in the documents */ 
 h1, h2, h3{ font-color: blue; } /* combination of selectors */ 

Логические комбинации:: спички и: нет

Как и в псевдоклассе Mozilla :-moz-any() , CSS, наконец, имеет собственный псевдокласс соответствия :matches . Используя :matches вы можете группировать и выбирать элементы. Это функциональный псевдокласс, который принимает список селектора в качестве аргумента. В селекторах уровня 4 вы можете включать только составные селекторы в качестве аргумента в :matches . Комбинаторы, такие как пробелы, больше символов и т. Д., Не являются допустимыми аргументами.

Вы не можете даже вкладывать :matches внутри себя или внутри :not псевдокласс, например :matches(:matches(…)) или :not(:matches()) . Это недопустимое использование :matches в новых спецификациях.

Вместо того:

 a:link, a:hover, a:visited, a:focus{ color:red; } 

Ты можешь использовать:

 a:matches(:link, :hover, :visited, :focus){ color:red; } 

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

 div:matches(.active, .visible, #main){ background: blue; } 

Посмотрим, как использовать второй логический комбинатор :not . Это псевдокласс отрицания, который принимает список других селекторов в качестве аргументов. Иногда у нас есть больше элементов для применения определенного стиля и исключения нескольких элементов из списка. Вы можете использовать :not в таких случаях и передать список селекторов, которые вы не хотите применять определенный стиль.

 h1:not(#title, .active){ color: #F2F2F2; } 

Код выше даст всем элементам h1 , которые не являются #title и .active цветовой код #F2F2F2 . Интересно не?

Псевдоклассы на основе определения местоположения: ЛЮБОЙ ССЫЛКА и: ЛОКАЛЬНАЯ ССЫЛКА

Псевдоклассы, основанные на местоположении, дают вам больше возможностей для разработки элементов ссылок. В документе уровня 4 говорится, что это временное имя, и оно может измениться в будущем. Он представляет любой элемент, являющийся исходным якорем гиперссылки. Он объединяет a:visited себе a:visited и a:lin k, поэтому вам не нужно писать это дважды.

Например:

 a:link, a:visited{ color: blue; } 

Может быть переписан как:

 a:any-link{ color:blue; } 

Приведенный выше код закрасит все элементы ссылки синим цветом, независимо от того, были они посещены или нет.

Еще одна очень интересная функция, добавленная в этот документ :local-link . С его помощью вы можете применять стили тех ссылок, которые указывают на текущий документ. Это поможет веб-дизайнерам по-другому взглянуть на ссылки, которые являются локальными и не открывают другие веб-страницы.

 a:local-link{ color: green; } с a:local-link{ color: green; } 

Вы также можете сопоставить уровень URL локальной ссылки, используя параметры в :local-link . Например:

 a:local-link(0){ color: #888888; } a:local-link(1){ color: green; } a:local-link(2){ color: blue; } с a:local-link(0){ color: #888888; } a:local-link(1){ color: green; } a:local-link(2){ color: blue; } с a:local-link(0){ color: #888888; } a:local-link(1){ color: green; } a:local-link(2){ color: blue; } с a:local-link(0){ color: #888888; } a:local-link(1){ color: green; } a:local-link(2){ color: blue; } 

Позвольте мне объяснить вам более четко с помощью примера ссылки: http://www.sitepoint.com/tag/css/

  1. Ссылка http://www.sitepoint.com будет цветной # 888888 в соответствии с вышеуказанным стилем.
  2. Ссылка http://www.sitepoint.com/tag/ будет окрашена в зеленый цвет и
  3. Ссылка http://www.sitepoint.com/tag/css/ будет окрашена в синий цвет.

Трехмерные псевдоклассы:: CURRENT,: PAST и: FUTURE

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

 :current(p, li, dt, dd) { background: yellow; } 

Псевдокласс :past представляет текстовую часть до :current части, а псевдокласс :future представляет следующую часть. Выделение и размывание текста с помощью этих псевдоклассов обеспечит читателям удобный просмотр документа.

Сетка-структурные псевдоклассы:: COLUMN,: NTH-COLUMN и: NTH-LAST-COLUMN

Проектирование на основе столбцов уже было введено в CSS3, но проектирование каждого столбца веб-страницы было сложным. С введением псевдоклассов со структурой сетки разработчикам, несомненно, будет легче задавать разные стили для разных столбцов документа.

Например:

 :column(.full){ background: #F2F2F2; } .nth-column(odd){ color: #999999; } 

В приведенном выше коде фон всех столбцов .full будет изменен на #F2F2F2 а нечетные столбцы будут иметь цветовой код #999999 .

Родительский Селектор

Я считаю, что это самое важное дополнение к списку всех новых селекторов.

Дизайнеры жаловались на потерю фокуса родительского элемента, когда дочерний элемент активен. Было невозможно применить динамические стили к родительскому элементу, когда у ребенка был фокус.

Например, в случае разработки выпадающего меню, когда фокус был на элементе li самого низкого уровня, основной родительский элемент li всегда терял фокус. В ul li a.active акцент был сделан на элементе ссылки, а не на li . С помощью родительского селектора вы теперь можете сказать браузеру, что хотите применить стиль к li вместо a . Давайте посмотрим на рабочий пример.

 ul li! a.active { color: red; } 

Элемент li был выделен красным цветом вместо a:activ e в приведенном выше коде.

 body! header a:hover { background: red; } 

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

Вывод

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

Селекторы были самыми важными членами семейства CSS. Теперь, представив документ 4 уровня, они еще раз доказали свою важность.

Для получения подробной информации обо всех изменениях, вы можете перейти к полной документации на веб-сайте W3C для получения дополнительной информации.