Considerando el ejemplo anterior donde hablamos de botones 3D con SASS:
See the Pen Myavav by Uriel Hernández (urielhdz) on CodePen.
¿Cómo podríamos hacerlo más reusable? Intentemos utilizando Mixins.
Qué son
Un mixin es una "función" en el sentido de que nos permite reutilizar código y que acepta argumenos, sin embargo, no es una función como tal (podemos decir esto porque en SASS también existen las funciones). La característica de los mixins es que definen propiedades que después se incluyen en un selector.
Ejemplo
Un mixin se define con el keyword @mixin seguido del nombre y los posibles parámetros:
@mixin threed_button($color){
}
Y para utilizarlo lo incluímos en algún selector:
a{
@include threed_button(#eee);
}
Al incluirlo además pasamos el valor de los parámetros que se utilizan en el mixin. En este punto es fácil poder mover nuestro código del botón 3D:
@mixin threed-button($base-color){
$shadow: "";
@for $i from 1 through 4{
$shadow: $shadow + "#{$i}px #{$i}px 0px 2px " + darken($base-color,$i*5) + ",";
}
$shadow : str-slice($shadow,0,str-length($shadow)-1);
appearance: none;
border:none;
background: $base-color;
box-shadow: unquote($shadow);
}
Ahora apliquemos nuestro mixin:
.threed-btn--pink{
@include 3d_button(#ff4081);
font-size:18px;
color:white;
}
Aquí está funcionando:
See the Pen MyyJrW by Uriel Hernández (@urielhdz) on CodePen.
¿Por qué usar mixins? Este caso es un claro ejemplo de por qué, crear botones para otras combinaciones de colores es mucho más fácil:
.threed-btn--pink{
@include 3d_button(#ff4081);
font-size:18px;
color:white;
}
.threed-btn--red{
@include 3d_button(red);
font-size:18px;
color:white;
}
Y listo, tenemos una función de código que podemos ir reciclando.
Extra: Nota como no coloqué el color de la fuente en el mixin, esto en el caso de que queramos hacer botones claros, el mixin tiene que abstraer únicamente las responsabilidades del mixin (en este caso el botón 3d).
En el siguiente artículo veremos arreglos y ciclo each.
-
Módulo 1 | 4 clases
Cómo Funciona la Web
expand_more -
Módulo 2 | 3 clases
HTML
expand_more -
Módulo 3 | 3 clases
Boilerplate
expand_more -
Módulo 4 | 7 clases
Navegación
expand_more-
play_circle_outline
Clase 1
Header, Nav, Ul, Li
-
play_circle_outline
Clase 2
CSS para la navegación
-
play_circle_outline
Clase 3
Figuras geométricas en CSS3
-
play_circle_outline
Clase 4
Mixins en SASS
-
play_circle_outline
Clase 5
Posicionar logo
-
play_circle_outline
Clase 6
Animar menú
-
play_circle_outline
Clase 7
Ciclos SASS y Fuentes personalizadas
-
-
Módulo 5 | 5 clases
Slider
expand_more -
Módulo 6 | 11 clases
Pantallas Inicio y Cuartos
expand_more-
play_circle_outline
Clase 1
Triángulos, Sombras y Más
-
play_circle_outline
Clase 2
Dividir pantalla
-
play_circle_outline
Clase 3
Círculos en CSS
-
play_circle_outline
Clase 4
Filtros en CSS3
-
play_circle_outline
Clase 5
Precios - Marcado (HTML)
-
play_circle_outline
Clase 6
Precios - Correcciones, Variables en SASS y más
-
play_circle_outline
Clase 7
Precios - Agregando el Ribbon
-
play_circle_outline
Clase 8
Precios - Rotar Elementos
-
play_circle_outline
Clase 9
Precios - Uso y Manejo de jQuery Templates
-
play_circle_outline
Clase 10
Precios - Revertir Giro
-
play_circle_outline
Clase 11
Galería con CSS y javaScript
-
-
Módulo 7 | 5 clases
Google Maps
expand_more -
Módulo 8 | 3 clases
Parallax
expand_more -
Módulo 9 | 4 clases
Responsive Design
expand_more -
Módulo 10 | 3 clases
Extra
expand_more -
Módulo 11 | 2 clases
Extras
expand_more