Avec SCSS
Les variables sont définies dans un fichier "partial" _theme-settings.scss
avec des valeurs par défaut. Ce qui signifie, que vous pouvez écraser ces variables.
-
Les couleurs de base
Dans le dossier "styles/scss" de votre projet créez un fichier
theme-settings.scss
. Avec les variables suivantes :@use './vendors/sass-swing/theme/colors' as *; /* @use '../node_modules/sass-swing/src/scss/theme/colors' as *; /* neutral light color */ $neutral-light-color: ; // couleur de référence pour neutral $on-neutral-light-color-s: ; $on-neutral-light-color-l: ; $neutral-shadow:; $neutral-shadow-alt: ; $neutral-light-color-variation-1-s: ; $neutral-light-color-variation-1-l: ; $on-neutral-light-color-variation-1-s: ; $on-neutral-light-color-variation-1-l: ; $neutral-light-color-variation-2-s: ; $neutral-light-color-variation-2-l: ; $on-neutral-light-color-variation-2-s: ; $on-neutral-light-color-variation-2-l: ; $neutral-light-color-variation-3-s: ; $neutral-light-color-variation-3-l: ; $on-neutral-light-color-variation-3-s: ; $on-neutral-light-color-variation-3-l:; /* neutral dark color */ $neutral-dark-color: ; $neutral-dark-color-s: ; $neutral-dark-color-l: ; $on-neutral-dark-color-s: ; $on-neutral-dark-color-l: ; $neutral-dark-color-variation-1-s: ; $neutral-dark-color-variation-1-l: ; $on-neutral-dark-color-variation-1-s: ; $on-neutral-dark-color-variation-1-l: ; $neutral-dark-color-variation-2-s: ; $neutral-dark-color-variation-2-l: ; $on-neutral-dark-color-variation-2-s: ; $on-neutral-dark-color-variation-2-l: ; $neutral-dark-color-variation-3-s: ; $neutral-dark-color-variation-3-l: ; $on-neutral-dark-color-variation-3-s: ; $on-neutral-dark-color-variation-3-l: ; /* primary light color */ $brand-color: ; // couleur de référence pour primary $primary-light-color-s: ; $primary-light-color-l: ; $primary-shadow: ; $on-primary-light-color-s: ; $on-primary-light-color-l: ; $primary-light-color-variation-1-s: ; $primary-light-color-variation-1-l: ; $on-primary-light-color-variation-1-s: ; $on-primary-light-color-variation-1-l: ; $primary-shadow-variation-1: ; $primary-light-color-variation-2-s: ; $primary-light-color-variation-2-l: ; $on-primary-light-color-variation-2-s: ; $on-primary-light-color-variation-2-l: ; $primary-shadow-variation-2: ; $primary-light-color-variation-3-s: ; $primary-light-color-variation-3-l: ; $on-primary-light-color-variation-3-s:; $on-primary-light-color-variation-3-l: ; $primary-shadow-variation-3: ; /* primary dark color */ $primary-dark-color-s: ; $primary-dark-color-l: ; $on-primary-dark-color-s: ; $on-primary-dark-color-l: ; $primary-dark-color-variation-1-s: ; $primary-dark-color-variation-1-l: ; $on-primary-dark-color-variation-1-s: ; $on-primary-dark-color-variation-1-l: ; $primary-dark-color-variation-2-s: ; $primary-dark-color-variation-2-l: ; $on-primary-dark-color-variation-2-s: ; $on-primary-dark-color-variation-2-l: ; $primary-dark-color-variation-3-s: ; $primary-dark-color-variation-3-l: ; $on-primary-dark-color-variation-3-s: ; $on-primary-dark-color-variation-3-l: ; /* Secondary light color */ $secondary-color: ; //couleur de référence pour secondary" $secondary-light-color-s: ; $secondary-light-color-l: ; $on-secondary-light-color-s: ; $on-secondary-light-color-l: ; $secondary-shadow: ; $secondary-light-color-variation-1-s: ; $secondary-light-color-variation-1-l: ; $on-secondary-light-color-variation-1-s: ; $on-secondary-light-color-variation-1-l: ; $secondary-shadow-variation-1: ; $secondary-light-color-variation-2-s: ; $secondary-light-color-variation-2-l: ; $on-secondary-light-color-variation-2-s: ; $on-secondary-light-color-variation-2-l: ; $secondary-shadow-variation-2: ; $secondary-light-color-variation-3-s: ; $secondary-light-color-variation-3-l: ; $on-secondary-light-color-variation-3-s: ; $on-secondary-light-color-variation-3-l: ; $secondary-shadow-variation-3: ; /* Secondary dark color */ $secondary-dark-color-s: ; $secondary-dark-color-l: ; $on-secondary-dark-color-s: ; $on-secondary-dark-color-l: ; $secondary-dark-color-variation-1-s: ; $secondary-dark-color-variation-1-l: ; $on-secondary-dark-color-variation-1-s: ; $on-secondary-dark-color-variation-1-l: ; $secondary-dark-color-variation-2-s: ; $secondary-dark-color-variation-2-l: ; $on-secondary-dark-color-variation-2-s: ; $on-secondary-dark-color-variation-2-l: ; $secondary-dark-color-variation-3-s: ; $secondary-dark-color-variation-3-l: ; $on-secondary-dark-color-variation-3-s: ; $on-secondary-dark-color-variation-3-l: ;
La première ligne sert à importer une liste de couleurs prédéfinies. Vous n'êtes bien sûr pas obliger de l'utiliser et donc de l'importer
Comme vous l'avez remarqué, chaque couleur et variante ont une sous couleur préfixée avec
on-
. Celles-ci correspondent à la couleur contrastée pour l'écriture.Dans la majorité des cas ont ne modifiera pas la saturation, celle-ci reste inchangée. Sass nous fournit des fonctions utiles pour manipuler des couleurs pour nous aider tel que saturation (que vous vous servirez très souvent) et lightness (très peu utiliser, voir pas du tout) qui nous renvoie la valeur en % de la saturation et de la luminosité.
C'est très simple de les utiliser. Exemple :
$neutral-dark-color-s: saturation($neutral-dark-color);
Pour un thème optimal pour l'utilisateur et surtout pour les personnes ayant des capacités visuelles amoindries vous pouvez vous aider d'outils en ligne comme contrast-ratio pour vérifier que la norme WCAG soit respectée.Vous l'aurez peut-être remarqué vous pouvez également définir les ombres. Variables comportant le mot clef :
shadow
. -
Les couleurs supplémentaires
Comme cité plus haut vous pouvez personnaliser les couleurs supplémentaires.
Et là encore le format retenu est le HSL./* Success color */ $success-color: ; // couleur de référence pour success $on-success-color-s: ; $on-success-color-l: ; $success-color-variation-1-s: ; $success-color-variation-1-l: ; $on-success-color-variation-1-s: ; $on-success-color-variation-1-l: ; $success-color-variation-2-s: ; $success-color-variation-2-l: ; $on-success-color-variation-2-s: ; $on-success-color-variation-2-l: ; /* Info color */ $info-color: ; // couleur de référence pour info $on-info-color-s: ; $on-info-color-l: ; $info-color-variation-1-s: ; $info-color-variation-1-l: ; $on-info-color-variation-1-s: ; $on-info-color-variation-1-l: ; $info-color-variation-2-s: ; $info-color-variation-2-l: ; $on-info-color-variation-2-s: ; $on-info-color-variation-2-l: ; /* Warning color */ $warning-color: ; // couleur de référence pour warning $on-warning-color-s: ; $on-warning-color-l: ; $warning-color-variation-1-s: ; $warning-color-variation-1-l: ; $on-warning-color-variation-1-s: ; $on-warning-color-variation-1-l: ; $warning-color-variation-2-s: ; $warning-color-variation-2-l: ; $on-warning-color-variation-2-s: ; $on-warning-color-variation-2-l: ; /* Danger color */ $danger-color: ; // couleur de référence pour danger $on-danger-color-s: ; $on-danger-color-l: ; $danger-color-variation-1-s: ; $danger-color-variation-1-l: ; $on-danger-color-variation-1-s: ; $on-danger-color-variation-1-l: ; $danger-color-variation-2-s: ; $danger-color-variation-2-l: ; $on-danger-color-variation-2-s: ; $on-danger-color-variation-2-l: ;
Ou bien encore, les couleurs des blocs de type
<code>
ou la couleur des titres<Hx>
par exemple. Ici le format de couleur vous appartient. Hexadécimale, rgb/rgba, hsl/hsla./* misc colors */ $code-color-background: ; $code-color-text: ; $code-color-tag: ; $code-color-property: ; $code-color-value: ; $code-color-var: ; $code-color-comment: ; $code-color-lang-background: ; $code-color-lang-text: ; $kbd-color-background: ; $kbd-color-text: ; $ins-color-background: ; $ins-color-text: ; $del-color-background: ; $del-color-text: ; $divider-light-color: ; $divider-dark-color: ; $h1-light-color: ; $h2-light-color: ; $h3-light-color: ; $h4-light-color: ; $h5-light-color: ; $h6-light-color: ; $h1-dark-color: ; $h2-dark-color: ; $h3-dark-color: ; $h4-dark-color: ; $h5-dark-color: ; $h6-dark-color: ;
Sass Swing met à disposition quelques fonctions qui pourront vous être utile.
set-color-opacity($color, $opacity)
: Modifie l'opacité d'une couleur RGB ou RGBA.
Avec$opacity
compris entre 0 et 100color-yiq($color, $threshold : 0.40)
: Retourne la couleur contrastée en fonction de$color
Avec$threshold
compris entre 0 et 1create-neutral($color)
: Retourne la couleur complémentaire en fonction de la température de$color
neutral-desaturate($color)
: Retourne la couleur désaturée en fonction de la température de$color
-
make-shadow($preset:'custom', $color: #000, $inset: false, $left: 0, $top: 1, $blur: 1, $spread: 0, $unit: 'px')
Cette fonction va créer une ombre. Le paramètre$preset
peut prendre les valeurs suivantes :
custom, realistic, smooth, smooth-light, medium, long, diffuse, sharp, dreamy, shorter ou longer
Ces fonctions sont disponibles dans le fichier
functions.scss
qu'il vous suffit d'importer avec@use "./vendors/sass-swing/abstract/function" as *
au début de votre fichier. -
Autres options personnalisables
En plus des couleurs, vous avez la possibilité de configurer quelques variables générales.
Ces variables, servent à définir les polices de caractères, la fluidité des tailles de police d'écriture des éléments. Ou encore le rythme vertical entre les différentes sections et éléments composants votre page.
// Famille des polices de caractères $font-family-monospace: Consolas, 'Andale Mono WT', 'Andale Mono', 'Lucida Console', 'Lucida Sans Typewriter', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Liberation Mono', 'Nimbus Mono L', Monaco, 'Courier New', Courier, monospace !default; //consolas, 'Lucida Console', Monaco, courier, monospace !default; $font-family-serif: Georgia, Times, 'Times New Roman', serif !default; $font-family-sans: Roboto, Noto, 'Segoe UI', 'Helvetica Neue', Helvetica, Arial, sans-serif !default; $default-font-family: $font-family-sans !default; $default-font-family-alt: $font-family-serif !default; /* Hauteur entre les lignes de texte */ $default-line-height: ; $default-line-height-ratio: 161.8033% !default; // cette valeur est exprimé en % /* Taille de fluide pour le corps de la page */ $min-heading-font-size: ; $max-heading-font-size: ; /* Empattement des titres et global */ $default-heading-font-weight: 500 !default; $default-font-weight: 400 !default; /* Rythme vertical */ $vertical-flow-space-ratio: ; $vertical-heading-flow-space-ratio: ; $spacing: ; $flow-spacing: ; $block-spacing-vertical: ; $min-block-spacing-vertical: ; /* largeur minimal pour une colonne dans une grille */ $min-grid-col-width: 0 !default; /* aspect général des blocs et bordure */ $global-border-width: 1px !default; $global-outline-width: 2px !default; $global-border-radius: 0.35rem !default;
Sass Swing fournit une fonction
type-ratio
pour vous aider à choisir les valeurs des variables contenant le mot clefratio
. Cette fonction prend en paramètre une chaine de caractère. Les paramètres disponibles sont :
minorSecond, majorSecond, minorThird, majorThird, perfectFourth, augmentedFourth, perfectFifth, goldenRatio et goldenSquareRatioCette fonction est disponible dans le fichier
functions.scss
qu'il vous suffit d'importer avec@use "./vendors/sass-swing/abstract/function" as *
au début de votre fichier.