Suavizado desplazamiento a anchor

Tunnecino

Bueno, pues lo que dice el título. Necesito (a ser posible con jQuery) suavizar el desplazamiento vertical al hacer click en un #anchor.

Por ejemplo, hago click en en foro a #24 y me baje a <a name="24" /> pero no del tirón, si no con un desplazamiento.

Gracias de antemano ;D

Crawler

Yo para eso he usado alguna vez el plugin jQuery.ScrollTo
http://flesler.blogspot.com/2009/05/jqueryscrollto-142-released.html

NeB1

http://demos.flesler.com/jquery/scrollTo/ como dice #2

Fr4nk0

Plugins como ya te han dicho hay muchos.

Si quieres implementarlo tú, lo que tienes que hacer es usar las propiedades Javascript scrollTop y scrollLeft. Dependiendo de si el elemento esta posicionado absoluto o relativo, esas propiedades te darían el scrollTop y left absoluto o relativo. En JQuery existen funciones para ello y tendrás que ver la que te interesa. Esas funciones son scrollLeft, scrollTop, position y offset.

position, te da las posiciones x e y relativas a padre, y offset te lo da relativo al documento.

Lo que tienes que hacer es coger el elemento al que quieres ir, le calculas la posición vertical para ver cual es, y usas la función animate de JQuery para desplazar el Body (o el div contenedor que contiene el scroll) hacia esa posición (modificando el scrollTop por ejemplo, siempre que el body o el contenedor tengan scroll).

Lo más sencillo, como ya te han dicho es usar algo ya hecho, pero bueno, siempre está la opción de hacerlo tú.

Tunnecino

Lo estoy pensando, es para cosas típicas, que te mande a un anchor en medio de la pantalla y te centre un div de error. Cosas básicas, tampoco abusar de el.

Usuarios habituales

  • Tunnecino
  • Fr4nk0
  • NeB1
  • Crawler