El color de fondo de una de mis páginas se establece a partir del color de fondo que los usuarios configuraron como color de fondo de Twitter. Tengo una página que tiene una caja redondeada con un borde negro. El borde no se ve bien si el color de fondo es oscuro, por lo que me gustaría eliminar el borde del fondo es más oscuro que un color hexadecimal arbitrario.¿Hay alguna forma de comparar 2 colores en JS, como 'Si el color A es más oscuro que # 202020'
La forma en que estaba pensando en hacer esto fue usar una expresión regular para extraer los 3 valores RGB y sumarlos, y compararlos con mi color de referencia. ¿Hay alguna forma mejor de lograr esto?
HSL/HSV sería mejor que sumar los valores y tomar un promedio, ya que tienen en cuenta la respuesta de frecuencia del ojo humano. # 0c0 y # 900 miran más de cerca en brillo que # 0c0 y # c00, por ejemplo. Solo sumar los valores no sería un camino a seguir, porque entonces # 990000 sería aparentemente tan brillante como # 333333. – DMI
Hay un ejemplo de PHP en http://www.serennu.com/colour/rgbtohsl.php (solo saltee las cosas de la astrología, si no le gusta), debería ser fácil traducir esto a JS (el algoritmo viene de [EasyRGB: RGB → HSL] (http://easyrgb.com/index.php?X=MATH&H=18#text18)). –