当前位置: 首页 > 面试题库 >

为什么nth-of / nth-child不对嵌套元素起作用?

商弘义
2023-03-14
问题内容

我正在尝试更改div内奇数div的样式。由于某种原因,nth-of- type(odd)当它位于另一个div内时,它会影响我的所有div。这是我的常规div和奇数div的代码:

.video-entry-summary {

  width: 214px;

  height: 210px;

  margin-left: 10px;

  float: left;

  position: relative;

  overflow: hidden;

  border: 1px solid black;

}



.video-entry-summary:nth-of-type(odd) {

  width: 214px;

  height: 210px;

  margin-left: 0px;

  float: left;

  position: relative;

  overflow: hidden;

  border: 1px solid black;

  background: #ccc;

}


<div id="post-501" class="post-501 post type-post status-publish format-standard hentry category-moto-dz-films tag-news-sub-2">

  <div class="video-entry-summary">

    video 1

  </div>

</div>



<div id="post-240" class="post-240 post type-post status-publish format-standard hentry category-videos">

  <div class="video-entry-summary">

    video 2

  </div>

</div>



<div id="post-232" class="post-232 post type-post status-publish format-standard hentry category-videos">

  <div class="video-entry-summary">

    video 3

  </div>

</div>



<div id="post-223" class="post-223 post type-post status-publish format-standard hentry category-videos">

  <div class="video-entry-summary">

    video 4

  </div>

</div>

出于某种原因,nth-of-type当将其包裹在我的div中时不起作用,但是当它们不包裹在任何div中时却起作用。

未包装在div中时的工作版本:

.video-entry-summary {

  width: 214px;

  height: 210px;

  margin-left: 10px;

  float: left;

  position: relative;

  overflow: hidden;

  border: 1px solid black;

}



.video-entry-summary:nth-of-type(odd) {

  width: 214px;

  height: 210px;

  margin-left: 0px;

  float: left;

  position: relative;

  overflow: hidden;

  border: 1px solid black;

  background: #ccc;

}


<div class="video-entry-summary">

  video 1

</div>



<div class="video-entry-summary">

  video 2

</div>



<div class="video-entry-summary">

  video 3

</div>



<div class="video-entry-summary">

  video 4

</div>

``如何使初始代码与上述代码相同?


问题答案:

:nth-of-type()类似于:nth-child()它们必须全部来自同一父级。如果需要这些包装器div,请改用:nth-of- type()这些包装器:

div.post:nth-of-type(odd) .video-entry-summary {
    width:214px; 
    height:210px; 
    margin-left:0px;
    float:left;
    position:relative; 
    overflow:hidden; 
    border:1px solid black; 
    background:#ccc; 
}

如果所有的兄弟姐妹.post,用:nth-child()代替,以防止混淆什么:nth-of-type()的真正含义:

.post:nth-child(odd) .video-entry-summary {
    width:214px; 
    height:210px; 
    margin-left:0px;
    float:left;
    position:relative; 
    overflow:hidden; 
    border:1px solid black; 
    background:#ccc; 
}



.video-entry-summary {

  width: 214px;

  height: 210px;

  margin-left: 10px;

  float: left;

  position: relative;

  overflow: hidden;

  border: 1px solid black;

}



.post:nth-child(odd) .video-entry-summary {

  width: 214px;

  height: 210px;

  margin-left: 0px;

  float: left;

  position: relative;

  overflow: hidden;

  border: 1px solid black;

  background: #ccc;

}


<div id="post-501" class="post-501 post type-post status-publish format-standard hentry category-moto-dz-films tag-news-sub-2">

  <div class="video-entry-summary">

    video 1

  </div>

</div>



<div id="post-240" class="post-240 post type-post status-publish format-standard hentry category-videos">

  <div class="video-entry-summary">

    video 2

  </div>

</div>



<div id="post-232" class="post-232 post type-post status-publish format-standard hentry category-videos">

  <div class="video-entry-summary">

    video 3

  </div>

</div>



<div id="post-223" class="post-223 post type-post status-publish format-standard hentry category-videos">

  <div class="video-entry-summary">

    video 4

  </div>

</div>


 类似资料:
  • 本文向大家介绍css3的:nth-child和:nth-of-type的区别是什么?相关面试题,主要包含被问及css3的:nth-child和:nth-of-type的区别是什么?时的应答技巧和注意事项,需要的朋友参考一下 :nth-child(n) 选择器匹配属于其父元素的第 N 个子元素,不论元素的类型。 :nth-of-type(n) 选择器匹配属于父元素的特定类型的第 N 个子元素。 n

  • 问题内容: 我检查这个选择器: 选择器不起作用? 我在firefinder中检查了此内容,但没有返回任何内容(没有信息显示零元素) 然后检查: 并返回h3,所以选择器几乎是不错的选择,但是this(h3的文本为’a’)的文本出错。 问题答案: 不是 原本是CSS3选择器感谢TJCrowder的链接,但它没有做到,很可能是因为它的工作方式往往会导致严重的性能和过度选择问题。例如,如果元素匹配给定的字

  • 问题内容: 以以下代码为例: 是否可以使用或不选择全部元素的 一半 ?在上面的例子中,代码应该选择前/后 两个 s,然后如果我将s 的数量增加到六个,它将选择前/后 三个 。 我觉得我将不得不使用JavaScript … 问题答案: 在纯CSS中,您能够获得与之 接近 的唯一方法是对或进行选择。如果您只需要最后一半(而不是奇数或偶数),则必须使用JavaScript / jQuery。 使用jQu

  • 问题内容: 这是我的CSS: 工作,现在到处(用这个在我的网站),除了Internet Explorer 8中...... 是否有可能在IE8中使用nth-child?这是该浏览器的最差版本,无法正常工作,我找不到解决方法。 @ edit2:我刚刚注意到 实际上是在IE8中工作!但是这个: 不管用。那么发生了什么? 问题答案: 您可以(ab)使用相邻的同级组合器()通过可在IE7/ 8中使用的CS

  • 问题内容: 当我编写一些CSS时,在使用外观之前从未遇到过这种情况,并且我怀疑实际发生了什么。 使用伪类时,我会在选择器之间没有空格的情况下编写它们,如下所示: 但是它没有按我预期的方式工作,所以我尝试在选择器和伪类之间插入一个空格。令人惊讶的是,它的工作原理是: 使这项工作发生了什么事? 问题答案: 您误会了选择器。它选择的元素也是,该元素 也具有 前面的元素作为父元素。 如果前面没有选择器,则

  • 问题内容: nth-match应该按照以下方式在jsfiddle中工作 这应该强调每一秒和每个要素。但是,它不起作用-既不在FF中也不在Chrome中: 哪里出问题了? 问题答案: CSS4选择器目前没有太多的浏览器支持,您可以使用具有更多浏览器支持的CSS3选择器