Foros del Web » Programando para Internet » Javascript »

elemento visible

Estas en el tema de elemento visible en el foro de Javascript en Foros del Web. quisiera saber como hacer para saber cuando un elemento esta siendo visto por el explorador espero que se entienda tb quedo atento a su respuesta, ...
  #1 (permalink)  
Antiguo 04/03/2012, 16:44
 
Fecha de Ingreso: septiembre-2008
Mensajes: 242
Antigüedad: 16 años, 2 meses
Puntos: 3
elemento visible

quisiera saber como hacer para saber cuando un elemento esta siendo visto por el explorador

espero que se entienda tb quedo atento a su respuesta, trate con los ejes x e y del elemento pero no llegue a nada eso pues gracias...
  #2 (permalink)  
Antiguo 04/03/2012, 20:26
Avatar de Naahuel  
Fecha de Ingreso: marzo-2011
Ubicación: localhost
Mensajes: 796
Antigüedad: 13 años, 8 meses
Puntos: 192
Respuesta: elemento visible

¿Te referís a cómo saber si un elemento determinado está dentro del area visible del navegador?

Yo tengo un script hecho por mi, para jQuery, que se encarga de esa tarea. Lo modifiqué para que lo entiendas. La idea es que un evento se dispare cuando el elemento está visible y cuando se pierde:

Código HTML:
Ver original
  1. <!doctype html>
  2.     <title>Prueba</title>
  3.     <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
  4.     <script type="text/javascript">
  5.         $(function(){
  6.             var elems = $('.estoy-visible');    //elementos que quiero saber si estan en el área visible
  7.             var winW = $(window).width();       //dimensiones de la ventana
  8.             var winH = $(window).height();      //dimensiones de la ventana
  9.             elems.each(function(){
  10.                 var self = $(this);
  11.                 self.on('esta/visible',function(){
  12.                     //evento personalizado que crearemos mas abajo, se dispara cuando el elemento está visible
  13.                     //lo que ponemos aca es lo que queremos hacer si el elemento aparece en pantalla
  14.                     $('#info').html('<p>Est&aacute; visible: '+$(this).text()+'</p>');
  15.                 });
  16.                 self.on('esta/invisible',function(){
  17.                     //evento personalizado que crearemos mas abajo, se dispara cuando el elemento está FUERA del area visible
  18.                     //lo que ponemos aca es lo que queremos hacer si el elemento DESAPARECE de la pantalla
  19.                     $('#info').html('<p>Se perdi&oacute;: '+$(this).text()+'</p>');
  20.                 });
  21.                
  22.                 //obtenemos las dimensiones de cada elemento y su posicion
  23.                 var self_w = self.outerWidth(); //ancho exterior
  24.                 var self_h = self.outerHeight(); //alto exterior
  25.                 var self_l = self.offset().left; //coordenada izquierda
  26.                 var self_t = self.offset().top; //coordenada arriba
  27.                
  28.                 //asignamos un evento a window.scroll(), para cuando se haga scroll
  29.                 //esta parte del script es algo inefectiva. No es bueno si son muchos los elementos a verificar.
  30.                 $(window).scroll(function(){
  31.                     var scroll_h = this.pageXOffset;
  32.                     var scroll_v = this.pageYOffset;
  33.                     //acá verificamos si el elemento está COMPLETAMENTE dentro de las dimensiones de la ventana
  34.                     if( (self_w + self_l - scroll_h) <= winW && (self_l) >= scroll_h &&
  35.                         (self_h + self_t - scroll_v) <= winH && (self_t) >= scroll_v ){
  36.                         self.trigger('esta/visible');
  37.                     }
  38.                     else{
  39.                         self.trigger('esta/invisible');
  40.                     }
  41.                 });
  42.             });
  43.         });
  44.     </script>
  45.     <style type="text/css">
  46.     <!--
  47.         #wrap{
  48.             height:4000px;
  49.             width:6000px;
  50.             position:relative;
  51.         }
  52.        
  53.         #info{
  54.             position:fixed;
  55.             top:0;
  56.             left:0;
  57.         }
  58.        
  59.         .estoy-visible{
  60.             background:blue;
  61.             width:200px;
  62.             height:200px;
  63.             position:absolute;
  64.             top:1000px;
  65.             left:2000px;
  66.         }
  67.     -->
  68.     </style>
  69.    
  70. </head>
  71.     <div id="wrap">
  72.         <p id="info"></p>               <!-- párrafo SOLAMENTE para mostrar la info del elem 1-->
  73.         <div class="estoy-visible">Elemento 1</div> <!-- elemento que quiero saber si esta visible o no -->
  74.     </div>
  75. </body>
  76. </html>

