Seguramente estén familiarizados con el plugin jQuery Dock que permite a los desarrolladores crear un menú como la Apple Dock.
En el artÃculo de hoy, te enseñaremos cómo crear un menú similar con el efecto burbuja utilizando simplemente CSS.
Método 1: Sprites CSS
Utilizar sprites CSS es la forma más simple de lograr el efecto burbuja. Sólo necesitas cambiar la imagen de fondo.
Al principio, tu HTML deberÃa lucir asÃ:
-
<ul id="bubble">
-
<a class="icon feed" href="http://feeds2.feedburner.com/prlamnguyen" title="Full RSS Feed">Full RSS Feed</a>
-
</li>
-
<a class="icon email" href="http://feedburner.google.com/fb/a/mailverify?uri=prlamnguyen&loc=en_U" title="Feed via Emal">Feed via email</a>
-
</li>
-
<a class="icon twitter" href="http://twitter.com/prlamnguyen" title="Full RSS Feed">Follow me on Twitter</a>
-
</li>
-
<a class="icon facebook" href="http://facebook.com/duylamng" title="Full RSS Feed">I'm on Facebook</a>
-
</li>
-
<a class="icon delicious" href="http://delicious.com/save" onclick="window.open('http://delicious.com/save?v=5&noui&jump=close&url=http://aext.net&title=AEXT.NET', 'delicious','toolbar=no,width=550,height=550'); return false;" title="Full RSS Feed">Save me</a>
-
</li>
-
<a class="icon technorati" href="http://technorati.com/faves?sub=addfavbtn&add=http://aext.net" title="Full RSS Feed">Fave me</a>
-
</li>
-
</ul>
Después de preparar la imagen para sprites, deberÃa lucir asÃ:
![]()
Este es el código CSS que necesitas para crear la lista de menús y el fondo de imagen por defecto de los links:
-
#bubble {
-
list-style: none;
-
margin: 0px;
-
padding: 0px;
-
}
-
#bubble li {
-
display: inline-block;
-
margin: 0px;
-
padding: 0px;
-
-
}
-
-
#bubble li a.icon {
-
background: url(images/sprites.png) no-repeat;
-
border: none;
-
display: block;
-
width: 128px;
-
height: 128px;
-
text-indent: -9999px;
-
}
Es muy importante al utilizar sprites CSS calcular las dimensiones de la imagen de fondo. Es necesario ser preciso con los pÃxeles. Necesitarás utilizar el CSS de abajo para cambiar la imagen de fondo de los links.
-
#bubble li a.feed {
-
background-position: -139px -12px;
-
}
-
#bubble li a.feed:hover {
-
background-position: -13px -12px;
-
}
-
#bubble li a.email {
-
background-position: -139px -149px;
-
}
-
#bubble li a.email:hover {
-
background-position: -13px -149px;
-
}
-
#bubble li a.twitter {
-
background-position: -139px -283px;
-
}
-
#bubble li a.twitter:hover {
-
background-position: -13px -283px;
-
}
-
#bubble li a.facebook {
-
background-position: -139px -422px;
-
}
-
#bubble li a.facebook:hover {
-
background-position: -13px -422px;
-
}
-
#bubble li a.delicious {
-
background-position: -139px -559px;
-
}
-
#bubble li a.delicious:hover {
-
background-position: -13px -559px;
-
}
-
#bubble li a.technorati {
-
background-position: -139px -698px;
-
}
-
#bubble li a.technorati:hover {
-
background-position: -13px -698px;
-
}
Y ese es el método 1. Muy fácil y simple. Ahora, veamos el método 2, el intercambio de imagen.
Método 2: Intercambio de imágenes
Con este método, utilizarás más HTML y menos CSS. Ya que usaremos 2 imágenes para cada link, el código HTML completo deberÃa lucir como este:
-
<ul id="bubble2">
-
<a href="http://feeds2.feedburner.com/prlamnguyen" title="Full RSS Feed">
-
<img class="small" src="images/feed.png" alt="Full RSS" />
-
<img class="large" src="images/feed_large.png" alt="Full RSS" />
-
</a>
-
</li>
-
<a href="http://feedburner.google.com/fb/a/mailverify?uri=prlamnguyen&loc=en_U" title="Feed via Emal">
-
<img class="small" src="images/email.png" alt="Feed via Emal" />
-
<img class="large" src="images/email_large.png" alt="Feed via Emal" />
-
</a>
-
</li>
-
<a href="http://twitter.com/prlamnguyen" title="Follow me on Twitter">
-
<img class="small" src="images/twitter.png" alt="Follow me on Twitter" />
-
<img class="large" src="images/twitter_large.png" alt="Follow me on Twitter" />
-
</a>
-
</li>
-
<a href="http://facebook.com/duylamng" title="I'm on Facebook">
-
<img class="small" src="images/facebook.png" alt="I'm on Facebook" />
-
<img class="large" src="images/facebook_large.png" alt="I'm on Facebook" />
-
</a>
-
</li>
-
<a href="http://delicious.com/save" onclick="window.open('http://delicious.com/save?v=5&noui&jump=close&url=http://aext.net&title=AEXT.NET', 'delicious','toolbar=no,width=550,height=550'); return false;" title="Save me">
-
<img class="small" src="images/delicious.png" alt="Save me" />
-
<img class="large" src="images/delicious_large.png" alt="Save me" />
-
</a>
-
</li>
-
<a href="http://technorati.com/faves?sub=addfavbtn&add=http://aext.net" title="Fave me on Technorati">
-
<img class="small" src="images/technorati.png" alt="Fave me on Technorati" />
-
<img class="large" src="images/technorati_large.png" alt="Fave me on Technorati" />
-
</a>
-
</li>
-
</ul>
En este método, haremos algunos cambios. El efecto hover hará que el botón seleccionado se mantenga sobre los otros. La diferencia entre el anterior método y éste es que aquà se debe programar la altura y el ancho para los elementos <li> , ya que no queremos que la lista se mueva y cambie de tamaño cuando el mouse esté sobre ella.
El código CSS para la lista es el siguiente:
-
#bubble2 {
-
list-style: none;
-
margin: 20px 0px 0px;
-
padding: 0px;
-
}
-
#bubble2 li {
-
display: inline-block;
-
margin: 0px 5px;
-
padding: 0px;
-
width: 72px;
-
height: 72px;
-
}
72px es el tamaño de las imágenes pequeñas. Puedes programarlas más grandes, pero no demasiado.
El CSS para el link es:
-
#bubble2 li a img {
-
position: relative;
-
border: none;
-
}
-
-
#bubble2 li a img.large {
-
display: none;
-
}
-
-
#bubble2 li a:hover img.small {
-
display: none;
-
z-index: 0;
-
}
-
-
#bubble2 li a:hover img.large {
-
display: block;
-
margin-top: -28px;
-
margin-left: -28px;
-
z-index: 1000;
-
}
Recuerda configurar la posición de la imagen en relative, porque configuraremos z-index para las imágenes grandes y el z-index funciona sólo con posición absoluta o relativa.

