Manipulation des couleurs avec JavaScript | Bonus HTML

Publié le 22 mai 2022 par Mycamer

<img loading="lazy" class="alignnone wp-image-11641 size-medium" src="https://www.htmlgoodies.com/wp-content/uploads/2022/05/css-in-js-jss-tutorials-300x158.png" alt="Tutoriels CSS dans JS" width="300" height="158" srcset="https://www.htmlgoodies.com/wp-content/uploads/2022/05/css-in-js-jss-tutorials-300x158.png 300w, https://www.htmlgoodies.com/wp-content/uploads/2022/05/css-in-js-jss-tutorials-1024x538.png 1024w, https://www.htmlgoodies.com/wp-content/uploads/2022/05/css-in-js-jss-tutorials-768x403.png 768w, https://www.htmlgoodies.com/wp-content/uploads/2022/05/css-in-js-jss-tutorials-696x365.png 696w, https://www.htmlgoodies.com/wp-content/uploads/2022/05/css-in-js-jss-tutorials-1068x561.png 1068w, https://www.htmlgoodies.com/wp-content/uploads/2022/05/css-in-js-jss-tutorials-800x420.png 800w, https://www.htmlgoodies.com/wp-content/uploads/2022/05/css-in-js-jss-tutorials.png 1200w" sizes="(max-width: 300px) 100vw, 300px" />

L’un des nombreux attraits des bibliothèques CSS comme Sass et Less est leur large assortiment de fonctions de manipulation de couleurs telles que alléger, assombrir, saturer, etc. Avec la popularité croissante de CSS-in-JS, le besoin d’équivalents JavaScript (JS) a suivi. Juste au bon moment, un certain nombre de bibliothèques JS pour la conversion et la manipulation des couleurs ont surgi pour faciliter le travail des développeurs Web. En fait, pour le moment, il est difficile de décider lequel utiliser. Une bibliothèque recommandée par le populaire JSS La bibliothèque CSS-in-JS s’appelle simplement “Couleur“. Il est assez riche en fonctionnalités, ayant plus à offrir que color2k et une taille plus petite que chroma.js. Ce didacticiel de développement Web fournira un aperçu de certains des couleurs de nombreuses fonctionnalités et mettez-les au travail dans une application angulaire à page unique (SPA).

Avant de commencer, vous voudrez peut-être consulter notre Introduction au tutoriel CSS-in-JS.

Comment configurer et installer la bibliothèque de couleurs JSS

La méthode d’installation recommandée Couleur est d’utiliser le Node Package Manager (NPM). La commande est simplement :

$ npm install color

Ou même npm i color si vous êtes vraiment en minimisant la frappe.

Ensuite, vous pouvez vous y référer dans vos fichiers node.js en utilisant require :

const Color = require('color');

Dans Angular, vous devez utiliser importer:

import Color from 'color';

Les exposés Couleur object fournit quelques constructeurs différents parmi lesquels choisir, dont la plupart acceptent une permutation des valeurs Red Green Blue (RGB). Il acceptera également un nombre limité de chaînes, telles que le format HEX souvent utilisé :

const color = Color('#FFFFFF');

const color = Color('rgb(255, 255, 255)');

const color = Color({r: 255, g: 255, b: 255});

const color = Color.rgb(255, 255, 255);

const color = Color.rgb([255, 255, 255]);

Sous les couvertures, Corde les constructeurs sont gérés par le chaîne de couleur bibliothèque.

Vous pouvez en savoir plus sur les options de style dynamique en lisant notre Style dynamique avec JSS Didacticiel.

Explorer l’API JS Color

Couleurs L’API s’est fortement inspirée de couleur-js, dont les fonctions de manipulation ressemblent étroitement à celles des outils CSS tels que Sass, LESS et Stylus. Mais, avant d’en arriver là, regardons comment convertir les couleurs en d’autres formats.

