tutorial compile sass

compile - ¿Por qué Sass cambia el formato de mis colores?



compile sass to css command line (2)

Sass está produciendo # 000 y #fff como valores de color blanco y negro en mi archivo css. Por ejemplo:

$color: #000; .box { color: $color; }

Salidas a:

.box { color: black; }

¿No debería dar salida a los valores hexadecimales?


No.

black , white y los otros 145 nombres de colores son parte del estándar de CSS:

http://www.w3schools.com/cssref/css_colorsfull.asp

Todos los navegadores los manejan correctamente y, al mismo tiempo, son mucho más fáciles de comprender para un desarrollador de CSS.

Entonces están bien.


Cómo trata Sass los colores varía según la versión que estés utilizando. Pero hay algunos comportamientos comunes:

  • Sass siempre maximizará la compatibilidad hacia atrás siempre que sea posible. Dado que la palabra clave , el hexadecimal y el rgba tienen la compatibilidad más amplia con el navegador, todos los colores se convertirán a uno de esos 3 formatos, dando prioridad a la palabra clave o hex. El formato rgba solo se usará si el color tiene transparencia alfa (si especifica rgba(0, 0, 0, 100) , Sass lo convertirá en black o en #000 )
  • Si Sass tiene que elegir entre usar la palabra clave o los formatos hexadecimales, el que usará dependerá de la configuración de salida. Los modos compacto o comprimido siempre se convertirán a hexadecimal, los otros formatos usarán la palabra clave.
  • Sass convertirá los colores hexadecimales a su formato de 3 dígitos en modo comprimido (por ejemplo, #000000 generará como #000 ).

Sass 3.3 y más viejo

Sass solo convierte colores cuando se usan como variables o si no están en uno de los 3 formatos descritos anteriormente:

$color-hex: #000000; $color-keyword: black; $color-rgb: rgb(0, 0, 0); $color-hsl: hsl(0, 0, 0); .box-hex { color: $color-hex; background: #000000; } .box-keyword { color: $color-keyword; background: black; } .box-rgb { color: $color-rgb; background: rgb(0, 0, 0); } .box-hsl { color: $color-hsl; background: hsl(0, 0, 0); }

Salida:

.box-hex { color: black; background: #000000; } .box-keyword { color: black; background: black; } .box-rgb { color: black; background: black; } .box-hsl { color: black; background: black; }

Sass 3.4 y posterior

El único cambio de 3.3 a 3.4 es que al usar variables, Sass conservará el formato de su color ... a menos que esté en otro formato que no sea la palabra clave, el hexágono o los formatos rgba.

.box-hex { color: #000000; background: #000000; }

Pero, ¿y si realmente necesito un formato específico?

Si absolutamente debe tener un formato específico, puede convertirlo en una cadena:

$color: #{''#F00''}; // or `unquote(''#F00'')` .foo { color: $color; }

Salida:

.foo { color: #F00; }

Solo tenga en cuenta que cuando hace esto, su "color" no funcionará con las funciones de manipulación del color como lighten() u darken() .