Acá lo tenés funcionando JSBin: http://jsbin.com/ewatas

El script funciona muy bien y tiene una serie de aplicaciones. Tal vez se lo podría implementar en forma de plugin y optimizar para que no use tantos callbacks y eventos.

Espero entiendas cómo se lo aplica. Saludos.
__________________
nahueljose.com.ar
  #3 (permalink)  
Antiguo 04/03/2012, 20:28
Avatar de Naahuel  
Fecha de Ingreso: marzo-2011
Ubicación: localhost
Mensajes: 796
Antigüedad: 13 años, 8 meses
Puntos: 192
Respuesta: elemento visible

Una aplicación interesante es la de cargar imágenes (por ejemplo en una galería) sólo cuando pasan a estar visibles. Acá lo "emulo" usando fadeIn() y fadeOut(). Fijate cómo aparece y desaparece cuando se empieza a perder o a aparecer:

Código HTML:
Ver original
  1. <!doctype html>
  2.     <title>Prueba</title>
  3.     <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
  4.     <script type="text/javascript">
  5.         $(function(){
  6.             var elems = $('.estoy-visible');    //elementos que quiero saber si estan en el área visible
  7.             var winW = $(window).width();       //dimensiones de la ventana
  8.             var winH = $(window).height();      //dimensiones de la ventana
  9.             elems.each(function(){
  10.                 var self = $(this);
  11.                 self.on('esta/visible',function(){
  12.                     //evento personalizado que crearemos mas abajo, se dispara cuando el elemento está visible
  13.                     //lo que ponemos aca es lo que queremos hacer si el elemento aparece en pantalla
  14.                     $(this).fadeIn();
  15.                 });
  16.                 self.on('esta/invisible',function(){
  17.                     //evento personalizado que crearemos mas abajo, se dispara cuando el elemento está FUERA del area visible
  18.                     //lo que ponemos aca es lo que queremos hacer si el elemento DESAPARECE de la pantalla
  19.                     $(this).fadeOut();
  20.                 });
  21.                
  22.                 //obtenemos las dimensiones de cada elemento y su posicion
  23.                 var self_w = self.outerWidth(); //ancho exterior
  24.                 var self_h = self.outerHeight(); //alto exterior
  25.                 var self_l = self.offset().left; //coordenada izquierda
  26.                 var self_t = self.offset().top; //coordenada arriba
  27.                
  28.                 //asignamos un evento a window.scroll(), para cuando se haga scroll
  29.                 //esta parte del script es algo inefectiva. No es bueno si son muchos los elementos a verificar.
  30.                 $(window).scroll(function(){
  31.                     var scroll_h = this.pageXOffset;
  32.                     var scroll_v = this.pageYOffset;
  33.                     //acá verificamos si el elemento está COMPLETAMENTE dentro de las dimensiones de la ventana
  34.                     if( (self_w + self_l - scroll_h) <= winW && (self_l) >= scroll_h &&
  35.                         (self_h + self_t - scroll_v) <= winH && (self_t) >= scroll_v ){
  36.                         self.trigger('esta/visible');
  37.                     }
  38.                     else{
  39.                         self.trigger('esta/invisible');
  40.                     }
  41.                 });
  42.             });
  43.         });
  44.     </script>
  45.     <style type="text/css">
  46.     <!--
  47.         #wrap{
  48.             height:4000px;
  49.             width:6000px;
  50.             position:relative;
  51.         }
  52.        
  53.         #info{
  54.             position:fixed;
  55.             top:0;
  56.             left:0;
  57.         }
  58.        
  59.         .estoy-visible{
  60.             background:blue;
  61.             width:200px;
  62.             height:200px;
  63.             position:absolute;
  64.             top:800px;
  65.             left:300px;
  66.         }
  67.     -->
  68.     </style>
  69.    
  70. </head>
  71.     <div id="wrap">
  72.         <p id="info"></p>               <!-- párrafo SOLAMENTE para mostrar la info del elem 1-->
  73.         <div class="estoy-visible">Elemento 1</div> <!-- elemento que quiero saber si esta visible o no -->
  74.     </div>
  75. </body>
  76. </html>
__________________
nahueljose.com.ar
  #4 (permalink)  
Antiguo 06/03/2012, 18:42
 
Fecha de Ingreso: septiembre-2008
Mensajes: 242
Antigüedad: 16 años, 2 meses
Puntos: 3
Respuesta: elemento visible

si a eso me refiero voy a ver tu codigo gracias

sigo a la espera de mas ayuda

Etiquetas: elemento, visible
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:32.