Estoy haciendo una página de Preguntas frecuentes y tengo botones en la parte superior para saltar a una categoría (salta a la etiqueta p
que utilizo como etiqueta de categoría, por ejemplo <p id="general">
para mi categoría general). En lugar de saltar directamente a la categoría, quiero agregar un efecto de desplazamiento. Quiero algo como http://www.dynamicdrive.com/dynamicindex3/scrolltop.htm que se desplaza a la parte deseada de mi página. Ese enlace es un script que va a la parte superior de la página con un bonito efecto de desplazamiento. Necesito algo similar que se desplazará a donde me enlace. Por ejemplo, si quiero ir a un misc. categoría, solo quiero poder tener <a href="#misc">Miscellaneous</a>
y hacer que se desplace a esa sección de la página.jQuery Desplácese a Div
Respuesta
$(function() {
$('a[href*=#]:not([href=#])').click(function() {
if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'') && location.hostname == this.hostname) {
var target = $(this.hash);
target = target.length ? target : $('[name=' + this.hash.slice(1) +']');
if (target.length) {
$('html,body').animate({
scrollTop: target.offset().top
}, 1000);
return false;
}
}
});
});
Comprobar este enlace: http://css-tricks.com/snippets/jquery/smooth-scrolling/ para una demostración, lo he usado antes y funciona bastante bien.
si el elemento de enlace es:
<a id="misc" href="#misc">Miscellaneous</a>
y la categoría Varios está limitada por algo como:
<p id="miscCategory" name="misc">....</p>
puede utilizar jQuery para hacer el efecto deseado:
<script type="text/javascript">
$("#misc").click(function() {
$("#miscCategory").animate({scrollTop: $("#miscCategory").offset().top});
});
</script>
por lo que recuerdo correctamente ... (aunque no lo he probado y lo escribí de memoria)
Algo como esto permitiría que se toma sobre el clic de cada enlace interno y desplazarse hasta la posición del marcador correspondiente:
$(function(){
$('a[href^=#]').click(function(e){
var name = $(this).attr('href').substr(1);
var pos = $('a[name='+name+']').offset();
$('body').animate({ scrollTop: pos.top });
e.preventDefault();
});
});
¡El mejor tipo de respuesta que se podría dar! Gracias – Zippie
Disculpe mi estupidez, pero ¿podría alguien traducir esta respuesta al inglés? – CodyBugstein
@Imray: ¿Qué es lo que no entiendes? – Guffa
sólo pudiera utilizar la función de posición de jQuery para obtener coordenadas de su div, a continuación, utilizar desplazamiento javascript:
var position = $("div").position();
scroll(0,position.top);
$ ("div"). Offset() funciona mejor. –
es menudo requerida para mover el cuerpo y los objetos juntos html.
$('html,body').animate({
scrollTop: $("#divToBeScrolledTo").offset().top
});
ShiftyThomas es el adecuado:
$("#divToBeScrolledTo").offset().top + 10 // +10 (pixels) reduces the margin.
Así que para aumentar el uso del margen:
$("#divToBeScrolledTo").offset().top - 10 // -10 (pixels) would increase the margin between the top of your window and your element.
No hay punto y coma aquí '.offset(). Top;' – luqmaan
funciona como encanto ....! – user1811801
¿No debería ser menos 10 para un margen de 10px en la parte superior? .offset(). top - 10 – ShiftyThomas
me encontré con el mismo. Vimos un ejemplo que utiliza este: https://github.com/flesler/jquery.scrollTo
lo uso como sigue:
$('#arrow_back').click(function() {
$.scrollTo('#features_1', 1000, { easing: 'easeInOutExpo', offset: 0, 'axis': 'y' });
});
solución limpia. ¡Funciona para mi!
El siguiente script es una solución genérica que funciona para mí. Se basa en ideas extraídas de este y otros hilos.
Cuando se hace clic en un enlace con un atributo href que comienza con "#", se desplaza la página sin problemas al div indicado. Donde solo está presente el "#", se desplaza suavemente hacia la parte superior de la página.
$('a[href^=#]').click(function(){
event.preventDefault();
var target = $(this).attr('href');
if (target == '#')
$('html, body').animate({scrollTop : 0}, 600);
else
$('html, body').animate({
scrollTop: $(target).offset().top - 100
}, 600);
});
Por ejemplo, cuando el código anterior está presente, hacer clic en un enlace con la etiqueta <a href="#">
se desplaza a la parte superior de la página a la velocidad 600. Al hacer clic en un enlace con la etiqueta <a href="#mydiv">
desplaza a 100px anteriormente <div id="mydiv">
a velocidad 600 . Siéntase libre de cambiar estos números.
Espero que ayude!
Debería eliminar la línea 2: 'event.preventDefault();'. Según esta regla, el anclaje no se agrega a la url (en su barra de direcciones). Entonces, si alguien copia la página ... ¿Lo entiendes? ;) Al eliminar esa línea, se soluciona. Gracias :) – Bob
Sí, eso es mejor. Gracias. Esa línea también impedía que el script funcionara en Firefox. – lflier
También puede utilizar 'nombre' en lugar de 'href' para una dirección URL más limpio:
$('a[name^=#]').click(function(){
var target = $(this).attr('name');
if (target == '#')
$('html, body').animate({scrollTop : 0}, 600);
else
$('html, body').animate({
scrollTop: $(target).offset().top - 100
}, 600);
});
- 1. Jquery desplácese a una etiqueta div
- 2. Desplácese a un div usando jquery
- 3. Javascript o Jquery: Desplácese a la posición fija div
- 4. Enlace a otra página -> jquery desplácese a ancla específica
- 5. jQuery Mobile - desplácese a div específico en la carga de la página
- 6. Cambio: antes de cuándo: desplácese sobre la DIV principal?
- 7. jQuery anexar div a un
- 8. Jquery animate div a la misma posición que otro div
- 9. Cargar página a un div jQuery Mobile
- 10. jQuery - Adjuntar JavaScript a una Div
- 11. jQuery anexar Google Adsense a DIV
- 12. jQuery cambiando la clase css a div
- 13. scrollTop jquery, desplazándose a div con id?
- 14. agregar html a div con jQuery
- 15. jQuery Loop a través de cada div
- 16. cómo reenviar UIWebView desplácese a UIScrollView? (condicionalmente)
- 17. Desplácese a WPF FlowDocumentScrollViewer desde el código?
- 18. HTML/jQuery Tables: desplácese horizontalmente, arregle la primera columna (izquierda)
- 19. div con jQuery
- 20. Switch/div palanca (jQuery)
- 21. jQuery watch div
- 22. DIV con jQuery
- 23. jQuery Simple Plegable Div?
- 24. Jquery auto refresh div
- 25. jQuery: real anchura div
- 26. iframe frente div + jQuery
- 27. actualizar div con jquery
- 28. Jquery- Ocultar div
- 29. jQuery: altura div dinámica
- 30. Jquery onclick en div
Sí, si no fuera por el comentario 15 caracteres mínimo Me he comentado en el suyo con: Snap ! : P – FarligOpptreden
Este script es el ganador, ¡pero no sé a quién elegir! – Christopher
Bueno, ya que fui el primero (por 15 segundos), creo que merezco una victoria? : P Como muestra de gratitud, votaré la respuesta de Symmet por un representante adicional ... – FarligOpptreden