Hola todos :
¡Sabía que había visto algo así en algún lado!.
Pero antes una aclaración. El filtro
DX funciona a partir de
IE5.5. Hay una sintaxis anerior que funciona en todos; creo que era
filter:gray().
Bueno, en
Firefox tambien se puede, pero con enormes limitaciones y de manera más compleja. No alcanza a las imágenes y hay que asignar el color a cada atributo en cada objeto.
Si alguien está viendo este mensaje con
FF, puede copiar y pegar en la barra de direcciones el siguiente BML para ver el efecto en esta página
NOTA 1 :como ya se mencionó, el editor del foro agrega espacios al código, que no dejan funcionar los escripts. Si en el siguiente aparece alguno, deben borrarlos antes de dar el
enter en la barra de dirección para que se ejecute correctamente.
NOTA 2 :He notado que lo que agrega es un doble espacio. Es más práctico llevar el BML a un editor de texto y usar el "Buscar y reemplazar". Aunque a mí el Notepad no me funcionó hasta que copié y pegué el doble espacio; si lo escribo no los encuentra.
Código:
javascript:(function(){function RGBtoHSL(RGBColor){with(Math){var R,G,B;var cMax,cMin;var sum,diff;var Rdelta,Gdelta,Bdelta;var H,L,S;R=RGBColor[0];G=RGBColor[1];B=RGBColor[2];cMax=max(max(R,G),B);cMin=min(min(R,G),B);sum=cMax+cMin;diff=cMax-cMin;L=sum/2;if(cMax==cMin){S=0;H=0;}else{if(L<=(1/2))S=diff/sum;else S=diff/(2-sum);Rdelta=R/6/diff;Gdelta=G/6/diff;Bdelta=B/6/diff;if(R==cMax)H=Gdelta-Bdelta;else if(G==cMax)H=(1/3)+Bdelta-Rdelta;else H=(2/3)+Rdelta-Gdelta;if(H<0)H+=1;if(H>1)H-=1;}return[H,S,L];}}function getRGBColor(node,prop){var rgb=getComputedStyle(node,null).getPropertyValue(prop);var r,g,b;if(/rgb\((\d+),\s(\d+),\s(\d+)\)/.exec(rgb)){r=parseInt(RegExp.$1,10);g=parseInt(RegExp.$2,10);b=parseInt(RegExp.$3,10);return[r/255,g/255,b/255];}return rgb;}function hslToCSS(hsl){return "hsl("+Math.round(hsl[0]*360)+", "+Math.round(hsl[1]*100)+"%, "+Math.round(hsl[2]*100)+"%)";}var props=["color","background-color","border-left-color","border-right-color","border-top-color","border-bottom-color"];var props2=["color","backgroundColor","borderLeftColor","borderRightColor","borderTopColor","borderBottomColor"];if(typeof getRGBColor(document.documentElement,"background-color")=="string")document.documentElement.style.backgroundColor="white";revl(document.documentElement);function revl(n){var i,x,color,hsl;if(n.nodeType==Node.ELEMENT_NODE){for(i=0;x=n.childNodes[i];++i)revl(x);for(i=0;x=props[i];++i){color=getRGBColor(n,x);if(typeof(color)!="string"){hsl=RGBtoHSL(color);hsl[1] = 0;n.style[props2[i]]=hslToCSS(hsl);}}}}})()
Lo saqué de aquí
http://www.squarefree.com/bookmarkle...or.html#no_sat
y la explicación está aquí
http://www.w3.org/TR/css3-color/#hsl-color
saludos
furoya