Est-ce que vous vous souvenez du web dans les années 90 ? Celui avec les GIFs animés pour la publicité, les couleurs criardes de la palette de Paint utilisées par les rares informaticiens qui savaient faire un site web ?
He bien, bienvenue en 2007 : on a toujours de la pub qui bouge (mais maintenant, il faut le plugin flash) et les informaticiens sont toujours aussi fort pour choisir leurs couleurs. Heureusement, Firefox 3 va les aider.
C'est 3 nombres, compris entre 0 et 255. Ils représentent les valeurs de rouge, de vert et de bleu.
Si vous regardez une télé de très près (prenez une télé avec un tube cathodique), vous verrez 3 petits points rouge, vert et bleu, pour chaque pixel. Cela vient du fait qu'en mélangeant ces sources de lumière colorée, on obtient les autres couleurs (ex: avec de la lumière rouge et verte, on fait de la jaune). Attention ! C'est différent des mélanges faits avec de la peinture : on utilise de la lumière !
On utilise une valeur de 0 à 255 tout simplement parce que c'est ce qu'on peut mettre dans un octet (8 bits), unité chère aux informaticiens. C'est pour cela que ces couleurs sont dites 24bits (3*8 bits).
La notation est souvent : rgb(X, Y, Z), avec X,Y,Z entre 0 et 255
(rgb : Red Green Blue)
Note : il y a aussi une notation en hexadécimal (#xxyyzz) mais ça sort
du sujet.
...parce s'il est vraiment bon, c'est l'ordinateur qui fait son boulot ;)
Comme les premiers sites web étaient fait par des informaticiens qui faisaient tout à la main, il devaient choisir leur couleur en donnant les 3 valeurs RGB.
Pourquoi ces valeurs ? Tout simplement parce qu'elles donnent des chiffres ronds en RGB. Je me confesse, je fais ça également : la couleur de la colonne (à la date d'écriture de ce billet) est rgb(200,200,255).
Le problème, c'est que ces valeurs ne donnent par un résultat esthétique. Vous en doutez ? Testez le vert rgb(0,255,0) ! Sur ce blog, ça se voit pas trop, parce que je n'ai utilisé que des teintes de bleu.
Il existe un autre triplet de couleur possible : HSL. Les couleurs HSL sont les mêmes que les couleurs RGB, mais les 3 valeurs sont différentes. En HSL, les valeurs sont la teinte (H), la saturation (S) et la lumière (L).
Ce qui veut dire qu'on peut avoir des couleurs jolies et cohérentes avec des valeurs rondes ! rgb(0,0,255) devient hsl(240,100,50) : si je veux une couleur plus claire, ça devient hsl(240,100,75), tout simplement !
Voici un dégradé de bleu HSL/RGB
hsl(240,100%,40%) rgb(0,0,204)Firefox supporte déjà les couleurs RGB et les couleurs HSL.
Mais il fait encore plus : la transparence ! Ainsi on passe aux espaces de couleurs RGBA et HSLA : le A veut dire Alpha, c'est-à-dire le niveau de transparence (0 = transparent, 1 = opaque). Par exemple, je peux mettre du texte rouge mi-transparent sur un fond bleu et Firefox mixe lui-même les couleurs. Le test est visible seulement avec Firefox 3 :
Bien sûr ça marche aussi avec les images : on peut empiler des images semi-transparentes (PNG) avec des couleurs semi-transparentes. Les possiblités de design sont vraiment intéressantes.
J'ai utilisé du RGBA, mais c'est exactement pareil avec du HSLA. D'ailleurs, quand j'ai testé avec Firefox 3 (alpha6, faîtes attention !), je me suis rendu compte que Firefox convertit le HSL en RGB et le HSLA en RGBA pour son usage interne. Je suppose que c'est dû au fait que tout ce qui gère l'affichage (bibliothèque de composants graphiques, moteur de rendu, etc.) doit utiliser des valeurs RGB, ce qui est logique puisque c'est ce qu'on utilise physiquement (intensité des trois composantes de lumière).
Cher lecteur, je suis vraiment désolé, mais il y a un problème.
Sur le web, il y a un boulet, un empêcheur de tourner en rond,
un casse-couille, c'est Internet Explorer (IE).
Et bien sûr, lui, il ne supporte
que
les couleurs RGB.
Adieu, le HSL, le RGBA et le HSLA.
Depuis la version 7, il supporte les images semi-transparentes (PNG)
correctement, c'est déjà ça...
Comme il est encore majoritaire, il n'est pas possible d'ignorer
IE en utilisant du RGBA ou du HSL.
C'est pour ça que je vous encourage à
installer et faire installer Firefox autour de vous.
Quand Firefox aura suffisamment de parts de marché, IE
sera obligé de s'aligner et de supporter la même chose
(ils l'ont déjà fait pour les onglets, le PNG et le RSS).
CSS : Cascaded Style Sheets
Dans la recommandation, il est clairement dit que si une directive CSS n'est pas supporté, alors elle doit être ignorée. Donc si on mets du RGBA et qu'on surfe avec IE (beurk), c'est comme si la ligne n'était pas là.
Il est aussi écrit que si on mets 2 fois une même directive, c'est la 2ème qui est prise en compte. Donc si on mets une couleur RGB suivi d'une couleur RGBA et qu'on surfe avec Firefox 3, on verra la couleur RGBA.
Voilà notre solution :
#truc { rgb(255,0,0); rgba(255,0,0,0.5); }
IE va comprendre la 1ère ligne, Firefox 3 la 1ère et la 2ème, en ne prenant en compte que la 2ème. Donc IE va afficher du bleu plein et Firefox 3 du bleu semi-transparent. Et on finit par un test :
Vous ne supportez pas le RGBA (IE, FF<3) Vous supportez le RGBA (Firefox >=3) !Plus d'infos sur CSS3 : http://www.css3.info/
D'un naturel joyeux, positif et curieux, je m'intéresse à beaucoup de choses parmi lesquels la salsa, l'espéranto, la plongée mais surtout l'informatique, le web et Linux.
Même si j'aime programmer, je m'intéresse également aux aspects d'ergonomie, de design et de marketing.
Si vous pensez avoir du travail pour moi, il y a mon LinkedIn et mon CV.
M'écrire : olivier+blog@faurax.fr
Retrouvez-moi sur Facebook et Twitter.
Cette hCard sémantique a été créée avec le hCard creator.