7 de marzo de 2008

Arreglo para IE6 con Hover y Selects (IE6 Fix with Hover and Selects) - Parte II

Lo primero sería implementar Suckerfish y así comenzar el desarrollo.
Primero lo primero: La lista.

Código A.1

Este código se ve algo así:

Vista A.1

La idea es que todos los li que contengan los "menu X" se conviertan en la raiz del menú principal y los li contenidos en un ul dentro de un li "menu X" sean submenús del correspondiente "menu X".

¿Cómo lograrlo?
CSS - Cascading Style Sheet - Hoja de Estilo

Primero modificamos la lista A.1 para que sea más fácil aplicar los estilos de la hoja de estilo:

Código B.1

Y la hoja de estilos queda así:

CSS B.1

El menú se ve así ahora:


Increíble no? Bueno lamentablemente esto necesita un pequeño truco en java para hacer que el estúpido IE6 entienda que al colocarme sobre una celda le estoy haciendo hover y por ende debería responder a una instrucción por el estilo. En el menú superior la captura es de Firefox por lo que no hay problema. En IE7 tampoco. El problema es IE6 (de ahí el título de este post).

Para corregir su tontera, necesitamos usar el siguiente script (recordar colocarlo en la sección HEAD <head></head> del HTML):

SCRIPT B.1

Si se fijan, lo que hace el script es reemplazar dinámicamente los hover por una clase llamada over; en el CSS B.1, en cada li donde hay un hover, se duplica el selector CSS reemplazando hover en el duplicado, por over.

O sea, donde dice: #superior li ul li:hover
Agrego: (una coma) #superior li ul li.over
De esta fácil forma, consigo que IE6 me muestre las acciones hover sobre celdas, inputs, selects, en fin lo que sea posible hacer hover.

Hasta aquí la funcionalidad de suckerfish está explicada o más o menos clara.

Si tienen dudas o quieren ver ejemplos mejores o lo que sea, diríjanse al sitio de A list Apart, o al de Suckerfish y Son of Suckerfish

Aún falta una cosa que corregir y que no es fácil de detectar hasta que colocas un menú suckerfish que despliega sobre un select y que al fin y al cabo de eso trataba inicialmente el post. El desplegable del menú pasa por DEBAJO del select o input. ¿La causa? Una pifia de IE6 a la hora de leer las posiciones de los elementos y dejando siempre en la posición más alta los inputs y selects (y seguramente todo lo que sea un campo de un form).

En el siguiente, la solución a este problema.