Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Css 受第n-child()影响的父元素 一 二 三 四 五 六 七 八 九 十 十一_Css_Css Selectors - Fatal编程技术网

Css 受第n-child()影响的父元素 一 二 三 四 五 六 七 八 九 十 十一

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

为什么外部div即使没有同级并且是父元素的唯一子元素,也会受到此样式表规则的影响

由于
元素,外部
与选择器匹配,所以
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>