6
votes

Convertir l'opacité en hexagone en JavaScript

Quel serait le moyen préféré de convertir l'opacité (0 - 1) à Hex (00 - FF) dans JavaScript?

Mes pensées sont d'utiliser une instruction IF pour vérifier si l'opacité est comprise entre 1 et 0,95, utilisez FF. Travailler mon chemin à 0.


2 commentaires

Qu'est-ce que tu veux dire exactement par "convertir"? Parlez-vous de changer de valeur de couleur en fonction d'une superposition d'une couleur différente et de son réglage d'opacité?


@Pekka opacité n'a pas vraiment rien à voir avec ça; Il veut convertir un flotteur dans la plage 0-1 à la valeur hexagonale de 1 octet appropriée, de sorte que 1,0 va à 0XFF


5 Réponses :


11
votes

Au niveau le plus élémentaire, vous convertissez simplement une décimale en hex: Comment convertir décimal en hex dans JavaScript? :

yourNum = yourNum.toString(16);


4 commentaires

La version originale (modifitant les modifications de Ninja pré-multiple) était incorrecte, il suffit de pointer vers le point de vue et n'avait aucune mention de multiplication par 255


Je n'ai aucune idée de la raison pour laquelle vous avez voté, j'ai vu certaines personnes sont très strictes de mettre la réponse, puis une référence non une référence seulement, mais un vote en baisse est très exagéré spécialement vous avez posté une bonne réponse.


La seule raison de la baisse d'une réponse est qu'il est faux , que c'était. J'ai depuis supprimé le bowvote tel qu'il a été corrigé.


Je suppose que j'aurais trouvé cette question si je n'avais pas d'opacité coincée dans ma tête.




7
votes

Basé sur les suggestions des autres réponses:

Math.floor(0.0 * 255).toString(16);   // Returns '00'
Math.floor(0.5 * 255).toString(16);   // Returns '75'
Math.floor(1.0 * 255).toString(16);   // Returns 'FF'


1 commentaires

Pourquoi le sol au lieu de rond?



1
votes

Ceci est la fonction simple pour lire l'opacité du code de couleur hexagonale.

const colour (colour, value) => {
  const opacity = Math.floor(0.1 * value * 255).toString(16);
  return colour + opacity;
};

colour (#172B4D, 5)


0 commentaires

2
votes
function applyOpacity(color, opacity) {
  if (typeof color !== 'string' || color.length !== 7) return color;

  if (opacity < 0) opacity = 0;
  else if (opacity > 100) opacity = 100;

  opacity = Math.round(opacity * 2.55);

  return color + opacity.toString(16).toUpperCase().padStart(2, '0');
}


0 commentaires