2013-05-21 5 views
10

verwendet Ich habe einen mixin einen Cross-Browser-Calc tun einrichten,Wie kann ich einen Ausdruck in eine Calc() mixin übergeben, die Sass Variablen

@mixin calc($property, $expression...) { 
    #{$property}: -moz-calc(#{$expression}); 
    #{$property}: -o-calc(#{$expression}); 
    #{$property}: -webkit-calc(#{$expression}); 
    #{$property}: calc(#{$expression}); 
} 

Ich habe auch eine Variable.

$line: 12px; 

Ich möchte in der Lage sein, eine Variable zu verwenden.

@include calc(width, "30% - ($line * 2)) "); 

Aber ich bin nicht sicher, ob das der beste Weg, um darüber zu gehen.

+1

Es gibt keinen Grund fügen Sie einen Präfix für Opera, da Opera unterstützt 'calc()' überhaupt nicht. Wenn sie es schließlich unterstützen, gibt es keinen Grund zu erwarten, dass es überhaupt vorangestellt wird. – cimmanon

Antwort

19

Sie müssen String-Interpolation auf dem Wert, den Sie vorbei an den mixin verwenden:

.foo { 
    @include calc(width, #{"30% - #{$line * 2}"}); 
} 

Ausgang:

.foo { 
    width: -moz-calc(30% - 24px); 
    width: -o-calc(30% - 24px); 
    width: -webkit-calc(30% - 24px); 
    width: calc(30% - 24px); 
} 
+1

Ein bisschen hässlich, aber funktioniert. Vielen Dank! – Jeewes

Verwandte Themen