2017-10-10 131 views
2

我試圖存儲圖像和尺寸的青菜,現在我可以加載所有,但我想更具體,並能夠在我的.logo類加載不同的圖像SASS CSS地圖存儲圖像尺寸

像例如,定義類似twitter或google的圖片。

$logos: (
    twitter: (width:200px, height:100px,background-image: url('twitter.png')), 
    google: (width:600px, height:200px,background-image: url('google.png')) 

); 

     @each $social, $icon in $logos { 
       .logo { 
        width: map-get($icon, width); 
        height: map-get($icon, height); 
        background-image:map-get($icon,background-image); 
       } 
     } 

輸出:

.logo { 
    width: 200px; 
    height: 100px; 
    background-image: url("twitter.png"); 
} 

.logo { 
    width: 600px; 
    height: 200px; 
    background-image: url("google.png"); 
} 

輸出我想:

// Twitter的標誌,如果我定義了上面。

.logo { 
    width: 200px; 
    height: 100px; 
    background-image: url("twitter.png"); 
} 

//谷歌的標誌,如果我定義了上面太

.logo { 
    width: 600px; 
    height: 200px; 
    background-image: url("google.png"); 
} 

回答

1

編輯:如果你只是想補充以上您對.logo代碼 評論只是添加/*#{$social}*/上述.logo@each-loop。 輸出示例:

/*twitter*/ 
.logo { 
    width: 200px; 
    height: 100px; 
    background-image: url("twitter.png"); 
} 

你想是這樣的編譯?

.logo.twitter{---} 

,如果你換一個#{}內您的變量,你可以使用它!

例子:

$logos: (
    twitter: (width:200px, height:100px,background-image: url('twitter.png')), 
    google: (width:600px, height:200px,background-image: url('google.png')) 

); 
@each $social, $icon in $logos { 

    .logo.#{$social}{ 
    width: map-get($icon, width); 
    height: map-get($icon, height); 
    background-image:map-get($icon,background-image); 
    } 
} 

輸出

.logo.twitter { 
    width: 200px; 
    height: 100px; 
    background-image: url("twitter.png"); 
} 

.logo.google { 
    width: 600px; 
    height: 200px; 
    background-image: url("google.png"); 
} 

你也可以只使用您$social變量,只是刪除.logo@each循環,你會得到

.twitter { 
... 
} 

.google { 
    ... 
} 
+0

謝謝爲你的幫助,但我想要做的是這樣的: .logo {@include twitter;}載入twitter defo。理解? – Raduken

+0

所以,我試了一下,似乎你不能在#{social}變量中使用@include,或者爲此創建動態變量。我也不得不承認,我不完全確定你想達到什麼目的?你只想添加數據有時?否則這看起來像是一個合適的解決方案 – rebecca