2008-10-29 7 views
0

Ce que je veux faire est de faire défiler la fenêtre lorsque je développe des éléments dans ma page.Quelle est la meilleure façon de faire défiler la fenêtre du navigateur pour les éléments en expansion?

L'effet que j'essaie d'obtenir est similaire aux commentaires Stack Overflow. Si elle s'étend au-delà de la page, elle défile pour s'adapter à tous les commentaires de la fenêtre.

Quelle est la meilleure façon de procéder?

Modifier: J'utilise JQuery.

+0

Utilisez-vous une bibliothèque javascript spécifique? – MDCore

+0

Ceux avec Safari peuvent apprécier ceci: http://www.gesteves.com/experiments/starwars.html –

Répondre

0

Si vous avez l'avantage d'utiliser Prototype, vous pouvez utiliser $(element).scrollTo(). Dans le cas contraire, l'idée générale est de calculer le décalage cumulatif de l'élément, puis de définir window.scrollTop (et window.scrollLeft) en conséquence.

0

Vous pouvez le faire bien avec Scriptaculous (construit sur Prototype):

new Effect.ScrollTo('someDiv',{...some parameters...}) 

Il vous donne un contrôle plus précis que Prototype seul (délai avant le début, les événements de durée et de rappel (comme AfterFinish) qui permettent vous de déclencher d'autres effets ou tout ce que vous choisissez, vous pouvez le faire défiler en douceur et bien, de sorte que la page ne pas sauter tout à coup

0

Si vous savez quel est l'élément suivant dans la source, vous pouvez simplement passer à cet élément (location.href = "# ..."). Cela utiliserait le «défilement» natif du navigateur et n'utiliserait aucune bibliothèque.

0

Vous pouvez utiliser ce code qui est correct mais pas parfait. Sur la base de la suggestion faite par blonkm

function scrollTo(Selector){ 
    $(Selector).before("<a name='scroll' id='scroll'></a>"); 
    document.location.hash = 'scroll'; 
    $('scroll').remove(); 
} 

Cela devrait fonctionner. Requiert jQuery mais vous dites déjà que vous l'utilisez.