Sass 扩展Compass断点mixin以避免重复

Sass 扩展Compass断点mixin以避免重复,sass,placeholder,mixins,compass,Sass,Placeholder,Mixins,Compass,我正在使用Compass mixin为retina创建媒体查询,如示例所示: header { height: $header-image-height; text-align: center; position: relative; @include breakpoint($standard-resolution) { background: linear-gradient( rgba(0,

我正在使用Compass mixin为retina创建媒体查询,如示例所示:

header {
  height: $header-image-height;
  text-align: center;
  position: relative;
  @include breakpoint($standard-resolution) {
    background:
            linear-gradient(
                            rgba(0, 0, 0, 0.1),
                            rgba(0, 0, 0, 0.1)
            ),
            url(../../img/dist/xxx.jpg) center center no-repeat;
  }
  @include breakpoint($retina-resolution) {

    background:
            linear-gradient(
                            rgba(0, 0, 0, 0.1),
                            rgba(0, 0, 0, 0.1)
            ),
            url(../../img/dist/xxx_2x.jpg) center center no-repeat;
    background-size: 1176px auto;
  }
  color: $header-color;
  @extend %montserrat-bold;
}
它工作得很好。但是,如果我将相同的mixin放入另一个元素中,我将在最后得到@media的重复输出-每个元素一个:

@media screen and (max-resolution: 1.9999dppx), screen and (-webkit-max-device-pixel-ratio: 1.9999), screen and (max--moz-device-pixel-ratio: 1.9999), screen and (max-resolution: 191.9904dpi) {
  header {
    background: linear-gradient(rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0.1)), url(../../img/dist/xxx.jpg) center center no-repeat;
  }
}

和其他元素的相同输出。是否有任何方法可以从这个mixin中生成占位符,以便所有元素都在同一个@media指令下?

我找到了一个很好的解决方案,以避免输出上出现重复代码。 首先,有一个很好的工具可以管理断点,称为映射:

$breakpoints:  (
'retina': 
//here put all your breakpoints
)
第二,与其在每个目标元素中放置断点,不如将@include指令放在根目录中,并在其中放置所有使用新指令响应的元素,如下所示(我为此创建了单独的文件):

_retina.scss:


结束(不重复代码)))我希望它能帮助别人。顺便说一句,我发现指南针很烂((我不再使用它了。

我找到了一个很好的解决方案,以避免输出上出现重复代码。 首先,有一个很好的工具可以管理断点,称为映射:

$breakpoints:  (
'retina': 
//here put all your breakpoints
)
第二,与其在每个目标元素中放置断点,不如将@include指令放在根目录中,并在其中放置所有使用新指令响应的元素,如下所示(我为此创建了单独的文件):

_retina.scss:

结束(不重复代码)))我希望它能帮助别人。顺便说一句,我发现指南针很烂