CSS属性为SASS mixin值

时间:2013-11-18 15:02:01

标签: html css properties sass mixins

我尝试构建一些通用的边距/填充混合...

这是我的代码:

[class*="shift"] {
  $sft-o: 10px;
  @mixin shift_stp($val) {
    &[class*="_sml"]{ $val: $sft-o; }
    &[class*="_mid"]{ $val: $sft-o * 2; }
    &[class*="_big"]{ $val: $sft-o * 3; }
  }
  &[class*="_m"]{
    @include shift_stp(margin);
  }
  &[class*="_p"]{
    @include shift_stp(padding);
  }
}

有些东西不对,所以我想知道是否可以将一些CSS属性设置为mixin值?有人可以帮忙吗?

1 个答案:

答案 0 :(得分:4)

如果您想将变量用作属性名称,则需要使用string interpolation - #{$var}

所以这应该有效:

[class*="shift"] {
  $sft-o: 10px;
  @mixin shift_stp($val) {
    &[class*="_sml"]{ #{$val}: $sft-o; }
    &[class*="_mid"]{ #{$val}: $sft-o * 2; }
    &[class*="_big"]{ #{$val}: $sft-o * 3; }
  }
  &[class*="_m"]{
    @include shift_stp(margin);
  }
  &[class*="_p"]{
    @include shift_stp(padding);
  }
}

DEMO

属性选择器的

只是注释 ... *="_m"也适用于其中包含_mid的那些(请参阅here)。 ..所以也许你应该重新考虑一下这个。