Прелести CSS 3: псевдо-класс :not()
С момента публикации прошло почти 3 года, но вебмастера так и не могут воспользоваться всеми преимуществами нового стандарта. Перетирать причины и искать виновников – дело бесполезное т.к. все равно ничего с места не сдвинется. Можно лишь сказать спасибо разработчикам FireFox и Safari, за возможность “пощупать” .
Мне хочется рассказать об одном из таких замечательных нововведений CSS 3, а именно: о псевдо-классе :not(). В спецификации нем написано всего пару строк, но польза его очень велика.
The negation pseudo-class, :not(X), is a functional notation taking a simple selector […] as an argument. It represents an element that is not represented by the argument.
Здесь говориться о том, что псевдо-класс :not() использует в качестве аргумента селектор, тем самым исключая его из набора тех селекторов, к которым необходимо прописать стили.
Как защитить свой сайт от мошенников? Актуальная статья о протоколах безопасной передачи данных в Интернет.
Рок за свободу: концерт, посвященный событиям августа 1991 года. Чувства, о которых можно рассказать только музыкой.
Нужна квартира в кредит? Выясните все вопросы об ипотеке и условиях кредита на жилье.
А вы когда-нибудь пробовали настоящую итальянскую пиццу? Все рецепты итальянской кухни теперь на сайте www.italian-kitchen.org.
Настоящая баня с березовым веником… Лучший отдых от насущных проблем и забот.
Например, в качестве аргумента могут быть селекторы:
div * [value="somevalue"] .someclass #someid :hover
Примеры использования
div:not(.home) {…}
Данная запись означает, что свойства записанные в фигурных скобках, будут применены ко всем элементам div, кроме элемента, имеющего класс .home. К сожалению, в качестве аргументов not(), использовать потомки селекторов нельзя.
Используя приведенный ниже код, можно написать стили для всех элементов p в блоке div, кроме первого, т.е. кроме первого абзаца текста.
div:not(p::first-line) {…}
И так далее.. Примеров можно привести множество, а вот увидеть их в действии можно только в браузерах Opera, Safari и FireFox.
IE такие высоты пока не покорил и очень жаль, т.к. этот псевдо-класс решил бы множество задач в процессе верстки..




Dmoz
Отлично! Осталось только подождать, пока Гугл купит Майкрософт, и ИЕ будет поддерживать современные технологии (:
Денис СудилковскийЦитировать
я извиняюсь, но что то у меня этот :not() не работает ни в одном браузере
webmasters_byЦитировать
Проверьте браузер этим тестом на поддержку селекторов и псевдо-классов
АвторЦитировать
Да проверял я этим тестом, выдает что все поддерживает, но если взять Ваш пример: div:not(p) em {…} и задать цвет текста, например, красный, то он не будет применяться ни к каким em
webmasters_byЦитировать
Странно, этот пример действительно не работает, а вот этот работает:
div:not(.home) {…}АвторЦитировать
А у меня все сработало, автору спасибо!
АнтонЦитировать
У меня почему-то not не работает,поробую исспользовать Ваши советы.
olyabolebokЦитировать
Аналогичная проблема – не хотить работать. Вроде делаю все верно. Попробую другим способом.
boberovЦитировать
div:not(p) em {…}
Это что должно получиться? div, который не является p? Конечно оно работать не будет так, как вы ожидаете.А то что ожидаете можно получить двумя правилами:
div em {…} и div p em {…}
Ну или используя селектор > (помня, что работает он не везде), если em будет вложен непосредственно в div
div>em {…}
андрейЦитировать
div:not(p) em {…}– это :это не div, который не является p,
это div, в котором em идет НЕ ВНУТРИ p
АвторЦитировать
Ваш пример неверен! В этом правиле ошибка!
The negation pseudo-class, :not(X), is a functional notation taking a simple selector (excluding the negation pseudo-class itself and pseudo-elements) as an argument. It represents an element that is not represented by the argument.
В
notдолжен идти простой селектор, «относящийся» к главному селектору. Указывать потомков в качестве аргумента нельзя. Кстати, в jQuerynotработает точно так же.андрейЦитировать
Я уже исправила в статье, спасибо.
АвторЦитировать
Можно лишь сказать спасибо разработчикам FireFox и Safari, за возможность «пощупать» новые свойства CSS 3.
Почему-то Опера совсем забыта, а ведь она раньше FireFox’a прошла все тесты селекторов css3.
дизайнерЦитировать