2014-09-26 35 views
1

我有有多個值以下SASS地圖:如何使用SASS映射多個值與每個功能的混入內部

$map: (key: (value1, value2)); 

使用標準,如下面的每個功能正常工作:

@each $key, $value1, $value2 in $map { 
    // Do whatever here 
} 

但是,如果我嘗試使用相同的排序各功能的傳遞混入地圖中混入內部,各功能不與下面的工作:

@mixin my-mixin($map) { 

    @each $key, $value1, $value2 in $map { 
     // Do whatever here 
    }  

} 

如何使用mixin中的每個函數以及每個鍵具有多個值的地圖?

你可以看到我正在試圖做的下面,我試圖做一個mixin,它使用模塊化的規模輸出一個屬性。有使用了兩個模塊秤,一個默認爲小屏幕(移動第一)和一個較大的一個較大的屏幕:

// Output responsive modular properties 
@mixin rms-value($properties) { 

    @each $property-name, $property-ms, $property-ms2 in $properties { 

     $rem-value: ms($property-ms); 
     $px-value: rem-to-pixels($rem-value); 
     #{$property-name}: $px-value; 
     #{$property-name}: $rem-value; 


    } 

    // Secondary modular scale used for larger screens 
    @include breakpoint($breakpoint-medium) { 

     @each $property-name, $property-ms2 in $properties { 

      $rem-value: ms($property-ms2, 1rem, $ms-ratio-large); 
      $px-value: rem-to-pixels($rem-value); 
      #{$property-name}: $px-value; 
      #{$property-name}: $rem-value; 

     } 

    } 

} 

這可以隨後被用於輸出一個邊距和填充頂例如:

$properties: (
    padding-top: (1, 2), 
    margin-bottom: (2, 3), 
); 

p { 
    @include rms-value($properties); 
} 

這是工作的罰款,我只用一個單一的值在每張地圖鍵

+0

您正在嘗試在mixin中包含mixin。你還想添加斷點mixin嗎?我想你可能想在mixin中設置一個無效的mixin,而不是包含它。 – 2014-09-26 13:39:56

+0

斷點mixin使用:https://github.com/at-import/breakpoint這整個事情工作正常,當我只有一個值每個地圖的關鍵所以我沒有看到一個mixin的問題mixin – user1280853 2014-09-26 13:41:58

+0

你需要提供最少量的代碼,這些代碼將按預期編譯(變量,混合函數,函數等)。如果斷點mixin與問題無關,那麼它不應該成爲示例代碼的一部分。 – cimmanon 2014-09-26 14:41:31

回答

2

你的錯誤,當是您要作爲參數傳遞的地圖變量。你應該嘗試設置混入地圖變量中,並設置作爲參數可能需要的關鍵是這樣的:

@mixin my-mixin($key) { 

    $map: (
    key1: (red, blue), 
    key2: black 
); 

    @each $key, $value in $map { 
    // do whatever 
    } 
} 

沒有功能的例子:

@mixin my-mixin($key) { 

    $map: (
    key1: 10px, 
    key2: 10em 
); 

    font-size: map-get($map, $key); 
} 

div { 
    @include my-mixin(key2); 
} 

的位置例如:http://sassmeister.com/gist/9e3741bfbddf1260500f

+0

我已更新我的原始帖子,以顯示我正在嘗試做什麼。謝謝 – user1280853 2014-09-26 13:24:16

相關問題