2013-10-27 101 views
1

我將樣式表從LESS轉換爲SCSS,並且大部分情況都很順利,但有一個問題:我似乎無法獲得我的某個mixin的工作。想知道SCESS相當於LESS逃跑的是什麼?

基本上,我還沒有完全跳上了HTML5的行列,我仍然用圖像進行梯度瀏覽器兼容性。

我寫了一個PHP腳本動態生成的梯度(是的,緩存它們!),然後LESS需要鏈接到的是,當混入被稱爲照顧。

反正 我的老混入(來自LESS):

.verticalGradient(@startColor, @endColor, @height){ 
    @tmpStartColor: escape("@{startColor}"); 
    @tmpEndColor: escape("@{endColor}"); 
    background: @endColor url('@{img_path}gradient/v/5px/@{height}/@{tmpStartColor}/@{tmpEndColor}.png') 0 0 repeat-x; 

}

這是我到目前爲止有我新買的混入(SCSS):

@mixin verticalGradient($startColor, $endColor, $height){ 
    background: $endColor url('#{$img_path}gradient/v/5px/' + $height + '/' + $startColor + '/' + $endColor + '.png') 0 0 repeat-x; 
} 

所以這裏的問題: 沒有被轉義,網址結束是這樣的:

/img/gradient/v/5px/25px/transparent/#ffe4c4.png 

它應該是:

/img/gradient/v/5px/25px/transparent/%23ffe4c4.png 

當然,因爲散列標籤,服務器最多隻能查看到透明/所以它沒有得到的顏色信息。

剝離哈希標籤是一個可接受的解決方案,如果這是可以做到(雖然我寧願只是逃避他們,因爲我是做之前),但我似乎無法找到任何方式做到這一點。

謝謝!

回答

3

我想通了這一點。

這讓我在正確的方向: How do I load extensions to the Sass::Script::Functions module?

而且這讓我有休息的方式: http://sass-lang.com/documentation/Sass/Script/Functions.html#adding_custom_functions

這是我的代碼,如果這是任何人:) 有用config.rb(需要LIB):

require File.dirname(__FILE__) + "/lib/urlencode.rb" 

LIB/urlencode.rb:

module Sass::Script::Functions 
    def urlencode(string) 
    Sass::Script::String.new(ERB::Util.url_encode(string)); 
    end 
    declare :urlencode, :args => [:string] 
end 

然後,它只是一個在我的樣式表實現的事情:

@mixin verticalGradient($startColor, $endColor, $height){ 
    background: $endColor url('#{$img_path}gradient/v/5px/' + $height + '/' + urlencode($startColor) + '/' + urlencode($endColor) + '.png') 0 0 repeat-x; 
} 
+0

我覺得應該是薩斯::腳本:: String.new(ERB :: Util.url_encode(string.value)) ; –

+0

絕對不是string.value - .value不返回任何數據。它雖然工作,但我有它。 –

+0

它'絕對string.value!如果沒有.value的它返回字符串包容「,這是錯誤的。 –

相關問題