Colores intermedios RGB
Si alguien nos pregunta ¿cuál es el color intermedio entre el blanco y el negro?, no tenemos ninguna duda y respondemos gris (y luego pensamos... ¡esta pregunta fue fácil!).
¿RGB?
Y si queremos los colores para alguna aplicación informática, tenemos que
concentrarnos en el concepto RGB que proviene de las iniciales de los tres colores básicos que se
necesitan: rojo, verde y azul (en inglés: Red Green Blue)
Ahora los colores dejan de serlo para convertirse en unos números que se corresponden con la cantidad o
porcentaje de cada componente. En resúmen, contestando más técnicamente la pregunta inicial, el negro
es ausencia de los tres componentes (rojo, verde y azul)… el blanco es la máxima cantidad de ellos…
y el gris es la mitad de cada uno.
Para mostrar colores en las páginas web hay que usar su descripción en inglés, siempre que
esté definido; por ejemplo existe el negro (black), el blanco (white), el gris (gray)…, pero para
otras tonalidades podría no existir una descripción, así que tenemos que pensar en un sistema
que indique la cantidad de cada componente del color que queremos.
Uno de esos sistemas es una especie de función “rgb()” que recibe 3 parámetros que pueden ser números entre
0 y 255, donde el blanco sería rgb(255,255,255); también pueden usarse porcentajes: rgb(100%,100%,100%).
Otra forma de representación consiste en una cadena de texto empezada por el carácter almohadilla (#)
seguido de los valores hexadecimales de cada componente: #FFFFFF.
Hexadecimal: conceptos básicos
En el sistema hexadecimal cada dígito puede valer entre 0 y 15 (0..F), y para los colores necesitamos
un rango entre 0 y 255 (00..FF). Seguidamente mostraremos la forma de convertir valores numéricos
decimales/hexadecimales ayudándonos del lenguaje javascript.
// conversión de un número entre 0 y 255 a su valor hexadecimal. // Por ejemplo valorHex(255) = "FF" function valorHex(n) { return "0123456789ABCDEF".charAt(parseInt(n / 16)) + "0123456789ABCDEF".charAt(parseInt(n % 16)); } // conversión de un número hexadecimal "00" y "FF" // a su valor numérico decimal (entero positivo: 0..255). // Por ejemplo valorDecimal("FF") = 255 function valorDecimal(s) { return ("0123456789ABCDEF".indexOf(s.charAt(0)) * 16) + "0123456789ABCDEF".indexOf(s.charAt(1)); }
Con la ayuda de estos conversores que acabamos de definir podemos manipular mejor los colores de
nuestra página. Propongo a continuación la declaración de un objeto “Color”, donde la definición
se realiza introduciendo como parámetro sus tres componentes en forma numérica, o si se prefiere
como una cadena de texto.
// Objeto Color: a partir de sus 3 componentes // Entero positivo: 0..255 function Color(Rojo, Verde, Azul) { this.Rojo = Rojo; this.Verde = Verde; this.Azul = Azul; this.toString = function() { return "#" + valorHex(this.Rojo) + valorHex(this.Verde) + valorHex(this.Azul); } this.toArray = function() { return new Array(this.Rojo, this.Verde, this.Azul); } this.fromString = function(s) { return new Color(valorDecimal(s.substr(1, 2)), valorDecimal(s.substr(3, 2)), valorDecimal(s.substr(5, 2))); } }
Notese la definición de los métodos toString(), toArray() y fromString(s)… en realidad “toString()” es una
re-definicaión ya que los objetos javascript implementan de forma inherente este método cuya
finalidad es representarlos; toArray() devuele los componentes como un array. También puede formarse
una cadena de este tipo:
"rgb(" + negro.toArray() + ")"
… fromString() es un método que permite la construcción del color a partir de otro color representado
por una cadena. He creído conveniente usar una representación que nos permita su uso directo.
O sea que con este código son válidas las siguientes definiciones:
var negro = new Color(0, 0, 0); var blanco = new Color().fromString("#FFFFFF"); // Para obtener el color como una cadena // bastaría con poner el nombre de la variable: alert(negro); // Y si quisieramos obtener el color como un array de // sus tres componentes habría que añadirle la coletilla // toArray() al nombre de la variable: alert(negro.toArray()); // Por último podemos obtener el valor de cada componente // consultando el atributo correspondiente alert(negro.Rojo);
Los valores intermedios
Teniendo las declaraciones necesarias para manipular colores nos centraremos en la obtención
de los valores intermedios. Para ello debemos obtener un número que he denominado ratio,
que sumándolo a cada componente nos permite obtener el siguiente.
De más está decir que esos valores también pueden ser negativos.
function coloresIntermedios(inicial, final, pasos) { var resultado = new Array(pasos--); resultado[0] = inicial; resultado[pasos] = final; ratio = new Color(parseInt((final.Rojo - inicial.Rojo) / pasos), parseInt((final.Verde - inicial.Verde) / pasos), parseInt((final.Azul - inicial.Azul) / pasos)); for (var i = 1; i < pasos; i ++) resultado[i] = new Color(inicial.Rojo + (ratio.Rojo * i), inicial.Verde + (ratio.Verde * i), inicial.Azul + (ratio.Azul * i)); return resultado; }
Una sencilla aplicación
Si quisieramos obtener esos datos intermedios introduciendo por teclado los colores
inicial y final, además del número de valores intermedios, nos bastaría un pequeño formulario
con 3 elementos para la entrada de datos, un botón para poner en funcionamiento nuestro script,
y un elemento que muestre esos datos.
<form name="intermedios" action="" method="get" > color inicial:<input type="text" name="ini" value="#000000" /> color final:<input type="text" name="fin" value="#FFFFFF" /> pasos:<input type="text" name="pasos" value="5" /> <textarea name="resultado" style="width: 70%; height: 150px;"></textarea> <br/> <button onclick="resultado.value = coloresIntermedios(new Color().fromString(ini.value), new Color().fromString(fin.value), pasos.value)" > obtener intermedios </button> </form>
Algunos usos
Se me ocurren dos posibles usos para este sistema: fondos degradados en botones, capas y páginas;
y efecto fade en textos. Se puede apreciar estas dos funcionalidades en la siguiente página:
Gradientes (php + librerías GD)
Otros enlaces relacionados
Para quien desee más información:
Creo que los colores son muy importantes en una web ya que lo visitantes son atraidos por medio de los diseños y de los colores de nuestros sitio. jajaja esa es mi opinion y la de ustedes?
cuales son los colores intermedios
quisiera saber por que el rango RGB
va de 0 a 255.
decir las palabras de ingles y doy mi correo eletronico john-pz_20062hotmail.com………..
QUE PUSIERAN LOS COLORES EN INGLES
Hola:
Voy a intentar contestar algunas dudas…
El rango entre 0 y 255 es algo muy normal en los colores dentro de sistemas informáticos ya que es el equivalente a los valores que se pueden guardar en una unidad de información del tipo byte… creo que hablar de los bytes se sale de este tema y en la web hay mucha información al respecto.
A partir de los nombres en inglés se podría crear una transición de colores, pero antes habría que convertirlos a formato RRGGBB… algunos podría decirlos de memoria: white => #FFFFFF; blue => #0000FF; black => #000000… pero esa conversión habría que hacerla aparte, en los foros hay algunos mensajes donde se explica, como este: Todo sobre colores
Saludos :arriba:
CREO QUE LOS cOlOrEs DeVeRiAn EsTaR eN InGleS x QuE No Me sIRbE pArA aCeR uN vAcHIlLeRaTo En iNgLeS pOrQUe VNo SE CoMo hAcEr
Mi TaReA
OK (JOTE)
Hi! Very nice site! Thanks you very much! Gd1JGc0WJ9iUA
creo que el diseño donde viene el codigo e muy malo deberian cambiar eso y decirmos que programa podemos utilizar para hacer eso
creo que el diseño donde viene el codigo e muy malo deberian cambiar eso y decirmos que programa podemos utilizar para hacer eso
wuey
queremos los colores en ingles por ejemplo:
rojo-red
amarillo-yellow
etcetera
quiero los colores en ingles, no como se escriben en visual basic
kiero los colores en ingles … agg sonsos :p jeje
vale ongo
los cccolores en ingles ooookkkkkkk
mira por que no ponen los colores en igles porfa
nesecito algo con mas definicion
gvffdsfdvdgvv dc dccddcdfgdftggvcfvcfgdvgfdsghsgdghsdftsagvsdgsdgvdggsvdbvcfvdbnciu hcygdhbncbncjn vyhhdcghccvzhbjcxvmjgkjkjgjkvkj,kln,bnb,b,,.nbblkjkgkjjkfgbffbvvb cxb cb cbc vcb vbnvn nfvbnv bv
esta muy entendible pero le falta mas definicion de libro
pjjjtgggfddmfmkfjfggjmvkfdgs,fddkhgudgjkjgiuggfkifggihjkgjhgjgfjigugfguufgguglhiighlhhhhihgfmvgbhvbñklllindahfjgbhjjbhblimfdamgkh bkghghhkhjhhjklllllkkl..hgjhih94559582262ngkgfkfgjgjfjhjhkghm,mnmkihpñftgiuhkghiighhuighhhiuhihhhhijijhghjghkghjklllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllkhj.n5903040bkkbm,,kglghkkkkklhvjufiygugvbrujgrtnggnbnvhgvhrgujgbmbmjbbbjchbjcvnnbbbbbbbbbbbbbbbbbbbbbbnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnbbbbbbfjgnhjjghk,hulhiykñyootyoooylytkhjnjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjhfnbgbmnjmm,.n.kghljññj.jlmkknlhjkñmihjlkh.kjlljklllkjklllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhkkkkkkkkhkh
hola soi linda i estoi ablando con no se uien
hidiota ja ja
WWOOLAAA ¡¡¡¡¡¡¡¡
WWiiiiiiii ,.,.,.,.,.,.,.,.,.,.
PUES CHIDO APRENDANSE LOS COLOREEEESS
JIJIJIJIJIJI
EEEEEEHHHHHHHHHH
CHIDO BYE SE CUIDAN
Y CUIDAN SUS YA SABEEEEEEENNN
BYYYEEE BEXOOOOOOOSS
OOOOOYYEEEEEESSS LINDA :::
IDIOTA
TTUUUUUUUUUU
LOKA
P
U
T
A
JAJAJAJAJAJAJAJAJAJAJ
JAJAJAJAJAJAJAJAJAJAJA
DISCULPA PERO ES LA PURITA VERDAD
YY ME KAES BIEN MAL …………
……………… KONTINUARA ………………….
quiero saber todos los colores en ingles y español
muyyyyyyyyyyyyyyyyyy
mallllllllllllll expliquesen biennnnnnnnnnnnnnn locos todos ustedesssssssssssssssss
tarados tanto pelean por esito q sonsos
no hay
soy una estrella dibujando nadie me gana soy la mejor gracias a dios amen————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————oseaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ok
esta pagina es pesima
como me gustas
hola quiero un novio me lla mo carolina adios chicos guapos respondames de 11 a 14
llamenme al numero 3021477 adios chicos guapos los amo soy rica y muy muy sexy
mentiras ese no es mi numero ya se los digo 3094867
si es pesima orible tenemos algo encomun sabes
tu eres fea yo soy la mas linda del mundo
no encontre lo buscaba a llevo buscando mas de 2 horas asi que no me sirve casi para nada porque no encuentro lo que busco ESTOY MUY ENOJADA
hay q mal no me ayudo en nada vayan a dormir todo xq esto no sirve si tienen algo q reclamarme este es mi correo [email protected] ok
si muy pesima y expliquen bien idiotas
pequeña pero buena teoria, y comentarios de niños ya dejen de webear.