Sass Ampersand与伪选择器嵌套

时间:2016-11-22 06:32:57

标签: css sass

尝试使用SASS Ampersand以获得以下css输出。当我们在内部pesudo选择器中使用Ampersand时,它无法正常工作。

CSS

.test:first-child .test-image { display: block; }

SASS

.test {
    &:first-child {
        display: inline-block;
        &-image {
            display: block;
        }   
    }
}

上面的代码基本上将-image与第一个孩子级联起来。

3 个答案:

答案 0 :(得分:4)

这是因为&符号只是将父级与子级连接起来。如果您希望编译的CSS看起来像您的示例,则需要执行此操作:

.test {
    &:first-child &-image{
      display: block;     
    }
}

答案 1 :(得分:1)

如果你想要实现

.test:first-child .test-image { display: block; }

使用您的代码将其编译为此

.test:first-child-image {
    display: block;
}

相反,你可以简单地把它写成这个。

.test:first-child {
        .test-image {
            display: block;
        }   
}

希望有所帮助

答案 2 :(得分:0)

听起来你误解了&符号如何在Sass中运行。 &符号本质上是写入每个外部选择器然后在其后添加选择器的简写。由于.test-image.test不同,您应该按如下方式指定它。

.test {
    &:first-child {
        .test-image {
            display: block;
        }   
    }
}

编译到

.test:first-child .test-image {
    display: block;
}