Css 受第n-child()影响的父元素 一 二 三 四 五 六 七 八 九 十 十一
为什么外部div即使没有同级并且是父元素的唯一子元素,也会受到此样式表规则的影响 由于Css 受第n-child()影响的父元素 一 二 三 四 五 六 七 八 九 十 十一,css,css-selectors,Css,Css Selectors,为什么外部div即使没有同级并且是父元素的唯一子元素,也会受到此样式表规则的影响 由于元素,外部与选择器匹配,所以n个子元素(3n+2)匹配索引2(n=0)、5(n=1)、8(n=2)处的元素。。。HTML中的标记意味着父级确实位于索引2(请记住,我们从1开始计算) 查看移动标记时发生的情况: 你可以用一个,或者用@MattBall说的来解决这个问题: (示范:) 使用文档中的style元素 使用分离的css 更新 如果你不想或不能分开样式, 考虑将额外的 div 添加到CSS规则中。 &l
元素,外部
与选择器匹配,所以n个子元素(3n+2)
匹配索引2(n=0)、5(n=1)、8(n=2)处的元素。。。HTML中的
标记意味着父级
确实位于索引2(请记住,我们从1开始计算)
查看移动
标记时发生的情况:
你可以用一个,或者用@MattBall说的来解决这个问题:
(示范:)
使用文档中的style
元素
使用分离的css
更新
如果你不想或不能分开样式,
考虑将额外的<代码> div <代码>添加到CSS规则中。
<style type="text/css">
<!--
div:nth-child( 3n + 2 ) { background-color: green }
-->
</style>
<div>
<div>one</div>
<div>two</div>
<div>three</div>
<div>four</div>
<div>five</div>
<div>six</div>
<div>seven</div>
<div>eight</div>
<div>nine</div>
<div>ten</div>
<div>eleven</div>
</div>
如您所见:
外部div是文档中的第八个同级。这意味着第n个孩子(3n+2) 正确应用
div div:nth-child( 3n + 2 ) { background-color: green }
一
二
三
四
五
六
七
八
九
十
十一
任何有效的HTML文档都不会出现此问题。但是,如果您的文档在
标记之前包含任何非空白内容,则情况会发生变化。这样的内容隐式地关闭head
元素并启动body
元素。然后,样式
元素被作为主体
的第一个子元素(这是无效的HTML,但在实践中效果很好),使您的div
成为第二个子元素,从而匹配选择器div:n子元素(3n+2)
(对于n
=0)
一种解决方案是修复HTML语法,使style
位于head
元素中。用于检查语法
除此之外,将类或
id
属性分配给外部div
,例如
,并使用类似.foo>的选择器:第n个子(3n+2)
,它与特定类中某个元素的特定子元素相匹配。页面上是否有任何其他div
元素是该div的子元素?根据您发布的代码,我无法重新创建您的错误。没有其他div元素,只有那些发布的元素。您确定div
是其父元素的唯一子元素吗?因为您给定的代码使它看起来像样式
元素是同级元素,但两个元素都没有父元素,我不确定这是否是故意的。您使用的是什么DOCTYPE,以及这个样式
元素的确切位置?(它在头部
?在身体
?)我们能看到一份完整的文件吗?@Volker非常感谢。请尽可能使用完整、最少的示例来说明问题。该链接是否演示了删除样式元素时会发生什么(即预期结果)?这是否意味着在
和现有父级
之间添加额外的
会消除问题?因为据我所知,它不起作用。奇怪的是,当样式在一个单独的CSS文件中时,它似乎起作用,但当样式
元素在主体中时,它就不起作用了,因为它看起来可能来自于这个问题(即使HTML5文档中有范围
属性)。添加
之外的任何东西似乎都起作用,不过。现在我很困惑。啊哈!别理我,我一直被使用
(无效,并被视为开始标记)而不是
的测试所迷惑。如果您首先在问题中包含实际结构,这将是显而易见的。谢谢您的确认。当我发布它的时候,我真的没有想到那么远。帮了大忙。干杯
<body>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>
<ul></ul>
<table></table>
<div>
<div>one</div>
<div>two</div>
<div>three</div>
<div>four</div>
<div>five</div>
<div>six</div>
<div>seven</div>
<div>eight</div>
<div>nine</div>
<div>ten</div>
<div>eleven</div>
</div>
</body>