2012-04-27 11 views
9

tengo unas pocas cosas SASS mixin:Cómo usar! Predeterminado en una mezcla SASS?

@mixin micro-clearfix 
    &:after, 
    &:before 
     content: "" 
     display: table 
    &:after 
     clear: both 
    * html & 
     height: 1% !default 
    *+html & 
     min-height: 1% !default 

Por desgracia, no se compila, a menos que se quita !default lo que sería el punto de tener este mixin.

El mensaje de error que estoy recibiendo es:

Invalid CSS after "1% ": expected expression (e.g. 1px, bold), was "!default") 

Lo que me gustaría lograr es que si height (o min-height) ya se ha definido para el selector entonces el mixin debe utilizar ese valor, de lo contrario, debe definir esta propiedad como 1%.

No deseo usar zoom ya que no es una propiedad válida y me gusta mantener mi CSS limpio.

¿Estoy usando !default de la manera incorrecta?

Tengo Compass 0.12.1 y SASS 3.1.10.

+6

'default' se utiliza con Sass declaraciones de variables, y no las propiedades CSS. – BoltClock

Respuesta

8

Así es como lo he hecho finalmente:

@mixin micro-clearfix 
    $minHeight: 1% !default 
    &:after, 
    &:before 
     content: "" 
     display: table 
    &:after 
     clear: both 
    * html & 
     height: $minHeight 
    *+html & 
     min-height: $minHeight 
+14

¿Por qué no pasar en '$ minHeight' a tu mixin y establecer el valor predeterminado como' @mixin micro-clearfix ($ minHeight: 1%) '? – maxbeatty

14

!default se pretende utilizar sólo cuando la declaración de variables: http://sass-lang.com/docs/yardoc/file.SASS_REFERENCE.html#variable_defaults_

Lo que estamos tratando de hacer se debe hacer con CSS !important declaration, que deben ser utilizados en la regla de fuera de la mixin (el que desea que prevalezca). De todas formas, usar !important generalmente no es una buena práctica. Tal vez podrías confiar en la cascada o la especificidad.

+0

Gracias por la respuesta, pero como ha mencionado con '! Important' no es aconsejable, por lo que no puedo aceptar su respuesta, además he encontrado una solución. – Wabbitseason

Cuestiones relacionadas