2011-08-24 18 views
10

Sass私は色相の割合を取得するにはサスlightness() methodを使用していパーセンテージを単位のない数値を変換するpercentage() functionを持っているが、私は(10進数の割合)の逆を行うための機能を見つけることができませんSassを使って、パーセンテージを10進数に変換する方法は?

。私はrgba()の色の透明度を指定するのに使うために、この割合を10進値に変換したいと思います。

$transparent-colorには、パーセントではなく小数である$alphaの値が必要なため、コンパイルに失敗するSCSSの例を示します。

$color: hsl(50deg, 50%, 50%); 
$alpha: lightness($color); 
$transparent-color: rgba(0,0,0,$alpha); 
.foo { background: $transparent-color } 

私はSass DocumentationCompass Referenceで解決策を探していると、これを行う方法があるに違いありません知っているされてきました。

答えて

27

by 100%

パーセンテージでパーセンテージを除算すると、結果は10進数になります。

サスコード:

CSSにコンパイル
$percent: 44% 
.foo 
    opacity: $percent/100% 

.foo { opacity: 0.44; } 
2

SASSはこれを組み込み関数として提供しませんが、確かにadd a custom functionで変換を実行できます。割合()のソースを見てみると、私は小数()関数がどのように見えるかで刺しを取っ:

def decimal(value) 
    unless value.is_a?(Sass::Script::Number) && value.unit_str == "%" 
    raise ArgumentError.new("#{value.inspect} is not a percent") 
    end 
    Sass::Script::Number.new(value.value/100.0) 
end 
あなたはパーセントで除し、小数点値にパーセンテージを変換するために、サスの数学を使用することができます
+1

おかげRhysyngsun!結果を浮動小数点にするために、 "100"ではなく "100.0"を使用するようにソリューションを編集しました。テストされ、期待どおりに動作します。 –

関連する問題