Ir al contenido principal

Código jQuery para ver foto más grande

  Pues en este post explicaré como hacer para que, al pasar el puntero del mouse por encima de una foto pequeña (o thumbnail), esta se vea más grande en otro sitio.

   En el código HTML podríamos tener algo como:



<div class="box_imgpeque">
<img src="images/100_6747.JPG" width="160" height="90" alt=""/>
</div>
<div class="box_imgpeque">
<img src="images/100_6745.JPG" width="160" height="90" alt="">
</div>
<div class="box_imgpeque">
<img src="images/100_6710.JPG" width="160" height="90" alt="">
</div>

<div class="box_imggrande"></div>

   Creo que el HTML está claro. En los divs "box_imgpeque" tendríamos las imágenes en pequeño y, en el div "box_imggrande" irían las imágenes grandes. Por supuesto en el CSS de "box_imggrande" le daríamos una posición en pantalla (con top y left por ejemplo) y tendrá que ser un div oculto ("display:none"), ya que, sólo aparecerá cuando el puntero del mouse esté en la foto pequeña (después, al retirar el mouse, este div volverá a desaparecer).

El CSS podría ser algo como lo que sigue:

.box_imgpeque {
 font-weight:200;
 font-size:1.1em;
 color:#86F3A5;
 width: 195px;
 height: 177px;
 padding: 0px 0px 0px 0px;
 float:left;
}
.box_imggrande {
 display:none;
 width:550px;
 height:290px;
 position:absolute;
 top:750px;
 left:250px;
 z-index:1000;
}


   Bien, ¿como saber a que foto apunta el ratón y, después, mostrarla en grande?. Con el siguiente código en jQuery, usando el registrador de eventos del ratón .hover(), es bastante fácil:



<script type="text/javascript">

   var imagen=$(".box_imgpeque img")
   var imagengrande=$("div.box_imggrande");
   imagen.hover(
      function(){
         ruta=($(this).attr('src'));
         $("div.box_imggrande").append("<img src="+ruta+" width=550 height=290 alt=''/>");
         imagengrande.fadeIn(700);
}, //fin de primera función
      function(){
         $("div.box_imggrande").empty();
         imagengrande.hide()
} //fin de segunda función
); //fin de .hover()

</script>

   Lo comento un poco. El la primera linea guardamos en la variable "imagen" un array con todas las imágenes cuyo div tenga la etiqueta "box_imgpeque". En la segunda guardamos en "imagengrande" la selección del div contenedor "box_imggrande". Después aplicamos ".hover()" a cada una de la imágenes (que están guardadas en la variable "imagen"). El registrador de eventos ".hover()" contiene dos funciones separadas por una coma. La primera función contiene el código a ejecutar cuando el ratón está encima de una imagen y la segunda se ejecuta cuando el puntero sale fuera.
En la primera función guardamos en "ruta" el atributo 'scr' (osea, la ruta y nombre) de la imagen donde apunta el mouse (this). Después localizamos el div "box_imggrande" y le agregamos el texto html con la imagen y el nuevo tamaño. Seguidamente hacemos aparecer, con un efecto suave, el div.
En la segunda función, cuando el puntero del mouse sale fuera dela imagen pequeña, primero localizamos y vaciamos el contenido del div (empty()) y, después, lo ocultamos (hide()).

   Y, creo, esto es todo amigos. Si tenéis alguna duda dejad un comentario.

Comentarios

Publicar un comentario

Entradas populares de este blog

Leer un archivo XML con jQuery y javascript y modificar un HTML con su contenido

   Una manera muy interesante y fácil de modificar los textos de tu página web. Si, por ejemplo, tenemos una página donde cambiamos a menudo unas noticias que tenemos en el margen derecho, podríamos tener un código HTML como este:    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Manejar archivo XML</title> <script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> <script src="leerxml.js"></script> <link rel="stylesheet" href="estilos.css"> </head> <body> <h1>Titulo de la página</h1> <div id="derecha"> <div class="noticias"> <div class="prim

Recargar div con efecto de aparición suave (Fade In) en jQuery

  En este post continúo con el código que describí en el segundo post sobre cómo refrescar un div sin necesidad de refrescar toda la página, pero añadiéndole unas lineas para este se aparezca de forma suave. La página de ejemplo es http://www.talleresguadamia.com y el código es el que sigue: <script type="text/javascript"> $(document).ready(function(){    $("#contenido a").each(function(){       var href = $(this).attr("href");       $(this).attr({ href: "#"});       $(this).click(function(event){                  $("#contenido").css("display","none");          $("#contenido").load(href).fadeIn(700);        });    }); });; </script>   Podéis ver lo fácil que es. Hemos agregado sólo dos cosas:   - La linea  "$('#contenido').css('display','none')", que lo único que hace es cambiar la propiedad css "display" del div "#contenido&q

Código jQuery para ver una imagen al pasar el ratón sobre un enlace.

   Voy a explicar un código en jQuery , para que, al pasar el puntero del mouse sobre un enlace o, en este caso, sobre un texto cualquiera (sin necesidad de ser un enlace), se nos muestre una imagen cerca del enlace y que esta desaparezca al retirar el puntero del mouse (sin necesidad de hacer click sobre él). Podéis pensar que me estoy repitiendo con un anterior post. Casi que si. Pero la diferencia es que, en este caso, no sabemos donde estará situada la imagen. Es decir que, dependiendo de la situación de la pantalla donde esté el enlace o texto, allí se mostrará la imagen.    Vamos al grano. Primero el código en HTML:       <span class="enlace" title="hyneria.png">Hyneria</span>    Podéis ver que, en este caso, no se trata de un enlace. Le pongo el nombre de 'enlace' a la clase porque en el CSS le doy apariencia de enlace. Aquí lo importante es 'title' el cual contiene el nombre de la imagen que queremos mostrar (pod