2013-09-21 45 views
4

剛剛從LESS切換,發現在SASS中全局變量。所以要爲特定塊定義特殊變量,我需要編寫類似$words-that-describe-particular-block-padding: 10px;的東西。爲什麼SASS不具有局部變量?

在所有評論中,由於作品的功能豐富,作者使SASS比LESS更先進,但實際上缺乏如命名空間殺死所有經驗的簡單事情。

爲什麼做出設計決定?
我錯了,全球唯一的變數更好,因爲我失蹤了?

UPD:
SASS:

$var: 1px; 
#id1 { 
$var: 2px; 
width: $var; 
} 
#id2 { 
width: $var; 
} 

LESS:

@var: 1px; 
#id1 { 
@var: 2px; 
width: @var; 
} 
#id2 { 
width: @var; 
} 

嘗試的例子與此在線編譯器:

+3

不知道你爲什麼這麼想...... [Sass變量](http://sass-lang.com/docs/yardoc/file.SASS_REFERENCE.html#variables_)「變量只能在嵌套選擇器級別如果它們是在任何嵌套選擇器之外定義的,則它們在任何地方都可用。「 – steveax

+1

@steveax他們不能被覆蓋 - 檢查更新後的文章plz –

+0

此行爲將在4.0中更改,請參閱https://github.com/sass/sass/issues/136。在此之前,使用命名約定(套管,下劃線等)來區分全局變量和局部變量。 –

回答

13

這是不完全正確。如果您運行下面的代碼:

.header { 
    $color: #000; 
    background: $color; 
} 
.footer { 
    background: $color; 
} 

你會得到

Sass Error: Undefined variable: "$color". 

因此,色彩變量不是全球性的。它僅在其定義的範圍內可用。

但是,SASS或LESS有很多限制。如果你不滿意他們提供的東西,我會建議檢查this

+0

試試這個:'$ var:1px; #id1 { $ var:2px; width:$ var; } #id2 { width:$ var; }'。在更少的情況下,這種情況將在注意範圍的情況下處理。 –

+1

這就是事情應該如何運作的。在#id1中,您更改了全局變量的值。這就是爲什麼在#id2你得到2px而不是一個。如果你試試這個$ var:1px; #id2 {width:$ var; }#id1 {$ var:2px; width:$ var; }#id2會得到1px,#id1會得到2px。 – Krasimir

+1

這就是SASS的工作原理,但在大多數編程語言中,這種情況將以不同的方式處理。 –

相關問題