Cuando el mouse pasa por encima, configuraremos el margen de la imagen en 28px porque cuando agrandamos las imágenes, queremos que la más grande tenga el mismo centro que la pequeña. Es muy importante ver el efecto zoom. La cantidad de pixel que necesitamos para el margen se calcula como
- margin-top= - (altura de la imagen grande - altura de la imagen chica)/2
- margin-left= - (ancho de la imagen grande - ancho de la imagen chica)/2
Finalmente, añade este código a tu archivo HTML para que el menú sea visible en IE:
-
<!--[if IE 7]>
-
<style type="text/css">
-
#bubble li, #bubble2 li {
-
display: inline;
-
}
-
</style>
-
<![endif]-->
Y listo.
Haz clic aquà para ver una demostración »
Haz clic aquà para descargar el código »
Se puede usar z-index para el método 1 también. Este tutorial sólo separa los dos métodos para una mayor comprensión.
Fuente: Aext.net








Comentarios recientes
- Justi: @carlos el error es que la tabla ya fue creada!, estas intentando crearl...
- Grettel: me gustan la informacion que nos mandan...
- carlos: wenas me podriais ayudar al comentario que dije anteriormente por favor?...
- AlejandroBriz: NELLY creo no entendiste o terminaste el artÃculo, en la parte inferior...
- rafael: quisiera hablar con alguna mujer que se sienta sola...
- alvaroheavy: ME DA IGUAL LO QUE DIGAN
FIREFOX A FUEGO HASTA LA MUERTE!!!!
FIREFOOOO...
Feed de los comentarios