J'utilise des valeurs de couleur hexagonales à 3 chiffres dans CSS pendant une longue période: #fff code>, # 999 code>, # 069 code> , etc. Je peux voir comment les lettres / chiffres répétitifs sont fusionnés pour créer un code de couleur hexagonale à 3 chiffres, mais je ne comprends pas complètement le motif de pouvoir écrire un convertisseur dans PHP. Y a-t-il une documentation pour cela? P>
xxxxxx code> ( ffffff code>) et xxyyzz code> ( 006699 code>) - ce sont les deux seuls schémas, correct? P >
4 Réponses :
Le code CSS 3 chiffres est court pour 6 chiffres ": # 06A; est # 0066AA;
Chaque deux chiffres représentent un nombre de 0 à 255.
Conversion de ces valeurs à HEX et à l'arrière est tout ce dont vous avez besoin. P>
Pour convertir un code hexagique de 3 caractères en une 6 caractère, vous devez répéter chaque caractère: si vous souhaitez le convertir en décimal, vous pouvez utiliser hexdec code> fonction p> p> p>
# f0f code> est étendu à # FF00FF code>, il vous suffit de calculer la valeur et la valeur de la valeur 16 pour chaque caractère, par exemple: P>
# F98 code>: f = 15 => rouge = 15 + 15 * 16 = 255 etc. p>
Ah, je semble avoir manqué le point - et mon sens de consulter l'API ( heexdec () code>).
Ainsi, en utilisant cette logique, vous pouvez simplement l'inverser en divisant par 16 afin d'obtenir la version hexagonale 3?
@JOSH Eh bien, oui. Mais vous vous limiterez efficacement à une granularité de 16 par canal au lieu de 256.
function hexfix(str) {
var v, w;
v = parseInt(str, 16); // in rrggbb
if (str.length == 3) {
// nybble colors - fix to hex colors
// 0x00000rgb -> 0x000r0g0b
// 0x000r0g0b | 0x00r0g0b0 -> 0x00rrggbb
w = ((v & 0xF00) << 8) | ((v & 0x0F0) << 4) | (v & 0x00F);
v = w | (w << 4);
}
return v.toString(16).toUpperCase();
}
var hex1 = 'AABBCC',
hex2 = 'ABC';
document.body.appendChild(document.createTextNode(hex1+" becomes "+hexfix(hex1)+'. '));
document.body.appendChild(document.createTextNode(hex2+" becomes "+hexfix(hex2)+'. '));
De quelle manière cherchez-vous la conversion? De 3 à 6 chiffres? Ou d'hex à décimal?
Les avantages d'un convertisseur seraient sûrement très limités. Après tout, seule une faible proportion de codes de couleur peut être simplifiée et pour une économie de seulement 3 caractères par code. Je serais surpris s'il y a une documentation, mais comme exercice de programmation, c'est probablement utile.
Oh, ma question n'était peut-être pas claire. J'ai besoin de savoir comment certaines des valeurs de couleur hexagonales à 6 chiffres sont converties en 3 chiffres? XXXXXX (FFFFFF) XXYYZZ (006699), ce sont les deux seuls motifs, correct?