El objetivo de esta técnica es crear imágenes de sustitución para utilizarlo en menus.Se puede cambiar el color por imagenes reales de fondo con la propiedad background-image: url(   );

PASO1

Creamos una lista con los elementos que se mostrarán en el menú y creamos los enlaces (para nuestro ejemplo serán nulos):

PASO2

Crear el juego de imágenes que se utilizará para los efectos. Necesitaremos una imagen para el mostrar en la página y otra que se mostrará únicamente cuando el ratón pase sobre ella.

Aunque podrían utilizarse tamaños diferentes para ambas imágenes es preferible que sean del mismo tamaño para que todo sea más sencillo.

PASO3

Ajustaremos márgenes y rellenos para que la lista quede al borde de la división y eliminaremos  los boliches del listado que hay dentro de nuestra división menú, para lo que recurriremos a crear un estilo interno utilizando CSS.  (#menu ul)

Pondremos a 0 los valores de márgenes y izquierdos y en la pestaña listas elegiremos none como tipo para estilo de la lista.

PASO4

Ahora haremos que nuestra lista se presente en horizontal, con cada item a continuación del anterior. Para ello crearemos una nueva regla #menu li que afectará unicamente a los elementos de lista que se encuentren dentro de la división menu y le adjudicaremos el valor left a la propiedad float

PASO5

Colocaremos ahora una imagen como fondo de cada uno de los enlaces. 

Para poder modificarlos posteriormente vamos a tener que crear una clase para cada uno de ellos. Así pues iremos creando una serie de nuevas reglas a las que iremos llamando item1, item2 y así sucesivamente. En este caso estamos creando clases en lugar de identificadores id, por lo que utilizaremos la opción estilo con nombre al crear cada una de las nuevas reglas. Aplicamos un fondo para cada una de las clases.

Una vez que hayamos creado todas las clases las adjudicaremos a cada uno de los elementos de la lista. 

PASO6

Vamos ahora a darle un estilo a los enlaces de nuestro menú, para lo que crearemos una nueva regla #menu a que afectará a los enlaces que se hayan creado dentro de nuestro menú. (Hemos estado utilizando este identificador desde el principio pero aún no habíamos definido ninguna regla constyle="text-align: justify;" sus propiedades)

PASO7

Como las imágenes han quedado juntas vamos a separarlas modificando la regla #menu li que ya habíamos creado añadiéndole  un margen derecho de 1 píxel.

PASO8

La siguiente tarea será establecer el comportamiento de cada elemento cuando el ratón pase por encima. Necesitaremos crear una seudoclase :hover para cada uno de los elementos de la lista y adjudicarle como fondo la imagen en color correspondiente en cada caso. Además, para garantizar que siempre se colocará por encima de la imagen en blanco y negro le daremos también, un valor 50 para la propiedad z-index (realmente sería suficiente darle un valor 2 ya que con ese estaría por encima del valor de profundidad por defecto).

PASO9

Por último, solo nos resta corregir la flotación. Dado que los elementos de la lista tienen establecida la propiedad de flotación a la izquierda podemos encontrarnos con que el flujo de texto se produzca a la derecha de nuestra lista y, normalmente, nos interesará que no sea así y que la lista quede separada del resto. Para ello corregiremos la el contenedor general al que habíamos llamado menu dándole, en  las dimensiones de alto y ancho que deseemos adjudicarle en función de nuestras imágenes y especificando el valor block para la propiedad display.

!!En el ejemplo faltan los enlaces reales a las páginas de destino que suponemos que estarían creados desde el primer momento, y en el código que sigue se sustituyen los colores por imagenes reales de fondo (que corresponde a catedrales de España)!!

El código de nuestra hoja de estilos interna quedaría así:

#menu {display:block; width: 710px; height: 100px;}
#menu ul { list-style-type: none; margin-left: 0pt; padding-left: 0pt;}
#menu li { float: left; margin-right:1px;}
.item1 { background-repeat: no-repeat;
background-color: rgb(255,102,102);
}
.item1:hover { background-repeat: no-repeat;
background-color: rgb(255, 159, 102);
z-index:50;}
.item2 { background-repeat: no-repeat;
background-color: rgb(105,102,102);}
.item2:hover { background-repeat: no-repeat;
background-color: rgb(255,255,102);
;
z-index:50;}
.item3 { background-repeat: no-repeat;
background-color: rgb(255,102,255);}
.item3:hover { background-repeat: no-repeat;
background-color: rgb(158,102,102);
z-index:50;}
.item4 { background-repeat: no-repeat;
background-color: rgb(255,142,102);}
.item4:hover { background-repeat: no-repeat;
background-color: rgb(255,182,255);
z-index:50;}
 
#menu a { display: block; width: 100px; padding-top: 66px; overflow: hidden; height: 0px;}

Valid XHTML 1.0 Strict