Sass:浏览器供应商前缀

Ric*_*Zea 35 sass

我对Sass/Compass非常陌生,所以这个问题对你们很多人来说可能听起来很愚蠢.

无论如何,我需要知道的是如何为浏览器供应商前缀创建一个mixin,我可以反复重用,而不必每次都输入它们.

我在网上看过教程,但我无法理解我需要能够正确应用它们的一些概念.

我现在需要的是在CSS中完成这个:

* { 
    -webkit-box-sizing:border-box;
       -moz-box-sizing:border-box;          
        -ms-box-sizing:border-box; 
         -o-box-sizing:border-box; 
            box-sizing:border-box; 
  }
Run Code Online (Sandbox Code Playgroud)

谢谢.

Rim*_*ian 73

我也想抽出供应商前缀,但没有罗盘可供我使用.

@mixin vendor-prefix($name, $value) {
  @each $vendor in ('-webkit-', '-moz-', '-ms-', '-o-', '') {
    #{$vendor}#{$name}: #{$value};
  }
}
Run Code Online (Sandbox Code Playgroud)

萨斯:

* {
  @include vendor-prefix('box-sizing', 'border-box');
}
Run Code Online (Sandbox Code Playgroud)

呈现:

* {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  -ms-box-sizing: border-box;
  -o-box-sizing: border-box;
  box-sizing: border-box; }
Run Code Online (Sandbox Code Playgroud)

另见:http:
//stefanwienert.net/blog/2012/05/18/easy-css-vendor-prefix-mixin-for-sass/

  • 这可能是最有用的答案,因为它推广到其他属性. (2认同)

hop*_*per 22

听起来你想要使用Compass box-sizing mixin.您的SASS文件如下所示:

@import "compass/css3/box-sizing";

* {
    @include box-sizing(border-box);
}
Run Code Online (Sandbox Code Playgroud)

并编译到这个:

* {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box; }
Run Code Online (Sandbox Code Playgroud)

你可以在这里看到其他CSS3 Compass mixins .但请注意,Compass不包含前缀-ms-box-sizing,例如,因为IE8 +已经实现了它而没有前缀.如果你真的想要那些额外的属性,你就是这样做的:

@import "compass/css3/shared"

* {
    @include experimental(box-sizing, border-box, -moz, -webkit, -o, -ms, not -khtml, official);
}
Run Code Online (Sandbox Code Playgroud)

  • 观看文件夹应该可以正常工作 - 你需要做的就是在你的命令中添加`--compass`标志:`sass --watch scss:css --style compact --compass`. (2认同)

Ale*_*ero 5

以下是我处理供应商前缀的sass解决方案:https://github.com/Aloge/sass-prefixer

它与@ rimian的解决方案类似,但您只需要包含一个带有css属性及其值的mixin,它会自动呈现带有必要供应商前缀的css.所以这:

* {
  @include prefix(box-sizing, border-box)
}
Run Code Online (Sandbox Code Playgroud)

呈现:

* {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}
Run Code Online (Sandbox Code Playgroud)

但是这个:

* {
  @include prefix(display, flex)
}
Run Code Online (Sandbox Code Playgroud)

呈现:

* {
  display: -moz-flex;
  display: -webkit-flex;
  display: flex;
}
Run Code Online (Sandbox Code Playgroud)

它仍处于测试阶段,可能存在漏洞,但我正在努力改进它并包含新功能