2015-02-09 43 views
1

必须有一个简单的解释。但在我看来,它应该以满意的方式工作。小时的休息时间:nth-​​child()选择器

我们正在使用Bootstrap 3 CSS框架。在页面上,我们有下面的代码:

<div class="promoties-overzicht"> 
    <div class="row promo-row">.. other contents ..</div> 
    <hr> 
    <div class="row promo-row">.. other contents ..</div> 
    <hr> 
    <div class="row promo-row">.. other contents ..</div> 
    <hr> 
</div> 

现在,当我做.promo-row:nth-child(odd)样式奇宣传信行以灰色十岁上下的背景色。它为每个促销行设计风格。当我删除<hr>的CSS正确应用。 我可能是错的,但因为我在CSS选择器中使用类.promo-row,所以应该只查看这些元素来声明它是否为奇数行。为什么<hr>被视为具有相同类别的元素?

+0

应该可以使用填充,边距和边框来复制div的样式并复制hr的效果,因此您可以免去这些中断,如果帮助。 – lharby 2015-02-09 09:47:18

+0

在这种情况下,我想保留hr标签:) – Brainfeeder 2015-02-09 09:54:42

回答

2

.promo-row:nth-child(odd)并不意味着“奇.promo-row子元素,”它的意思是“.promo-row元素是奇子元素。”这就像.foo.bar表示具有foobar类的元素。

CSS没有“第n个匹配这个选择器”的概念。如果你的结构是为你展示的规律的,你仍然可以通过使用:nth-child(4n+1)使用nth-child但考虑到hr元素:

.promoties-overzicht .promo-row:nth-child(4n+1) { 
 
    background-color: yellow; 
 
}
<div class="promoties-overzicht"> 
 
    <div class="row promo-row">.. other contents ..</div> 
 
    <hr> 
 
    <div class="row promo-row">.. other contents ..</div> 
 
    <hr> 
 
    <div class="row promo-row">.. other contents ..</div> 
 
    <hr> 
 
    <div class="row promo-row">.. other contents ..</div> 
 
    <hr> 
 
    <div class="row promo-row">.. other contents ..</div> 
 
    <hr> 
 
    <div class="row promo-row">.. other contents ..</div> 
 
    <hr> 
 
</div>

+0

':nth-​​child(4n + 1)'制定出完美。并感谢您的解释。我永远不会忘记:D奇怪,这是我第一次碰到这个,但... – Brainfeeder 2015-02-09 09:58:32

0

这是因为奇的COUN是由存在破<hr>(或另一个块)。它适用于所有.promo-row以下的其他人.promo-row

考虑下面的例子:

<div class="row promo-row">.. other contents ..</div> 
<div class="row promo-row">.. other contents ..</div> 
<div class="row promo-row">.. other contents ..</div> 
<div class="row promo-row">.. other contents ..</div> 

<hr> 
<div class="row promo-row">.. other contents ..</div> 
<hr> 
<div class="row promo-row">.. other contents ..</div> 
<hr> 

,因为他们之间有一个<hr>块的CSS将只适用于第三.promo-row,别到最后一个(它重新开始计数)

0

MDN's nth-child()

的:第n个孩子(一个+ b)的CSS伪类,它具有一个 + b-1的兄弟姐妹是元素匹配在文档树中,对于给定的正数 或n的零值,并且具有父元素。

由于<hr/>promo的兄弟姐妹,因此它们也被该伪类计数。

0

第n个孩子计算所有的孩子,不但孩子具有.promo行类,你shoumd尝试像

.promo-row:nth-child(4n) 

它选择一个孩子每四个孩子(所以一个周期,2 .promo -row和2小时),并从第一个孩子开始