Це не стільки відповідь, скільки відповідь без відповіді, тобто приклад, який показує, чому одна з високо оцінених відповідей насправді є неправильною.
Я думав, що така відповідь виглядала добре. Насправді це дало мені те, що я шукав: :nth-of-type
що, для моєї ситуації, спрацювало. (Отже, дякую за це, @Bdwey.)
Спочатку я прочитав коментар @BoltClock (який говорить, що відповідь по суті неправильна) і відхилив його, оскільки я перевірив свій варіант використання, і він спрацював. Тоді я зрозумів, що @BoltClock мав репутацію 300 000+ (!) І має профіль, де він заявляє, що є гуру CSS. Хм, я подумав, може, мені варто трохи придивитися.
Виявляється наступне: div.myclass:nth-of-type(2)
НЕ означає "2-й екземпляр div.myclass". Швидше, це означає "2-й екземпляр div, і він також повинен мати клас" myclass ". Це важлива відмінність, коли div
між вашими div.myclass
екземплярами є втручаються s .
Мені знадобився якийсь час, щоб розібратися з цим. Таким чином, щоб допомогти іншим зрозуміти це швидше, я написав приклад , який я вважаю демонструє концепцію більш чітко , ніж письмовий опис: я викрав h1
, h2
, h3
і h4
елементи , по суті , бути div
s. Я поклав A
клас на деякі з них, згрупував їх у 3, а потім пофарбував 1-й, 2-й та 3-й екземпляри в синій, оранжевий та зелений кольори h?.A:nth-of-type(?)
. (Але, якщо ви уважно читаєте, вам слід запитати "1-й, 2-й і 3-й екземпляри чого?"). Я також вставив несхожий (тобто різний h
рівень) або подібний (тобто той самий h
рівень) некласифікований елемент в деякі групи.
Зверніть увагу, зокрема, на останню групу з 3. Тут h3
між першим та другим h3.A
елементами вставляється некласифікований елемент . У цьому випадку ніякий другий колір (тобто помаранчевий) не відображається, а третій колір (тобто зелений) відображається на другому екземплярі h3.A
. Це показує, що n
in h3.A:nth-of-type(n)
вважає h3
s, а не h3.A
s.
Ну, сподіваюся, це допомагає. І дякую, @BoltClock.
div {
margin-bottom: 2em;
border: red solid 1px;
background-color: lightyellow;
}
h1,
h2,
h3,
h4 {
font-size: 12pt;
margin: 5px;
}
h1.A:nth-of-type(1),
h2.A:nth-of-type(1),
h3.A:nth-of-type(1) {
background-color: cyan;
}
h1.A:nth-of-type(2),
h2.A:nth-of-type(2),
h3.A:nth-of-type(2) {
background-color: orange;
}
h1.A:nth-of-type(3),
h2.A:nth-of-type(3),
h3.A:nth-of-type(3) {
background-color: lightgreen;
}
<div>
<h1 class="A">h1.A #1</h1>
<h1 class="A">h1.A #2</h1>
<h1 class="A">h1.A #3</h1>
</div>
<div>
<h2 class="A">h2.A #1</h2>
<h4>this intervening element is a different type, i.e. h4 not h2</h4>
<h2 class="A">h2.A #2</h2>
<h2 class="A">h2.A #3</h2>
</div>
<div>
<h3 class="A">h3.A #1</h3>
<h3>this intervening element is the same type, i.e. h3, but has no class</h3>
<h3 class="A">h3.A #2</h3>
<h3 class="A">h3.A #3</h3>
</div>