CSS многое делает со своими селекторами, но он может сделать гораздо больше, чтобы облегчить жизнь разработчикам. В этом руководстве мы рассмотрим некоторые из основных изменений, появившихся в Спецификации селекторов CSS 4, и то, как они могут упростить вашу жизнь при разработке.
По большей части они в настоящее время не поддерживаются браузерами!. Чтобы получить более полное представление о текущих селекторах, прочтите Полное руководство по началу работы с селекторами CSS.
:имеет
Выбор родителей. Мы все этого хотим, и :has пытается решить эту проблему. В настоящее время не поддерживается никакими браузерами, в основном из-за частых изменений синтаксиса, :has
позволяет выбирать как родительский, так и предыдущий одноуровневый элемент. Вы когда-нибудь хотели выбрать элемент, а затем вернуться в DOM к его родителю? Это именно то, что делает этот элемент.
Чтобы привести пример этого, вот пример. Приведенный ниже CSS будет нацелен на абзац p
, который имеет дочерний диапазон.
<p> I am targeted by the CSS <span> I am a span </span> </p>
css Copyp:has(> span) { color: red; }
Точно так же :has() решает проблему предыдущих родственных селекторов. Приведенное ниже будет нацелено на абзац p
, чей следующий брат или сестра - p
.
<p>I am targeted</p> <p>I am not</p>
div:has(:not(h1)) { color: red; }
:is()
Обычно пишут много строк для выбора определенных элементов в CSS. Что-то вроде этого не редкость:
div span,
section span,
h1 span {
color: red;
}
Наверняка есть способ проще? Что ж, :is()
ЯВЛЯЕТСЯ более простым способом. Вышеизложенное можно свести к следующему:
:is(div, section, h1) span {
color: red;
}
как насчет :где
:where() — это еще один селектор уровня 4, единственное отличие которого состоит в том, что его специфичность всегда равна 0. Специфика в CSS определяет, какие стили переопределяют какие. Наличие нулевой специфичности означает, что никогда не сделает стиль более конкретным, что может быть полезно в некоторых случаях, например, для обеспечения того, чтобы одни стили не перезаписывали другие.
В будущем этот пункт может включать число, которое позволит нам установить специфичность, для чего раньше люди использовали !important
.
:is(div, section, h1) span {
color: red;
}
Более сложный :нет
:not() поддерживается большинством браузеров, но только для простых селекторов. Что такое простой селектор? Это всего лишь один элемент. С этим обновлением мы сможем выбрать элемент, который не содержится внутри элемента. Например, ниже будут нацелены только элементы div, не содержащиеся в разделе:
div:not(section div) {
color: red;
}
Выбор столбца сетки
Планируется ряд селекторов столбцов для следующего уровня селекторов CSS. Важно отметить, что это относится не только к таблицам, но и к сеткам. Это означает, что мы, наконец, сможем стилизовать определенные столбцы или элементы сетки, чего мы не могли делать раньше.
В новой спецификации есть 3 селектора для столбцов: E || F, который выбирает ячейку F в столбце E, и nth-col(n)/nth-last-col(n), оба из которых выбирают номер столбца.
Как и следовало ожидать, мы можем затем объединить их, чтобы стилизовать ячейки в этом столбце:
css Copy
.grid:nth-col(2n) || .title-cell {
color: red;
}
В целом, эти изменения в CSS окажут значительное влияние на то, как мы используем язык.
Если вас это заинтересовало, вы можете узнать больше о CSS здесь или подписаться на меня в твиттере здесь.