rgb(255,255,255)
la notation est disponible depuis CSS1. Mais #ffffff
semble être beaucoup plus populaire.
De toute évidence, il est légèrement plus compact. Je sais que hex est plus étroitement lié aux octets sous-jacents, et je comprends qu'il y aurait des avantages à effectuer de l'arithmétique sur ces valeurs, mais ce n'est pas quelque chose que vous allez faire avec CSS.
Les valeurs de couleur ont tendance à provenir de concepteurs (comme moi-même) qui ne rencontreraient jamais de notation hexadécimale nulle part ailleurs, et sont beaucoup plus familiers avec la notation décimale qui est le principal moyen de spécifier la couleur dans les applications qu'ils utilisent - en fait, j'ai a rencontré un certain nombre de personnes qui ne réalisent pas comment une valeur hexadécimale donnée se décompose en composants RVB et ont supposé qu'elle n'était pas directement liée à la couleur, comme une référence de système de couleurs Pantone (par exemple PMS432).
Alors, une raison de ne pas utiliser de décimales?
Les valeurs hexadécimales sont plus faciles à copier et à coller à partir de votre éditeur d'images préféré.
Les valeurs RVB sont plus faciles à manipuler avec Javascript.
(Ma valeur de couleur Hex préférée est #EDEDED et un site que nous avons créé pour un client impliqué dans le sport automobile avait une couleur de fond de # F1F1F1 :-)
Ed.
Il convient de noter que si vous souhaitez saisir une valeur RGBA, la notation hexadécimale n'est pas prise en charge; c'est-à-dire que vous ne pouvez pas le simuler avec #FFFFFFff. En fait, la valeur alpha doit être un nombre compris entre 0,0 et 1,0 inclus. (Consultez cette page pour le support du navigateur - comme toujours, IE mène le pack ici.;))
La prise en charge des couleurs HSL et HSLA - qui est très conviviale pour les concepteurs - est également fournie avec une syntaxe similaire au style RGB (). Si un concepteur devait utiliser les deux types de valeurs de couleur dans la même feuille de style, il pourrait opter pour des valeurs décimales plutôt que des codes hexadécimaux par souci de cohérence.
Je pense que c'est ce à quoi vous êtes habitué. Si vous êtes habitué au HTML, vous utiliserez probablement HEX car il vient d'être beaucoup utilisé en HTML. Si vous venez d'un arrière-plan de conception, en utilisant Photoshop/Corel/PaintShopPro etc., alors vous êtes probablement habitué à la notation RVB - cependant, de nombreux programmes intègrent de nos jours un champ de valeur HEX.
Comme dit, RGBA pourrait être une raison d'aller simplement avec la notation RVB - cohérence.
Cependant, je pense que cela dépend aussi du scénario. Si vous êtes à l'aise avec les deux, vous pouvez simplement basculer entre les deux: #fff
Est beaucoup plus facile à taper que rgb(255,255,255)
.
Une autre question est de savoir pourquoi les gens diront #fff
Au lieu de White
(en supposant que la plupart des navigateurs prennent en charge ce mot-clé).
Tout est une question de préférence et de lisibilité - si vous gérez un énorme fichier CSS, être en mesure de regarder la valeur de la couleur et savoir de quelle couleur il s'agit, est un très bon avantage. Encore plus avantageux est d'utiliser quelque chose comme MOINS ou Sass pour ajouter une sorte de programmabilité à CSS - permettant des constantes par exemple. Donc au lieu de dire:
#title { color: #abcdef; }
À la place, vous pourriez faire ce qui suit avec MOINS:
@base-color: #abcdef;
#title { color: @base-color; }
La maintenance du CSS devient moins problématique.
Si vous vous inquiétez des performances du rendu du navigateur, le résultat peut également être un autre facteur de votre choix.
Donc en résumé, cela se résume à:
La raison principale est probablement la compacité, comme vous l'avez mentionné. #ffffff
peut même être encore raccourci en #fff
notation abrégée.
Une autre raison possible est qu'il y a une augmentation perçue des performances en évitant au navigateur la difficulté de convertir la notation rgb
.
J'ai toujours utilisé hex, mais aujourd'hui je préfère définir mes valeurs comme:
rgb(82, 110, 188)
dans mes fichiers css, donc chaque fois que je veux ajouter l'opacité, je dois juste renommer rgb en rgba et ajouter la valeur d'opacité. L'avantage est que je n'ai pas à convertir la valeur hexadécimale en rgb avant de pouvoir ajouter l'opacité:
rgba(82, 110, 188, 0.5)
Traditionnellement, HTML a toujours utilisé des couleurs hexadécimales, de sorte que cela a été reporté dans CSS. Pense <font color="#ffffff">
CSS a été inventé par les développeurs de logiciels, pas par les concepteurs. Les développeurs de logiciels vivent et respirent hex. Depuis mes vieux jours C64, je peux toujours lire la plupart des nombres hexadécimaux sans réfléchir. A9, quelqu'un?
Diverses choses accepteront une seule valeur hexadécimale où elles peuvent avoir différentes façons d'entrer trois valeurs décimales. Il y a aussi le fait que c'est toujours 6 caractères (ou 3, certes - plus le #) ce qui facilite la numérisation d'une liste d'entre eux.
Juste quelques pensées aléatoires à ajouter au mélange ...
Probablement une touche de vitesse lorsque la couleur est interprétée par un navigateur. Sinon, certaines personnes issues de la conception peuvent savoir comment composer des couleurs à partir de composants RVB lorsqu'elles écrivent du code, et d'autres issues de la programmation sont probablement plus enclines à utiliser des valeurs HEX.
J'ai peut-être fait du HTML trop longtemps, mais je trouve plus facile de penser aux valeurs HEX. Une grande partie de la palette de couleurs prédéfinie pour les cartes HTML correspond parfaitement aux valeurs HEX. L'utilisation du format raccourci vous donne également des couleurs "Web sécurisées" automatiques, bien que ce ne soit pas vraiment un problème à l'époque des écrans couleur 32 bits.
HEX est le plus courant pour des raisons historiques.
Avant que CSS ne soit courant dans le développement Web, les couleurs étaient spécifiées dans les balises HTML et la manière la plus couramment utilisée et prise en charge pour spécifier une couleur était d'utiliser des valeurs HEX.
aucune raison valable, autre que la préférence personnelle.