Est-il possible de faire défiler la page jusqu'à un endroit précis à l'aide de jQuery ?
Est-ce que l'emplacement vers lequel je veux défiler doit avoir :
<a name="#123">here</a>
Ou peut-il simplement se déplacer vers un DOM id spécifique ?
Est-il possible de faire défiler la page jusqu'à un endroit précis à l'aide de jQuery ?
Est-ce que l'emplacement vers lequel je veux défiler doit avoir :
<a name="#123">here</a>
Ou peut-il simplement se déplacer vers un DOM id spécifique ?
Plugin jQuery Scroll
puisque c'est une question étiquetée avec jquery Je dois dire que cette bibliothèque dispose d'un plugin très agréable pour un défilement fluide, vous pouvez le trouver ici : http://plugins.jquery.com/scrollTo/
Extraits de la documentation :
$('div.pane').scrollTo(...);//all divs w/class pane
ou
$.scrollTo(...);//the plugin will take care of this
Fonction jQuery personnalisée pour le défilement
vous pouvez utiliser un approche légère en définissant votre fonction jquery de défilement personnalisée
$.fn.scrollView = function () {
return this.each(function () {
$('html, body').animate({
scrollTop: $(this).offset().top
}, 1000);
});
}
et l'utiliser comme :
$('#your-div').scrollView();
Faire défiler les coordonnées d'une page
Animer html
et body
éléments avec scrollTop
ou scrollLeft
attributs
$('html, body').animate({
scrollTop: 0,
scrollLeft: 300
}, 1000);
Simple javascript
défilement avec window.scroll
window.scroll(horizontalOffset, verticalOffset);
pour résumer, utilisez le hash de window.location.hash pour sauter à l'élément avec ID
window.location.hash = '#your-page-element';
Directement en HTML (amélioration de l'accessibilité)
<a href="#your-page-element">Jump to ID</a>
<div id="your-page-element">
will jump here
</div>
Oui, même en JavaScript simple, c'est assez facile. Vous donnez un identifiant à un élément et vous pouvez l'utiliser comme "signet" :
<div id="here">here</div>
Si vous voulez qu'il défile lorsqu'un utilisateur clique sur un lien, vous pouvez simplement utiliser la méthode éprouvée :
<a href="#here">scroll to over there</a>
Pour le faire de manière programmatique, utilisez scrollIntoView()
document.getElementById("here").scrollIntoView()
Ceci est soutenu ( developer.mozilla.org/en-US/docs/Web/API/Element/scrollIntoView ). Je pense que vous n'avez pas bien lu la caniuse. Cependant, il ne sera pas animé. Plutôt un saut assez abrupt, ce qui n'est pas toujours génial.
+1 C'est probablement la meilleure réponse. Pas beaucoup de code et ne nécessite pas de plugin.
Notez que vous devrez peut-être recalculer le décalage lors du redimensionnement de la fenêtre.
En utilisant la méthode primitive de l'ancre nommée, vous pouvez avoir une URL qui inclut le hash, par exemple. mon-site.com/page-about/#123 La mise en signet comprend également le comportement hachage + scrollintoview.
<div id="idVal">
<!--div content goes here-->
</div>
...
<script type="text/javascript">
$(document).ready(function(){
var divLoc = $('#idVal').offset();
$('html, body').animate({scrollTop: divLoc.top}, "slow");
});
</script>
Cet exemple montre de localiser à un id div particulier c'est-à-dire, 'idVal' dans ce cas. Si vous avez des divs/tables successifs qui s'ouvriront dans cette page via ajax, alors vous pouvez attribuer des divs uniques et appeler le script pour faire défiler jusqu'à l'emplacement particulier pour chaque contenu de divs.
J'espère que cela vous sera utile.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
3 votes
Juste une petite note : l'attribut "name" n'est pas autorisé en XHTML 1.1 Strict, utilisez un ID à la place.
0 votes
Question intéressante, on ne peut pas utiliser les coordonnées de la page pour faire défiler ? Je pense qu'on devrait pouvoir le faire.
0 votes
J'ai obtenu une solution similaire à votre demande à [ici][1][1] : stackoverflow.com/questions/3432656/
0 votes
@mrblah votre problème est-il résolu ?