Buscar..


Sintaxis

  • @mixin mixin-name ($argument1, $argument, ...){ ... }

Crea y utiliza un mixin.

Para crear una @mixin usa la directiva @mixin .

@mixin default-box ($color, $borderColor) {
    color: $color;
    border: 1px solid $borderColor;
    clear: both;
    display: block;
    margin: 5px 0;
    padding: 5px 10px;
}

Puede especificar una lista de argumentos dentro de un paréntesis después del nombre de la mezcla. Recuerda comenzar tus variables con $ y separarlas con comas.

Para usar la mezcla en otro selector, use la directiva @include .

footer, header{ @include default-box (#ddd, #ccc); }

Los estilos de la mezcla ahora se usarán en el footer y el header , con el valor #ccc para la variable $color y #ddd para la variable $borderColor .

Mixin con argumento variable.

Hay algunos casos en mixins donde puede haber argumentos simples o múltiples mientras se usa. Tomemos un caso de border-radius de border-radius donde puede haber un solo argumento como border-radius:4px; o múltiples argumentos como border-radius:4px 3px 2px 1px; .

Tradicional con mezcla de argumentos de palabras clave será como a continuación: -

@mixin radius($rad1, $rad2, $rad3, $rad4){
 -webkit-border-radius: $rad1 $rad2 $rad3 $rad4;
 -moz-border-radius: $rad1 $rad2 $rad3 $rad4;
 -ms-border-radius: $rad1 $rad2 $rad3 $rad4;
 -o-border-radius: $rad1 $rad2 $rad3 $rad4;
 border-radius: $rad1 $rad2 $rad3 $rad4;
}

Y utilizado como

.foo{
    @include radius(2px, 3px, 5px, 6px)
}

El ejemplo anterior es complejo (codificar, leer y mantener) y si no puede pasar solo uno o dos valores, generará un error y, para usar uno, dos o sus valores, debe definir otros tres mixins.

Al utilizar la variable Argumento , no tiene que preocuparse por la cantidad de argumentos que puede pasar. Los argumentos variables se pueden declarar definiendo un nombre de variable seguido de tres puntos (...) . A continuación se muestra un ejemplo de un argumento variable.

@mixin radius($radius...)
{  
    -webkit-border-radius: $radius;
    -moz-border-radius: $radius;
    -ms-border-radius: $radius;
    -o-border-radius: $radius;
    border-radius: $radius;
}

Y utilizado como

.foo{
    @include radius(2px 3px 5px 6px)
}
.foo2{
    @include radius(2px 3px)
}
.foo3{
    @include radius(2px)
}

El ejemplo anterior es mucho más simple (para codificar, mantener y leer), no debe preocuparse por la cantidad de argumentos que están por venir, ya sea uno o más de uno .

Si hay más de un argumento y, en cualquier caso, desea acceder al segundo argumento, puede hacerlo escribiendo el nombre de propertyname : nth(variable_name, 2) .

Incumplimientos sensuales

SASS le ofrece la posibilidad de omitir cualquier parámetro, excepto los que desea sobrescribir, por supuesto. Tomemos nuevamente el ejemplo de la default-box :

@mixin default-box ($color: red, $borderColor: blue) {
    color: $color;
    border: 1px solid $borderColor;
    clear: both;
    display: block;
    margin: 5px 0;
    padding: 5px 10px;
}

Aquí llamaremos a la mezcla que ha sobrescrito el segundo parámetro.

footer, header{ @include default-box ($borderColor: #ccc); }

el valor de $borderColor es #ccc , mientras que $color permanece red

Argumentos opcionales

Los argumentos opcionales de SASS le permiten usar un parámetro solo si especifica su valor; De lo contrario, será ignorado. Tomemos un ejemplo de la siguiente mezcla:

@mixin galerie-thumbnail ($img-height:14em, $img-width: null) {
    width: $img-width;
    height: $img-height;
    outline: 1px solid lightgray;
    outline-offset: 5px;
}

Así que una llamada a

.default { 
  @include galerie-thumbnail; 
}
.with-width { 
  @include galerie-thumbnail($img-width: 12em);
}
.without-height { 
  @include galerie-thumbnail($img-height: null);
}

simplemente mostrará lo siguiente en el archivo CSS:

.default {
  height: 14em;
  outline: 1px solid lightgray;
  outline-offset: 5px;
}

.with-width {
  width: 12em;
  height: 14em;
  outline: 1px solid lightgray;
  outline-offset: 5px;
}

.without-height {
  outline: 1px solid lightgray;
  outline-offset: 5px;
}

SASS no genera propiedades con valor null como su valor, lo cual es muy útil cuando necesitamos incluir un argumento opcional en nuestra llamada o no.

directiva @content

Los mixins pueden pasar un bloque de código compatible con SASS, que luego estará disponible dentro del mixin como la directiva @content .

@mixin small-screen {
  @media screen and (min-width: 800px;) {
    @content;
  }
}

@include small-screen {
  .container {
    width: 600px;
  }
}

Y esto daría salida:

  @media screen and (min-width: 800px;) {
    .container {
      width: 600px;
    }
  }

Los mixins pueden usar la directiva @content y seguir aceptando parámetros.

@mixin small-screen($offset) {...


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow