¿Es posible determinar qué div se encuentra actualmente en la vista del navegador y luego desencadenar un evento cuando eso ocurra? Básicamente, tengo un sitio web que tiene de 5 a 6 secciones, todas en una página, y deseo activar eventos según la sección que esté actualmente a la vista en el navegador. Sé que podemos vincular directamente a las posiciones de una página usando la etiqueta # en hrefs, pero ¿es posible determinar cuál está actualmente en la vista principal en el navegador?¿Puede jQuery determinar qué divs se encuentran actualmente en la vista del navegador del usuario?
Q
¿Puede jQuery determinar qué divs se encuentran actualmente en la vista del navegador del usuario?
5
A
Respuesta
6
Sí, puedes hacer eso. La idea básica detrás de esto es observar el desplazamiento y determinar cuál de sus sections
está enfocado por el usuario. Una buena respuesta para esto es por lo general de la sección, que está al lado de la parte superior de la ventana gráfica:
$(document).scroll(function() {
var $this = $(this),
scrollTop = $this.scrollTop(),
// find the section next to the current scroll top
sections = $(this).find('section'),
topSection = null,
minDist = Infinity;
sections.each(function() {
// calculate top and bottom offset of the section
var top = $(this).offset().top,
bottom = top + $(this).innerHeight(),
// only use the minimum distance to the scroll top
relativeDistance = Math.min(
Math.abs(top - scrollTop),
Math.abs(bottom - scrollTop)
);
// in case the distance is smaller than
// the previous one's replace it
if (relativeDistance < minDist) {
minDist = relativeDistance;
topSection = this;
}
});
// flip the 'top' class from current to now next one
$('section.top').removeClass('top');
$(topSection).addClass('top');
});
se puede ver una muy buen ejemplo de esto en la Play Webframework's Homepage
Si eso no es todo lo desea, puede observar el pleno offset
o position
de cualquier elemento y compararlo con la ventana gráfica actual usando $(window).innerWidth()
o $(window).innerHeight()
ACTUALIZACIÓN añadido un jsbin para verlo en acción. Disfrute;)
Cuestiones relacionadas
- 1. La mejor manera de determinar la configuración regional del usuario dentro del navegador
- 2. ¿Se puede determinar el tamaño del archivo que se descargará?
- 3. Los divs HTML pueden salir de la ventana del navegador?
- 4. ¿Cuál es la forma más precisa de determinar la geolocalización del usuario en el navegador?
- 5. ¿Puede detectar JavaScript si el navegador del usuario admite gzip?
- 6. Determinar el país del usuario de iPhone
- 7. Cómo obtener la identificación del usuario actualmente registrado en pyrocms?
- 8. Determinar el idioma del usuario en Pyramid
- 9. Silverlight 4 Fuera del navegador: "No se puede determinar la URL del archivo Xap desde la web"
- 10. No se puede encontrar la ventana del navegador del modelo de entidad ADO.NET en vs2010
- 11. ¿Qué recomienda para aceptar dibujos del usuario en el navegador?
- 12. Información SVN de ASP.NET: 'No se puede determinar la ruta de configuración del usuario'
- 13. No se puede quitar un usuario que está conectado actualmente
- 14. Determinar la ubicación del usuario en los mapas de osm
- 15. Escuche los cambios de ancho/alto del navegador con jQuery
- 16. ¿Cómo obtener el rol del usuario actualmente conectado en wordpress?
- 17. ¿puede jquery manipular la definición de css global del documento?
- 18. ¿Puede jQuery leer/escribir cookies en un navegador?
- 19. ventana del navegador de redimensionamiento del navegador cruzado en JavaScript
- 20. Eliminar la autocompletación del navegador en MVC
- 21. Uso del navegador para la interfaz de usuario de escritorio
- 22. detección confiable del navegador del usuario con php
- 23. No se puede determinar el tamaño del terminal con ncurses
- 24. ¿Cómo obtener el ID del navegador del usuario usando JSF?
- 25. Detección del navegador del cliente en Vaadin
- 26. Rails Idea: obtener objeto del usuario actualmente conectado?
- 27. jQuery Accordion - Necesita índice del contenido seleccionado actualmente parte
- 28. Determinar la ubicación del icono de bandeja
- 29. Eliminar el historial del navegador usando jQuery
- 30. Cómo deshabilitar la interacción del usuario en una vista personalizada
Bueno, las personas tienen diferentes resoluciones y tamaños de ventana, por lo que será difícil saber cuándo ciertos elementos están a la vista a menos que use alturas y anchos fijos y luego intente implementar algo alrededor del tamaño de la barra de desplazamiento. – elclanrs