Programación en castellano
Inicio > Taller Java > Internet > CSS > Menú de imágenes con CSS
-Artículos

Menú de imágenes con CSS

1 . Preparación de las imágenes
2 . El código HTML
3 . La hoja de estilos CSS

Cuando Javascript se puso de moda y escribí mi curso hace ya unos años, el truco de moda consistía en hacer unas barras de menú y que al posar el ratón sobre ellas, un script cambiara la imagen y mostrara una distinta. Hoy vamos a estudiar un método alternativo para hacer lo mismo que tiene dos ventajas: que funciona exclusivamente con HTML y CSS, sin Javascript; y que tanto la imagen original como la alternativa están en el mismo fichero gráfico (GIF, JPG o PNG) y por tanto no es necesario esperar a que carguen las imágenes alternativas para que funcione, además de que así se necesitan menos ficheros y la página carga antes. El código funciona en Explorer, Mozilla y Opera.

Preparación de las imágenes

Cada fichero gráfico incluirá tanto la imagen que se debe mostrar por defecto como la que aparecerá al posar el ratón por encima. En nuestro caso incluiremos también un espacio en blanco (que podía no existir) entre medias de ambas imágenes:

Gráfico para las víctimas del terrorismo

Las medidas, en este caso particular, son las siguientes: cada imagen ocupa 113 pixels de ancho por 33 de alto. La imagen alternativa comienza a 47 pixels del borde superior del fichero. Estos datos deberán ser los mismos para cada imagen del menú gráfico.

El código HTML

En el código HTML sólo deberemos tener en cuenta tres cosas:

  • Cada enlace deberá tener un atributo id único que permita diferenciarlo de las demás.
  • Todos los enlaces estarán englobadas dentro de una etiqueta div que pertenecerá a la clase menu
  • Dentro de cada enlace colocaremos el texto alternativo de cada opción del menú, para que la página sea accesible. No obstante, ese texto irá encerrado dentro de una etiqueta de clase alt para poder ocultarlo al resto de los usuarios.
<div class="menu">
  <a href="http://www.hermanos.org/" target="_blank" id="cuba"><span
    class="alt">Hermanos al rescate</span></a>
  <a href="http://www.avt.org" target="_blank" id="victimas"><span
    class="alt">AVT</span></a>
  <a href="http://www.bastaya.org" target="_blank" id="bastaya"><span
    class="alt">Basta Ya</span></a>
</div>

El código no es muy complicado; habréis notado que ni siquiera indicamos la imagen que corresponde a cada enlace. Eso estará en el código CSS, que es el que tiene miga en esta ocasión.

La hoja de estilos CSS

La hoja de estilos tendrá varias funciones:

  • Ocultará el texto para quien no use un lector de páginas web.
  • Especificará el tamaño de las imágenes del menú.
  • Será donde se indique a qué enlace corresponde cada imagen, que se incluirá como imagen de fondo del enlace.
  • Cuando el ratón pase por encima del enlace (es decir, de la imagen), se variará la posición de la imagen de fondo para ver la alternativa.
.menu a {
  display:block;
  border:none;
  background-position:left top;
  background-repeat:no-repeat;
  width:113px;
  height:33px;
}
.menu a:hover { background-position: 0 -47px; text-decoration: none; }
.menu .alt { display:none; }
.menu a#cuba { background-image: url(hermanos_cuba.jpg) }
.menu a#victimas { background-image: url(victimas_terrorismo.gif) }
.menu a#bastaya { background-image: url(bastaya.gif) }

Lo más interesante está en las definiciones .menu a#loquesea donde indicamos la imagen correspondiente a cada enlace y en .menu a:hover que es donde se rota, cambiando la posición vertical del gráfico de fondo desde arriba (top) a -47 pixels, de modo que muestre el gráfico alternativo.

El resultado sería este:

No obstante, este sistema tiene un problema: en Internet Explorer la imagen parpadea cuando ponemos el ratón sobre ella. La razón es que este navegador no incluye por defecto en la caché las imágenes de fondo. En un próximo artículo examinaremos este problema para intentar encontrarle solución.

 

Últimos comentarios
Últimos 5 comentarios

Muy Bueno (19/11/2008)

Por
Hola, la verdad que me ha servido , debido a que estoy realizando una pag.web ((desde casa )), y a demas estoy trabajo con este lenguaje pero hace poco .y me sirve.Muy Util, siempre leo aca cuando nesecito informacion. Gracias! saludos.

Excelente Aporte (14/07/2008)

Por
Gracias por este excelente aporte

Algo me falla (01/05/2008)

Por
Mi problema es que todo me sale bien, salvo porque cuándo paso el ratón por el enlace sólo cambia a la segunda imagen, si el ratón lo paso por la parte superior de la imágen solamente. En el resto de la imágen, es como si el enlace no existiera. Ayuda, plis.

a (17/10/2007)

Por
eres un penjooooooooooooooooooooooooooooooooooooooooo

No viene a cuento (12/10/2007)

Por
Gracias por este instructivo artículo, pero lo estropeas todo mezclandolo con la política. Por cierto, asociasa una asociación de victimas del terrorismo española con una organicación terrorista afincada en Miami.
 
Tienda
Patrocinados
 

Copyright © 1999-2007 Programación en castellano. Todos los derechos reservados.
Formulario de Contacto - Datos legales - Publicidad

Hospedaje web y servidores dedicados linux por Ferca Network

red internet: musica mp3 | logos y melodias | hospedaje web linux | registro de dominios | servidores dedicados
más internet: comprar | recursos gratis | posicionamiento en buscadores | tienda virtual | gifs animados