2011-04-19 15 views
6

El CSS3 spec solamente especifica que:En CSS, ¿los valores de HSL pueden ser flotantes?

El formato de un valor de color HSLA en la notación funcional es 'HSLA (' seguido por el tono en grados, saturación y luminosidad como un porcentaje, y una, seguido por ') '.

¿Debo entender que estos valores no se interpretarán como enteros sino como flotantes? Ejemplo:

hsla(200.2, 90.5%, 10.2%, .2)

que ampliaría drásticamente la gama de otra forma pequeño (con relación a RGB) de colores cubiertos por HSL.

Parece que funciona bien en Chrome, aunque no sé si simplemente lo analizan como un valor INT o qué.

+0

Los diferentes navegadores las manejan de manera diferente. Intenta hacer un ejemplo. – Blender

Respuesta

1

No lo sé exactamente, pero tiene sentido poner algunos números flotantes y ver si funciona? lleva dos segundos intentar con un decimal, y sin ...

+0

Si solo estuviera construyendo una página web, claro. Pero esta pregunta fue hecha porque estaba diseñando y construyendo un sistema que tenía que tratar de ir por la ruta correcta en términos de almacenamiento y manejo de estos valores. – Heilemann

1

AFAIK, cada navegador los envía a INT. Tal vez. Si estoy equivocado, no podrás notar la diferencia de todos modos. Si realmente importa, ¿por qué no simplemente tomar capturas de pantalla y abrirlas en Photoshop o utilizar un medidor de color en pantalla? Nadie aquí va a tener una respuesta definitiva sin probarla, y lleva 2 minutos probar ... entonces ...

+0

Estaba interesado en la especificación, no en la ejecución por navegador de la misma. – Heilemann

+4

Entonces debería haberlo dicho ___CINCO AÑOS AGO___ –

3

Los valores HSL se convierten a valores RGB hexadecimales antes de que se transfieran al sistema. Depende del dispositivo recortar cualquier valor RGB resultante que esté fuera de la "gama del dispositivo" (la gama de colores que se pueden mostrar) en un valor visualizable. Los valores RGB se denotan en hexadecimal. Este es el algoritmo especificado para que los navegadores conviertan los valores de HSL a valores RGB. El estándar no especifica el comportamiento de redondeo, y existen varias formas de redondeo, ya que no parece haber una función de redondeo incorporada ni en C ni en C++.

HOW TO RETURN hsl.to.rgb(h, s, l): 
     SELECT: 
     l<=0.5: PUT l*(s+1) IN m2 
     ELSE: PUT l+s-l*s IN m2 
     PUT l*2-m2 IN m1 
     PUT hue.to.rgb(m1, m2, h+1/3) IN r 
     PUT hue.to.rgb(m1, m2, h ) IN g 
     PUT hue.to.rgb(m1, m2, h-1/3) IN b 
     RETURN (r, g, b) 

De the proposed recommendation

En otras palabras, usted debe ser capaz de representar el mismo rango exacto de colores en HSLA como se puede representar en RGB utilizando los valores fraccionarios para HSLA.

+0

Sin un perfil de color explícito, no todos los dispositivos asignan el rango de valores RGB (por ejemplo, '0' a' 255') al rango completo de nivel de salida de LCD o de pistola de electrones (por ejemplo, totalmente opaco o completamente transparente o encendido), después de mostrar el equilibrio de fábrica RGB y la corrección de gamma (que afecta al centro del rango, no a los puntos finales). Y como los colores CSS 'hsl()' y 'rgb()' no tienen perfiles de color, ¿no significa que los colores nunca están fuera de la "gama del dispositivo"? En cambio, los colores se muestran en los rangos del dispositivo gama de ellos mismos? –

Cuestiones relacionadas