2012-03-24 5 views
12

estoy tranquila nuevo a Sass ... Quiero crear un poco de CSS con los valores porcentuales como:Prevenir Sass de hacer cotizaciones arround valor

width : 13%; 

El valor es el resultado de una operación número Sass. Escribir este código SCSS

width : $main-width + "%" 

genera esto:

width : "13%"; 

CSS, lo que realmente no está funcionando, ya que debe ser:

width : 13%; 

escribir

width : $main-width %; 

resultados en

width : 13 "%" 

lo que también lleva a una regla css que no funciona. ¿Hay alguna manera de hacer que Sass imprima 13% sin formato, sin comillas?

Respuesta

14

Piense en las unidades en Sass como variables en álgebra en lugar de simplemente concatenar cadenas.

En álgebra: 2x * 3 = 6x

En Sass: 13 * 1% = 13%

utilizar este enfoque para hacer operaciones matemáticas más avanzadas. 10px * 3px = 30px*px

Pero px*px no es una unidad de CSS válido por lo que tiene que cancelar una dividiendo por 1px

30px*px/1px = 30px

Esperanza esto ayuda más allá de su pregunta original.

8

unquote("%") hace el truco.

+0

Sí, fin de la cita es la respuesta correcta! Obtenga más información en: http://sass-lang.com/documentation/Sass/Script/Functions.html#unquote-instance_method. También es importante saberlo desde el 9 de diciembre de 2015 Sass cambió ciertas formas de usar # {} y comillas: http://sass.logdown.com/posts/308328-cleaning-up-interpolation –

-2

Puedes probar #. que tenía un problema similar con un mixin y enumera

@mixin p($value, $position: a, $unit: $rhythm-unit){ 
    $vallist:(); 
    @if length($value) > 1 { 
    @each $sval in $value { 
     $sval: 0 !default; 
     $vallist: append($vallist, #{$sval}#{$unit}); 
    } 
    padding: $vallist; 
    } @else{ 
    @if $position == t { 
     padding-top: $value+$unit; 
    } @else if $position == r { 
     padding-right: $value+$unit; 
    } @else if $position == b { 
     padding-bottom: $value+$unit; 
    } @else if $position == l { 
     padding-left: $value+$unit; 
    } @else { 
     padding: $value+$unit; 
    } 
    } 
} 

El problema era

append($vallist, $sval+$unit); 

citas Siempre añadido en torno a estos valores por ejemplo "1rem" "1.25rem" que no es una sintaxis css correcta.

lo sustituyó con:

append($vallist, #{$sval}#{$unit}); 

Como se puede ver que uso # -sign con {} + y no es necesario nada más. Lo muy interesante aquí es que esto solo aparece con listas/agregar como se puede ver en mi exterior. Puede encontrarlo en la página de referencia sass Division and slash Si desea utilizar variables junto con un CSS simple, puede usar # {} para insertarlas.Por ejemplo: p { $ font-size: 12px; $ línea-altura: 30px; font: # {$ font-size}/# {$ line-height}; }

creo que sirve

+0

¿Cómo se agrega esto a la ¿Otras respuestas? Esta es una solución bastante terrible porque el uso de la interpolación siempre le da una cadena, mientras que el uso de la aritmética (como lo sugiere la respuesta más votada) le da otra longitud que puede usar para realizar más cálculos. – cimmanon

+0

Lo siento pero no entendí tu comentario en total porque mi inglés no es el mejor y también soy nuevo en sass. Mi respuesta es solo otra manera. De todos modos, funciona muy bien. ¿Puedes darme una solución mejor que la mía para mi problema específico? – ntiedt