C’est un outil permettant de transformer un langage (avec une syntaxe semblable à CSS), en CSS valide. La syntaxe du langage est souvent tellement proche de celle du CSS qu’on voit à peine la différence. Les préprocesseurs apportent une aide à l’écriture de vos feuilles de style. Aujourd’hui, les deux préprocesseurs les plus utilisés sont Sass et Less.
Foundation
Compass
Bourbon
Twitter Bootstrap
LESS Elements
LESS Hat
Nib
Éviter la règle CSS “@import’’
Le “@import” des fichiers .scss se produit lors de la compilation au lieu du coté client.
/* import sans le "_" */
@import "le_fichier_importe";
/* import avec le "_" */
@import "_le_fichier_importe";
importer un fichier sans le "_" indique que ce fichier doit être généré en .css
importer un fichier avec le "_" indique que ce fichier doit être importé dans le fichier compilé
.maclass {
@import "_le_fichier_importe";
}
Les selecteurs CSS peuvent être imbriqués.
Certaines propriétés avec le même nom peuvent être imbriquées
L’utilisation du symbole “&” fait référence au parent.
.ma-classe-parent {
.ma-classe-enfant {
strong {
color: black;
}
}
}
/* CSS GÉNÉRÉ */
.ma-class-parent .ma-class-enfant strong { color: black; }
* Ne pas dépasser 3 niveaux d'imbriquation
.ma-classe-parent {
.ma-classe-enfant {
span {
a {
strong {
color: black;
}
}
}
}
}
.ma-class-parent {
font:{
size: 12px;
weight: 700;
style: italic;
}
background:{
position: top left;
repeat: no-repeat;
color: #ccc;
}
}
/* CSS GÉNÉRÉ */
.ma-class-parent {
font-size: 12px;
font-weight: 700;
font-style: italic;
background-position: top left;
background-repeat: no-repeat;
background-color: #ccc;
}
.ma-class-parent {
.ma-classe-enfant {
.touch & {
color: black;
}
}
}
/* CSS GÉNÉRÉ */
.touch .ma-class-parent .ma-class-enfant { color: black; }
* .touch est une fonctionnalité de Modernizr
.ma-class-parent {
.ma-classe-enfant {
&:hover {
color: black;
}
&:first-child {
color: red;
}
}
}
/* CSS GÉNÉRÉ */
.touch .ma-class-parent .ma-class-enfant:hover { color: black; }
.touch .ma-class-parent .ma-class-enfant:first-child { color: red; }
* .touch est une fonctionnalité de Modernizr
La façon la plus simple d’utiliser SASS est l’utilisation des variables.
Les variables commencent avec le signe “$” et sont déclarés comme des propriétés.
“$nom : valeur”
Les utilisations les plus fréquentes sont les chiffres, les couleurs et les fonts.
$primary: #1abc9c; /* turquoise */
$secondary: #8E44AD; /* emerald */
$tertiary: #3498db; /* peter river /*
$hover: $secondary;
$family: 'Open sans', serif;
$margin: 10px 20px;
.ma-class {
$width: 10px;
width: $width;
}
Une variable créée dans un sélecteur n'est pas globale, donc ne peut être utilisée
pour d'autres sélecteurs.
Les mixins servent à définir des styles qui sont utilisés à plusieurs endroits. Les mixins acceptent aussi des arguments, ce qui permet de produire une plus grande variété de styles.
Nous utilisons “@mixin” pour définir une mixin.
Nous utilisons “@include” pour inclure tous les styles retournés par le mixin.
@mixin circle($circle-size, $color) {
width: $circle-size;
height: $circle-size;
background: $color;
@include border-radius($circle-size/2);
}
/* APPELÉ LE MIXIN */
.circle {
@include circle(200px, red);
}
/* CSS GÉNÉRÉ */
.circle {
width: 200px;
height: 200px;
background: red;
-webkit-border-radius: 100px;
-moz-border-radius: 100px;
-ms-border-radius: 100px;
-o-border-radius: 100px;
border-radius: 100px;
}
Nous voulons souvent utiliser les mêmes styles mais avec une légère différence. La façon la plus fréquente est d’utiliser une classe plus spécifique.
Avec SASS, la maintenance est beaucoup plus facile et cela permet d’éviter certaines erreurs.
Nous utilisons “@extend .classe” pour réutiliser les styles d’un selecteur sans avoir à tout dupliquer.
%border-bottom {
padding: 0 0 30px 0;
border-bottom: 2px blue solid;
}
.ma-classe {
@extend %border-bottom;
}
.mon-autre-classe {
@extend %border-bottom;
}
/* CSS GÉNÉRÉ */
.ma-classe, .mon-autre-classe {
padding: 0 0 30px 0;
border-bottom: 2px blue solid
}
* le placeholder n'est pas compilé dans le .css final
Sass supporte les operateurs standard
+ - * / %
Plusieurs fonctions sont disponibles.
percentage, round, ceil, floor, abs, min, max et plusieurs autres.
1em + 1em; /* 2em */
1em - 1em; /* 0em */
1in + 72pt; /* 2in */
6px * 4; /* 24px /*
18 % 5; /* 3 */
Il est possible de faire des calculs avec les couleurs.
Les opérations sont appliquées sur le canal rouge, vert et bleu.
Plusieurs fonctions sont disponibles dans SASS
rgb, rgba, red, green, blue, mix, hue, saturation, lightness, lighten, darken, saturate, desaturate, greyscale, complement, invert, alpha, rgba et plusieurs autres.
.lighten {
background: lighten($primary, 10);
}
.darken {
background: darken($primary, 10);
}
.rgba {
background: rgba($primary, 10);
}
L’utilisation du “@media” query est la même qu’en CSS sauf à l’exception qu’elle peut être imbriquée dans les sélecteurs.
Permet d’utiliser des “@if, @else if, @else” pour toutes les directives.
La déclaration du “@for” compile des styles de manière répétitive avec un compteur pour chaque itération.
Le “@each” compile des styles pour chaque valeurs dans un tableau
Le “@while” compile des styles jusqu’à ce que l’évalution soit “false”
$var: false;
@if $var == true {
&:before {
color: $secondary;
content: "$var == true, ce contenu s'affiche";
}
}@else {
&:before {
color: $tertiary;
content: "$var == false, ce contenu s'affiche";
}
}
@for $i from 1 through 6 {
.for-#{$i} {
height : $i * 20#{px};
}
}
/* CSS GÉNÉRÉ */
.for-1 { height: 20px; }
.for-2 { height: 40px; }
.for-3 { height: 60px; }
.for-4 { height: 80px; }
.for-5 { height: 100px; }
.for-6 { height: 120px; }
Compass est un framework pour SASS. Il contient une multitude de Mixins et d’outils pour nous aider à être plus rapide dans notre développement.
Les mixins pour le CSS3 sont habituellement utilisés pour éviter d’écrire tous les préfixes des fureteurs. Ils sont aussi utiles pour fournir une solution alternative pour les plus vieux fureteurs.
Opacity, box-shadow, animations, font-face et plusieurs autres.
Les helpers servent à améliorer les fonctions de SASS.
adjust-lightness, font-files, image-width, image-height, prefix, inline-image et plusieurs autres.
Mixins qui permettent de styler plus rapidement certains éléments typographiques.
Link effects, lists, texts
Les utilities sont des mixins pour gagner du temps et aider à la maintenance du projet.
Sprites, clearfix, resets, browser support etc
LinkedIn: ca.linkedin.com/in/rivestmathieu/
Github: https://github.com/MathRivest
Courriel: rivest.mathieu@gmail.com