<div id="main">
<p> one </p>
<p> two </p>
<p> three </p>
<p> four </p>
<p> five </p>
<div>
Я не хочу сначала применять css <p>One</p>
p {color:red}
Мне нужна полная противоположность :first-child
.
<div id="main">
<p> one </p>
<p> two </p>
<p> three </p>
<p> four </p>
<p> five </p>
<div>
Я не хочу сначала применять css <p>One</p>
p {color:red}
Мне нужна полная противоположность :first-child
.
p:not(:first-child) { color: red; }
Браузерная поддержка сейчас очень сильна, но есть альтернативы:
p { color: red; }
p:first-child { color: black; }
а также:
* + p { color: red; }
p:first-child{ color:inherit; }
вместо p:first-child{ color:black; }
, чтобы он работал с любым предустановленным цветом.
- person web-tiki; 23.02.2016
Решение Quentin :not()
отлично подходит для современных браузеров:
p:not(:first-child) { color: red; }
Его альтернатива для старых браузеров также хорошо работает, за исключением того, что в ней используется правило переопределения для первого дочернего элемента. Однако это не обязательно ...
Вы можете просто использовать родственный селектор, чтобы применить то же правило, что и указанное выше, без необходимости отменять его для p:first-child
. Любое из этих правил будет работать:
смежный селектор родственников, который соответствует любому p
, идущему непосредственно после p
:
p + p { color: red; }
общий родственный селектор, который соответствует любому p
, идущему после p
:
p ~ p { color: red; }
Оба комбинатора здесь работают одинаково; тонкие различия между ними применимы только тогда, когда у вас есть другие элементы в миксе. Подробные сведения см. По предоставленным ссылкам.
Я думаю, что :nth-child()
добьется цели.
p:nth-child(n+2){
background-color:red;
}
Это стилизует все теги p
, кроме первого, потому что он начинается со 2-го дочернего элемента. Затем вы можете стилизовать первый тег p
отдельно с помощью p:first-child
.
Работает постоянно и не требует отмены:
p + p {
/* do 15 special things */
}
Требуется каждый P, которому предшествовала P. Не устанавливайте свойство, чтобы отменить его позже. Вы должны только прибавлять, если можете, но не убавлять.
Вы также можете использовать оператор "тильда" (~)
<!DOCTYPE html>
<html>
<head>
<style>
p ~ p {
background:#ff0000;
}
</style>
</head>
<body>
<h1>This is a heading</h1>
<p>The first paragraph.</p>
<p>The second paragraph.</p>
<p>The third paragraph.</p>
<p>The fourth paragraph.</p>
</body>
</html>
Вот демонстрация JSFiddle http://jsfiddle.net/RpfLa/344/
Сделал быстрый тест на FF 17, Chrome 23, Safari 5.1, IE9, IE1-8 в режиме совместимости
P
совпадает 5 раз.
- person Rudie; 19.11.2013
:nth-child(1n+2)
хорошо сработал для меня. Это пропускает первый дочерний элемент и переходит к остальным элементам.
p:nth-child(1n+2){
color: red;
}
Надеюсь это поможет.