#css
#css
Вопрос:
Я хочу оформить последний / второй .heading
.
<ul>
<li class="heading">Hello world</li>
<li>Hello world</li>
<li>Hello world</li>
<li class="heading">Hello world</li>
<li>Hello world</li>
</ul>
Ни
ul li.heading:last-child {
background: black;
}
ни
ul li.heading:nth-child(2) {
background: black;
}
работает для меня. Почему и как я могу применить к этому стили <li>
? Кажется, что селекторы псевдоклассов не работают с селекторами классов. Что странно, поскольку я мог бы поклясться, что использовал его раньше.
Обновление: Упс, совсем забыл jsfiddle.
Комментарии:
1. Я не верю, что есть способ, которым вы можете выбрать дочерний элемент класса с помощью этих селекторов псевдоклассов. Это всегда 4-й заголовок в списке или это всегда 2-й экземпляр class .heading, который вы хотите оформить? Если всегда 4-й, приведенный ниже ответ должен работать нормально, хотя вы также можете использовать n-й тип.
2. Вы усложняете себе жизнь, если не решите эту проблему на уровне разметки / семантики / html. Использование вложенных
ul
s позволит вам делать именно то, что вы хотите, с селекторами CSS2.
Ответ №1:
Ваше заявление было: «Я хочу оформить последний / второй .заголовок».
Это означало бы, что вам пришлось бы писать свой код следующим образом:
<ul>
<li class="heading">Hello world</li>
<li class="heading">Hello world</li>
<li class="heading">Hello world</li>
<li class="heading">Hello world</li>
<li class="heading">Hello world</li>
</ul>
И CSS:
ul li.heading:last-child {
background: black;
}
ul li.heading:nth-child(2) {
background: black;
}
Иначе, с вашим текущим html-кодом, вы бы написали:
ul li.heading:nth-child(4) {
background: black;
}
ul li.heading:nth-child(1) {
background: black;
}
Я понимаю вашу мысль, но lis с классом «заголовок» не является вторым или последним дочерним элементом.
Комментарии:
1. Я полагаю, что запрашивающий хочет сделать это: создать стиль последнего из дочерних
<ul>
элементов, у которых есть классheading
Ответ №2:
вы можете использовать ul li.heading:nth-of-type
, он будет учитывать только класс заголовка в соответствии с вашим html css
li.heading:nth-of-type(2){ background: black;}
или
li.heading:last-of-type{ background: black;}
Комментарии:
1. Это фактический ответ на вопрос OP «Я хочу оформить последний / второй .заголовок, как я могу это сделать». Другие ответы только объясняют, почему то, что он делает, не работает.
2. Это тоже не работает. Они выбирают 2-й или последний элемент li, ТОЛЬКО ЕСЛИ он ТАКЖЕ имеет класс .heading . Он не просто выбирает 2-й / последний элемент li.heading.
3. Это похоже на правильный ответ, но это не так. @bjscollura прав.
Ответ №3:
ul li.heading:nth-last-child(2)
2 означает, что вы знаете, сколько из них <li>
после вашего <li class="heading">
, в нашем случае это второе снизу.
Ответ №4:
Это потому, что li.heading
не является последним дочерним элементом и не является вторым дочерним элементом. Это первый и четвертый дочерний элемент ul
Попробуйте это:
ul li.heading:nth-child(4) {
background: black;
}