CSS prend en charge une multitude de types de couleurs, des noms prédéfinis tels que “aliceblue“, et “sarcelle” à HEX (“#ee652e“), RVB (rgb(138, 238, 130))et RVB (rgba(0,255,0,0.75)).

A la recherche du RVB valeur numérique ? Appeler le hexagone() méthode:

color.hex() // #ffffff

Convertir une couleur en un RVB objet:

color.object(); // {r: 255, g: 255, b: 255}

Voici comment définir un hachage de la valeur de couleur et refléter le modèle actuel de la couleur :

color.rgb().array() // [255, 255, 255]

Pour obtenir l’individu RVB valeurs, utilisez celles-ci :

color.red()   //255

color.green() //255

color.blue()  //255

Lis: Utilisation d’un service angulaire pour lire des variables Sass

Fonctions de manipulation des couleurs et couleurs CSS

Sass est livré avec de nombreuses fonctions intéressantes qui peuvent facilement être appliquées aux couleurs CSS. Ces fonctions simplifient le choix et la manipulation des couleurs. Ceux-ci inclus assombrir et alléger, saturer et désaturer, RVB, et plus. Alors aussi, avec le Couleur bibliothèque. Voici un échantillon :

//lighten by 50%

color.lighten(0.5)     // hsl(100, 50%, 50%) -> hsl(100, 50%, 75%)

//darken by 50%

color.darken(0.5)      // hsl(100, 50%, 50%) -> hsl(100, 50%, 25%)

color.saturate(0.5)    // hsl(100, 50%, 50%) -> hsl(100, 75%, 50%)

color.desaturate(0.5)  // hsl(100, 50%, 50%) -> hsl(100, 25%, 50%)

rgba(10, 10, 10, 0.8)

D’autres fonctions de manipulation utiles incluent :

color.grayscale()      // #5CBF54 -> #969696

color.whiten(0.5)      // hwb(100, 50%, 50%) -> hwb(100, 75%, 50%)

color.blacken(0.5)     // hwb(100, 50%, 50%) -> hwb(100, 50%, 75%)



color.fade(0.5)        // rgba(10, 10, 10, 0.8) -> rgba(10, 10, 10, 0.4)

color.opaquer(0.5)     // rgba(10, 10, 10, 0.8) -> rgba(10, 10, 10, 1.0)



color.rotate(180)      // hsl(60, 20%, 20%) -> hsl(240, 20%, 20%)

color.rotate(-90)      // hsl(60, 20%, 20%) -> hsl(330, 20%, 20%)



color.mix(Color("yellow"))        // cyan -> rgb(128, 255, 128)

color.mix(Color("yellow"), 0.3)   // cyan -> rgb(77, 255, 179)

Toutes les fonctions ci-dessus peuvent être enchaînées :

color.green(100).grayscale().lighten(0.6)

D’autres fonctions renseignent sur une couleur :

color.isLight()         // true

color.isDark()          // false

Utilisation de color.js pour définir les couleurs du thème

Dans les deux derniers articles sur CSS-in-JS, nous avons adapté le Utilisation d’un service angulaire pour lire la démo des variables Sass employer JSS pour définir les couleurs d’un composant angulaire via @Saisir paramètres. Bien que JSS et color.js forment un couple parfait, chaque bibliothèque peut être utilisée indépendamment de l’autre. Pour souligner ce point, nous appliquerons couleur.js au service de couleur qui définit les couleurs du thème pour l’application.

Dans le app.component.scss fichier, les fonctions Sass sont utilisées pour définir le léger et foncé versions des couleurs de base :

$backgroundColor: rgb(82, 172, 240);

$lightBackgroundCcolor: lighten($backgroundColor, 16%);

$hoverColor: blue;

$darkHoverColor: darken($hoverColor, 20%);

$focusBorderColor: darkgray;

$darkFocusBorderColor: darken($focusBorderColor, 40%);

Imaginez une situation où notre application a été construite en utilisant CSS vanille plutôt que Sass. Sans accès aux fonctions Sass, nous aurions besoin d’un autre moyen d’affecter les couleurs de base. Ce serait une utilisation idéale de la bibliothèque de couleurs.

On aurait toujours accès aux trois couleurs de base via des variables CSS :

.color-demo-app {

  --background-color: rgb(82, 172, 240);

  --hover-color: blue;

  --focus-border-color: lightgray;

}

Maintenant en chargerCouleurs()nous pouvons ajouter deux appels supplémentaires au nouveau setMapColor() fonction pour chaque propriété CSS léger et foncé variation:

import Color from 'color';



const CSS_PREFIX = "--";

const CSS_SUFFIX = "color";

const CSS_DELIMITER = "-";



export enum PropertyNames {

  background  = 'background',

  hover="hover",

  focusborder="focus-border"

}



public loadColors() {

  // Read the custom property of body section with given name:

  const appElement = 

    document.getElementsByClassName('color-demo-app');

  if (appElement & appElement.length > 0) {

    const appStyles = window.getComputedStyle(appElement[0]);

    Object.values(PropertyNames).forEach(propertyName => {

      const cssVariableName = CSS_PREFIX

        + `${propertyName}${CSS_DELIMITER}`

        + CSS_SUFFIX;

      const cssVariableValue = 

        appStyles.getPropertyValue(cssVariableName)

                  .replace(' ', '');

      if (cssVariableValue) {

        this.setMapColor(propertyName, cssVariableValue);

      }

      // load light color 

      this.setMapColor(

        propertyName, 

        Color(cssVariableValue).lighten(0.2).hex(),

        ColorOptions.light

      );

      // load dark color 

      this.setMapColor(

        propertyName, 

        Color(cssVariableValue).darken(0.2).hex(),

        ColorOptions.dark

      );

    });



    this.setThemeDefaults();

  }

}

Extraction du code pour définir le _colorMap l’entrée d’une fonction d’assistance n’a de sens que puisque nous devons le faire trois fois pour chaque propriété CSS :

private setMapColor(

  propertyName: PropertyNames, 

  value: string,

  colorOption = ColorOptions.standard 

) {

  const colorMapKey = <ColorProperty>{

    name: propertyName,

    option: colorOption

  };

  this._colorMap.set(

    JSON.stringify(colorMapKey),

    value

  );

}

Vous pouvez voir comment tout le code ci-dessus fonctionne ensemble dans le démo stackblitz.

Conclusion

Il y a quelques raisons d’aimer les bibliothèques de couleurs comme couleur.js. Premièrement, l’utilisation de JavaScript pour manipuler les couleurs offre une portée supplémentaire et une exécution dynamique pour accomplir des choses qui seraient assez difficiles avec CSS, même avec l’aide de bibliothèques d’extension comme Sass et Less. Une autre caractéristique intéressante est leur facilité d’utilisation, du moins en ce qui concerne color.js.

Lire la suite Tutoriels CSS et développement web en visitant notre section programmation CSS.

— to www.htmlgoodies.com