我的问题是,在使用伪代码:last-child
时,我希望包含li
的{{1}}受到样式的影响,但它是{{1}中的最后一个E
受影响的。
我已尝试过这些(下方),但没有任何作用。
li
如何让主.subNav
的最后nav ul:first-child li:last-child {border: none;padding-right: 0;}
nav ul:not(.subNav) li:last-child {border: none;padding-right: 0;}
受到影响?
答案 0 :(得分:3)
最后一个李后有一个div。因此,它不是最后一个孩子。您可以使用:last-of-type
定位最后一个li:
nav ul li:last-of-type {border: none;padding-right: 0;}
<强> DEMO 强>
答案 1 :(得分:1)
删除div
内的ul
。直接在ul中添加任何标签无效。
将其放在li
内,如果没有必要,请将其删除。
否则您的css
选择器就可以了。
<nav>
<ul>
<li><a href="#">A</a></li>
<li class="B">
<a href="#">B</a>
<ul class="subNav">
<li><a href="#">F</a></li>
<li><a href="#">G</a></li>
<li><a href="#">H</a></li>
<li><a href="#">I</a></li>
</ul>
</li>
<li><a href="#">C</a></li>
<li><a href="#">D</a></li>
<li><a href="#">E</a></li>
</ul>
</nav>
<强> DEMO 强>
答案 2 :(得分:1)
那不是最后一个孩子,你可以使用nth-last-child:
nav ul > :nth-last-child(2)
或者,使用last-of-type:
nav ul > li:last-of-type
但我建议您使用@Sowmya答案,这在语法上是正确的。
答案 3 :(得分:1)
您的选择器在逻辑上是正确的,但问题是li
不是其父ul
的最后一个孩子,因为那是div.clear
<ul>
<li><a href="#">A</a></li>
<li class="B"><a href="#">B</a>
<ul class="subNav">
...
</ul>
</li>
<li><a href="#">C</a></li>
<li><a href="#">D</a></li>
<li><a href="#">E</a></li>
<div class="clear"></div>
</ul>
在这种情况下,nav ul li:last-child
与任何内容都不匹配,因为li
不是最后一个孩子。您应该使用nav ul li:last-of-type
来匹配上一个li
元素。
请注意,ul
仅允许li
作为子级,因此div
中包含ul
是错误的。如果删除div.clear
,则代码将起作用。
答案 4 :(得分:1)
伪类:last-child
仅在元素是父元素中的最后一个子元素时触发。
在您的情况下,div
中有ul
,但无论如何都是不允许的。删除它并在父ul
上使用某种clearfix。