Sass问题:连接元素

时间:2015-10-01 12:26:18

标签: css sass vendor

我遇到了sass连接元素的问题。 我想得到-webkit-calc一起写成这样:

width: -webkit-calc(100% - 6rem);
width: -moz-calc(100% - 6rem);
width: -o-calc(100% - 6rem);

Sass代码:

$vendorlist: unquote("-webkit-") unquote("-moz-") unquote("-o-");
@mixin calcmixx($prop, $val) {
#{$prop}: calc(#{$val});
@each $pref in $vendorlist {
    #{$prop}:#{$pre} + calc(#{$val});
  }
}

以下是用于在mix文件中包含mixin的方法:

.PromoTitle{ margin: 0 auto; @include calcmixx( width, '100% - 6rem');

CSS结果:

.PromoTitle{
    width: calc(100% - 6rem);
    width: -webkit- +calc(100% - 6rem);
    width: -moz- +calc(100% - 6rem);
    width: -o- +calc(100% - 6rem);}

如果我试着写没有" +"

   #{$prop}:#{$pref} calc(#{$val});

结果如下:

width: calc(100% - 6rem);
width: -webkit- calc(100% - 6rem);
width: -moz- calc(100% - 6rem);
width: -o- calc(100% - 6rem);

我是以这种方式写的,没有结果:

#{$prop}:#{$pref}calc(#{$val});

2 个答案:

答案 0 :(得分:0)

Sass代码:

@mixin calcmixx($prop, $val) {
  @each $pref in -webkit-, -moz-, -o- {
    #{$prop}: $pref + calc(#{$val});
  } 
  #{$prop}: calc(#{$val});
}

用于在mix文件中包含mixin的方法:

.PromoTitle {
    margin: 0 auto;
    @include calcmixx(width, '100% - 6rem');
}

汇编为:

.PromoTitle {
  margin: 0 auto;
  width: -webkit-calc(100% - 6rem);
  width: -moz-calc(100% - 6rem);
  width: -o-calc(100% - 6rem);
  width: calc(100% - 6rem);
}

"供应商列表"真的没必要

答案 1 :(得分:-1)

我能够使用node-sass成功编译:

$vendorlist: -webkit-, -moz-, -o-;

@mixin calcmixx($prop, $val) {
  #{$prop}: calc(#{$val});
  @each $pref in $vendorlist {
    #{$prop}: #{$pref}calc(#{$val});
  }
}

.PromoTitle{
  margin: 0 auto;
  @include calcmixx(width, '100% - 6rem');
}

到此:

.PromoTitle {
  margin: 0 auto;
  width: calc(100% - 6rem);
  width: -webkit-calc(100% - 6rem);
  width: -moz-calc(100% - 6rem);
  width: -o-calc(100% - 6rem); 
}

原始问题中的+是不必要的