underscore libreria framework findwhere empty chunk backbone css css3 sass compass-sass blueprint-css

css - libreria - Sass Mixin Error para filtros específicos de IE como-ms-filter



underscore empty object (3)

Actualice su sintaxis para usar : lugar de = para las definiciones de propiedad:

=mixin($variable) property: value property: $variable

Verifique la referencia de SASS , aunque los ejemplos están en SCSS en lugar de SASS con sangría . Índice completo de la documentación de SASS .

Estoy tratando de hacer un botón mezclando así:

=default_button(!lighter, !darker) :border= 1px !lighter solid :background-color #e3e3e3 :background= -webkit-gradient(linear, 0 0, 0 100%, from(!lighter), to(!darker)) repeat-x, #d0581e :background= -moz-linear-gradient(90deg, !darker, !lighter) repeat-x scroll 0 0 #d0581e :filter= progid:DXImageTransform.Microsoft.gradient(startColorstr=''!lighter'', endColorstr=''!darker'') :-ms-filter= "progid:DXImageTransform.Microsoft.gradient(startColorstr=''!lighter'', endColorstr=''!darker'')" :zoom 1 :margin 0 0 0 0 :width auto :padding 2px 14px 2px 14px :border-radius 10px :-webkit-border-radius 10px :-moz-border-radius 10px :color #FFF

Cuando compilo el Sass, recibo este error para las líneas que comienzan con -filter y -ms-filter:

SASS :: SyntaxError: el token de rparen esperado, era el token single_eq

Estoy bastante seguro de que es mi ubicación de los = ''s, pero no estoy exactamente seguro de cómo escribirlo correctamente. Funciona si paso los valores hexadecimales en lugar de! Más claro,! Más oscuro, porque entonces puedo eliminar el signo = así:

:filter progid:DXImageTransform.Microsoft.gradient(startColorstr=''#F89F16'', endColorstr=''#d0581e'') :-ms-filter "progid:DXImageTransform.Microsoft.gradient(startColorstr=''#F89F16'', endColorstr=''#d0581e'')"


La interpolación #{} no funciona a veces porque acorta los valores de color hexadecimales. Por ejemplo, acortará #334455 a #345 , lo que rompe la sintaxis del filtro.

SASS tiene una nueva función en la versión 3.2: ie-hex-str() .

Así es como lo hice funcionar:

filter: unquote("progid:DXImageTransform.Microsoft.gradient(startColorstr=''") + ie-hex-str($start) + unquote("'', endColorstr=''") + ie-hex-str($stop) + unquote("'',GradientType=0)"); /* IE6-9 */


Resuelto de esta manera, pero sigue buscando sugerencias alternativas de la mejor manera ...

=default_button(!lighter, !darker) text-shadow= 1px 1px 3px darken(!darker, 8) border= 1px !darker solid background-color= !lighter background= -webkit-gradient(linear, 0 0, 0 100%, from(!lighter), to(!darker)) repeat-x, !darker background= -moz-linear-gradient(90deg, !darker, !lighter) repeat-x scroll 0 0 !darker -ms-filter = "progid:DXImageTransform.Microsoft.gradient(startColorstr=''#{!lighter}'', endColorstr=''#{!darker}'')" :zoom 1 :margin 0 0 0 0 :width auto

La sintaxis de Sass ha cambiado desde que esta respuesta se publicó originalmente. La sintaxis moderna de sass (con sangría) se ve así:

=default_button($lighter, $darker) text-shadow: 1px 1px 3px darken($darker, 8) border: 1px $darker solid background-color: $lighter background: -webkit-gradient(linear, 0 0, 0 100%, from($lighter), to($darker)) repeat-x, $darker background: -moz-linear-gradient(90deg, $darker, $lighter) repeat-x scroll 0 0 $darker -ms-filter: unquote("progid:DXImageTransform.Microsoft.gradient(startColorstr=''#{$lighter}'', endColorstr=''#{$darker}'')") zoom: 1 margin: 0 0 0 0 width: auto