J’avais chanté les louanges du préprocesseur Sass il y a quelques mois, convaincu de l’intérêt de cet outil. Depuis je l’ai intégré en production sur quelques projets, et son intérêt ne se dément vraiment pas. Combiné à les logiciels simples (je vous conseille vivement Prepros sur Windows) c’est un bonheur à utiliser.
Les @mixins
sont un vrai plus de Sass. Pour rappel ils permettent de réutiliser grâce à @include
une partie de notre CSS, qu’on peut par exemple combiner avec des variables. J’ai pu en récupérer quelques-uns assez utiles à droite et à gauche, que je partagerai prochainement ici.
Je suis notamment tombé sur un @mixin
assez intéressant pour gérer les media queries, publié dans un article de Web Design Weekly. Le @mixin
utilisé est le suivant :
@mixin breakpoint($point) {
@if $point == large {
@media (min-width: 64.375em) {
@content;
}
} @else if $point == medium {
@media (min-width: 50em) {
@content;
}
} @else if $point == small {
@media (min-width: 37.5em) {
@content;
}
}
}
Il permet donc d’ajouter facilement des breakpoints à un design responsive. Ainsi pour reprendre l’exemple de l’article, le SCSS suivant :
.page-wrap {
width: 75%;
@include breakpoint(large) {
width: 60%;
}
}
Se transformera en :
.page-wrap {
width: 75%;
}
@media (min-width: 64.375em) {
.page-wrap {
width: 60%;
}
}
C’est un @mixin
très utile mais je voulais le simplifier et le rendre un peu plus flexible, histoire de l’adapter sur mesure à différents media queries. Je l’ai donc transformé en ceci :
@mixin bp($point) {
@media screen and (min-width: $point / 16 + em) {
@content;
}
}
Il suffit ensuite simplement de remplacer la variable $point
par la taille que l’on souhaite pour notre media queries (query ?) en pixels, et celle-ci sera automatiquement convertie en em
.