Si tuviera 1 dolar por cada blog que hago bien... tendría un dolar.

Pseudo-clases en IE6-

Páginas: 1 2

CSS Pseudo-Classes

Paseandome por Infected-FX veo un genial tutorial que habla sobre la imagen de fondo en hipervínculos y las posibilidades de cambiarla de posición bajo ciertos eventos usando pseudo-clases (como :hover o :active). No tardé en comentar y decir que no sólo se puede aplicar a los <a>'s, sino que también podemos usarlos en otros elementos (como divs); pero bajo mi emoción olvidé mencionar que IE no soporta pseudo-clases en elementos que no sean <a> (cosa que eden me recordó) y que me recuerdan a mi anterior entrada sobre links en cajas. Fue entonces que, platicando con un amigo, recordé los viejos tiempos del "Web 1.0" y el extraño y antiguo término DHTML y dí con una forma de lograr que las pseudo-clases funcionaran en Internet Explorer también. Por cierto, solo he creado un archivo para las pseudo-classes :active y :hover. Pensaba meter también :focus; pero al recordar los problemas que existen entre estas dos clases entre los navegadores (No solo IE... De hecho, después de Firefox, es el que mejor se comporta) decidí dejar afuera :focus. Probablemente también se puedan arreglar pseudo-clases como :first-child o :lang; en cuanto tenga un poco más de tiempo veré si puedo arreglarlas.

¿DHTML?

Seguramente viejos desarrolladores recordarán este término. El Dynamic HTML es como el Ajax, pero más antiguo. Se usaba una combinación de HTML, Javascript, CSS y demás, justo como ahora, pero en modos diferentes. Uno de los elementos que más llamaban la atención era el uso de Behaviours, que IE interpretaba. Estos behaviours (Que de principio debieron estar incluidos en el Internet Explorer por default) ayudaban a los desarrolladores a crear efectos dinamicos en sus páginas. Para efectos de esta entrada, destacaré dos behaviours importantes: onmouseover/out y onmouseup/down.

El uso de los behaviours

Cómo su nombre lo indica, el behaviour onmouseup/down se activaba al dar click (down) y se quitaba al soltar (up) sobre el elemento; mismo paraonmouseover/out, que se activaba cuando el puntero del mouse pasaba encima (over) y se quitaba (out) del elemento. La forma de usarlos era algo como esto:

onmouseover="this.className='hover'" onmouseout ="this.className=''"

¿A que les parece conocido? Esta línea de código iba dentro de nuestra tag, fuese lo que fuese. En resúmen, lo que hace es cambiar el atributo class de nuestro elemento a hover cuando pasamos el mouse sobre el mismo. Esto nos permitía darle estilo a la clase .hover desde nuestro CSS ¿Ya va sonando la idea?

Los archivos .htc y el atributo "behaviour"

Probablemente para arreglar muchos de los aspectos que no tiene por default o para agregar aún más individualidades a su navegador, los desarrolladores de Internet Explorer introdujeron los archivos .htc. Estos archivos contenian los muchos behaviours qeu existen (y que, definitivamente, son muchos; recuerdo algunos con efectos bastante simpáticos, pero que solo funcionaban en IE). Estos archivos se mandaban llamar de dos maneras. Desde el CSS:

tag, tag2, tag3 { behavior: url(path/archivo.htc) }

o desde la tag en sí:

style="behavior: url(path/archivo.htc)"

Aunque estoy casi seguro que no es CSS válido, funciona. Ya van viendo para donde voy ¿verdad? Si no, aquí les va el resumen: Lo que haremos es crear un archivo .htc que maneje las pseudo-clases para Internet Explorer. Dicho archivo lo mandaremos llamar (de preferencia mediante comentarios condicionales para IE6 o menor) y agregaremos un pequeño código a nuestro CSS para que funcione todo bien. Así que vamos a empezar (en la sigueinte página ;) ).

Páginas: 1 2

4 Comentarios

  1. buenas!
    pues si, dije ke no funcionan por ejemplo un li:hover en IE6-.
    En el IE7 ya si ke funcionan. yo tube problemas con esta propiedad en mi menu, ya ke necesitaba un efecto hover ke no solo se manifieste cuando se pasa el raton por encima del texto, sino cuando se pasa por encima de la caja ke forma el tag li.
    Bueno, pronto pondre un mini tuto como el de infected pero de posicionamiento (relative, absolute, floats... ) jejeje.

    Saludos!

  2. El pequeño obstaculo que veo en esto, es que el IE (IE7 que tengo yo) te advierte que la página intenta cargar un activeX o script; mucha gente se asusta y dice que no, con lo que el .htc queda sin efecto. (Las cosas de Microsoft ;-p )

  3. a mi no me dice eso el IE7. En todo caso, no importa que el htc quede sin efecto. EL IE7 sí reconoce hover

  4. no funciona en li:hover no??

Dejar un comentario

* Campos requeridos
   El Email no será publicado