CSS属性作为SASS混合值[重复]

Posted

技术标签:

【中文标题】CSS属性作为SASS混合值[重复]【英文标题】:CSS property as SASS mixin value [duplicate] 【发布时间】:2013-12-01 18:56:01 【问题描述】:

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

这是我的代码:

[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】:

如果你想使用变量作为属性名,你需要使用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)...所以也许您应该重新考虑一下。

【讨论】:

以上是关于CSS属性作为SASS混合值[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Sass快速入门学习笔记

混合(mixin)

scss快速入门

sass和compass实战 读书笔记

sass 第一天

SASS 无法正常工作。尝试为 css 属性的值设置前缀