如何为所有嵌套li下的div应用样式但排除第一个li的div?
解决方案
仅选中第一个<li>下的<div>
直接通过<li>的:first-child伪类定位,再选中其子元素<div>:
li:first-child > div { /* 这里写你的样式规则 */ }
排除第一个<li>下的<div>(选中其余所有<li>内的<div>)
有两种可靠写法:
- 方法一:利用
:not()伪类筛选非第一个<li>,再选中其子<div>:
li:not(:first-child) > div { /* 这里写你的样式规则 */ }
- 方法二:用相邻兄弟选择器,兼容更旧的浏览器:
li + li > div { /* 这里写你的样式规则 */ }
你之前出错的核心原因
如果之前尝试了类似div:not(li:first-child > div)的写法,这种是无效的——CSS 3的:not()伪类不支持内部包含复合选择器(即带层级的选择器),必须先在父元素层级做筛选,再定位子元素,才能生效。
内容的提问来源于stack exchange,提问作者Quint Rahaman
相关产品推荐
相关产品推荐

