如何在 Sass 中嵌套类? [复制]

Posted

技术标签:

【中文标题】如何在 Sass 中嵌套类? [复制]【英文标题】:How do I nest classes in Sass? [duplicate] 【发布时间】:2016-04-28 10:23:58 【问题描述】:

这就是我在 LESS 中所拥有的:

.light-hatching 
  background-image: url('./assets/bg-button-default.png');
  background-repeat: repeat;
  background-color: lighten(#f9f9f9, 2%);


.btn-default 
  .light-hatching;

请注意 btn-default 正在嵌套 light-hatching。这在 Sass 中不起作用。 In the guide,他们说我可以像在 LESS 上一样进行嵌套,但它确实有效。

如何实现与 Sass 中相同的 LESS 示例相同的效果?

【问题讨论】:

你所做的叫做“嵌套”。 @cimmanon 我不知道.. 根据我很快会接受的答案,我看到它被称为扩展 其实你所做的就是所谓的mixins。在 LESS 中,每个选择器实际上都是一个没有参数的 mixin。 Extend 在大多数情况下可能会产生类似的效果,但它不会产生与您的 LESS 代码相同的结果。甚至可能让您在媒体查询方面遇到麻烦。 Sass 不支持您使用 LESS 代码演示的功能。 【参考方案1】:

我认为您正在寻找的是@extend,它从另一个选择器(或占位符)导入样式。

.btn-default 
    @extend .light-hatching;

【讨论】:

这个答案具有误导性,因为使用 @extend 扩展不会给您相同的结果,因为 OP 的示例会在 LESS 中为您提供。在 LESS 中,样式将被复制到 .btn-default 选择器,而在 SCSS 中,.btn-default 选择器将被添加到 .light-hatching。当您想要@extend 多个选择器时,这一点变得更加明显。 不,它没有。看看这个 SassMeister 要点:sassmeister.com/gist/816aa35741b276d7670bdbfd3e6a7036。它只是将.btn-default 附加到另外两个类,而不是像LESS 那样将它们的规则集复制到.btn-default 中。

以上是关于如何在 Sass 中嵌套类? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

SASS中的元素>元素? [复制]

如何在不使用 mixin 的情况下重用 sass 中的类? [复制]

如何在 SASS 中使用嵌套元素构造 BEM 修改器

在哪里以及如何使用嵌套类? [复制]

你如何在 webpack 中渲染嵌套的 SASS?

如何在css模块中嵌套类并做出反应?