Css :n第n个孩子(n):前一个孩子不';不行吗?

Css :n第n个孩子(n):前一个孩子不';不行吗?,css,sass,css-selectors,Css,Sass,Css Selectors,我有个问题::第n个孩子(n):在工作之前吗 因此,我使用SASS。 为什么下面的代码不起作用 @for $i from 1 through 4 .block:nth-child(#{$i}):before background: url(../../img/block-img-#{$i}.jpg) background-size: cover 它的目的是: .content .cnt1 .block:nth-child(1):before { backgrou

我有个问题:
:第n个孩子(n):在工作之前吗

因此,我使用SASS。
为什么下面的代码不起作用

@for $i from 1 through 4
  .block:nth-child(#{$i}):before
      background: url(../../img/block-img-#{$i}.jpg)
      background-size: cover
它的目的是:

.content .cnt1 .block:nth-child(1):before {
  background: url(../../img/block-img-1.jpg);
  background-size: cover;
}

.content .cnt1 .block:nth-child(2):before {
  background: url(../../img/block-img-2.jpg);
  background-size: cover;
}

.content .cnt1 .block:nth-child(3):before {
  background: url(../../img/block-img-3.jpg);
  background-size: cover;
}

.content .cnt1 .block:nth-child(4):before {
  background: url(../../img/block-img-4.jpg);
  background-size: cover;
}
所有的图片都是真实的。但它不起作用:(
我做错了什么?

本身,一个
::before
伪元素不可见。您还需要给它一个
display
属性和一些内容。否则,它不会显示

现在您还没有提供HTML,但是如果我可以假设它只是一堆嵌套的div,那么所需的额外CSS如下所示

.content.cnt1.block::before{
显示:块;内容:“”;
高度:200px;/*a高度,任意高度*/
}
或者举一个更完整的例子:(不要介意背景图像)

.content.cnt1.block::before{
显示:块;内容:“”;
高度:200px;/*a高度,任意高度*/
}
.content.cnt1.block:第n个子项(1)::之前{
背景:url(http://images.clipartpanda.com/number-clipart-niXxEn7iB.jpeg);
背景尺寸:封面;
}
.content.cnt1.block:第n个子(2)::之前{
背景:url(http://images.clipartpanda.com/clipart-numbers-9czE7pRpi.png);
背景尺寸:封面;
}
.content.cnt1.block:第n个子项(3)::之前{
背景:url(http://images.clipartpanda.com/creation-clip-art-RTAE8d8TL.jpeg);
背景尺寸:封面;
}
.content.cnt1.block:第n个子项(4)::之前{
背景:url(http://images.clipartpanda.com/number-clip-art-RcA6Axgji.png);
背景尺寸:封面;
}


您还可以给出相应HTML的示例吗?您还需要在before规则中添加
内容:'
,我想您需要为元素设置宽度和高度,否则背景可能会应用于0px 0px元素。为什么要在每个规则中设置背景大小:cover?这似乎是一种快速完成的方法完全膨胀了你的CSS。@Sirko可能是重复的哦,是的!我比sh做了。很多时候,我不知道问题出在哪里。非常感谢!我怀疑使用单个冒号是否会排除使用背景大小。另外,为什么我需要添加显式显示属性?@torazaburo:Lister先生这么说,所以使用t如果要依赖背景大小,兼容性的单冒号语法是毫无意义的。display:block声明是必需的,除非所述声明已存在于其他位置或存在导致其被块化的其他声明,因为伪元素没有默认的显示值,所以它们采用初始值ue、inline和height属性将不适用。@BoltClock感谢您的澄清。但我认为所有浏览器都支持单冒号语法。@torazaburo:所有浏览器都支持单冒号语法,以便为IE8及更旧版本设计的样式表将继续工作。但唯一不支持双冒号语法的浏览器是r::before和::after是IE8(旧版本根本不支持这两个伪代码)。单冒号语法已被弃用(并且在::selection和各种CSS3规范中定义的所有其他伪ELT上无效),为了一致性,强烈鼓励作者使用双冒号,除IE8 compat外,目前没有充分的理由对任何伪元素使用单冒号。