J'ai un div sur ma page:
<div id='div1' style='overflow:scroll;overflow-x:hidden;max-height:200px;'></div>
Comment puis-je faire le div défiler vers le bas de la div? Pas la page, juste la DIV.
Les autres solutions ici ne fonctionnent pas réellement pour les divs avec beaucoup de contenu - cela "maxes" défiler jusqu'à la hauteur de la div (au lieu de la hauteur de la conten de la div). Ainsi, ils fonctionneront, à moins que vous n'ayez plus du double de la hauteur du contenu de la div à l'intérieur.
Voici la version correcte:
$('#div1').scrollTop($('#div1')[0].scrollHeight);
ou version jQuery 1.6+:
var d = $('#div1');
d.scrollTop(d.prop("scrollHeight"));
Ou animé:
$("#div1").animate({ scrollTop: $('#div1').prop("scrollHeight")}, 1000);
Toutes les réponses que je peux voir ici, y compris celle qui est actuellement "acceptée", sont en fait fausses en ce qu'elles définissent:
scrollTop = scrollHeight
Considérant que la bonne approche consiste à définir:
scrollTop = scrollHeight - clientHeight
En d'autres termes:
$('#div1').scrollTop($('#div1')[0].scrollHeight - $('#div1')[0].clientHeight);
Ou animé:
$("#div1").animate({
scrollTop: $('#div1')[0].scrollHeight - $('#div1')[0].clientHeight
}, 1000);
UPDATE: voir solution de Mike Todd pour une réponse complète.
$("#div1").animate({ scrollTop: $('#div1').height()}, 1000);
si vous souhaitez l'animer (plus de 1000 millisecondes).
$('#div1').scrollTop($('#div1').height())
si vous le voulez instantanément.
$(window).load(function() {
$("html, body").animate({ scrollTop: $(document).height() }, 1000);
});
Ceci saisit la hauteur de la page et la fait défiler une fois la fenêtre chargée. Changez le 1000
en tout ce dont vous avez besoin pour le faire plus vite/plus lentement une fois la page prête.
essaye ça:
$('#div1').scrollTop( $('#div1').height() )
Faites défiler la fenêtre jusqu'au bas de la div cible.
function scrollToBottom(id){
div_height = $("#"+id).height();
div_offset = $("#"+id).offset().top;
window_height = $(window).height();
$('html,body').animate({
scrollTop: div_offset-window_height+div_height
},'slow');
}
scrollToBottom('call_div_id');
pour animate in jquery (version> 2.0)
var d = $('#div1');
d.animate({ scrollTop: d.prop('scrollHeight') }, 1000);
Ce qui suit fonctionnera. Veuillez noter [0]
et scrollHeight
$("#myDiv").animate({ scrollTop: $("#myDiv")[0].scrollHeight }, 1000);
Rien de tout cela n'a fonctionné pour moi, j'ai un système de messagerie dans une application Web similaire à Facebook Messenger et je voulais que les messages apparaissent au bas d'une div.
Cela a fonctionné un régal, Javascript de base.
window.onload=function () {
var objDiv = document.getElementById("MyDivElement");
objDiv.scrollTop = objDiv.scrollHeight;
}
Je travaille dans une ancienne base de code essayant de migrer vers Vue.
Dans ma situation particulière (div scrollable enveloppé dans un modal bootstrap), un v-if a montré un nouveau contenu, ce que je voulais que la page fasse défiler vers le bas. Pour que ce comportement fonctionne, je devais attendre que vue finisse de rendre le rendu, puis utiliser jQuery pour faire défiler jusqu'au bas du modal.
Alors...
this.$nextTick(function() {
$('#thing')[0].scrollTop = $('#thing')[0].scrollHeight;
})
Vous pouvez vérifier scrollHeight et clientHeight avec scrollTop pour faire défiler jusqu'au bas de div, comme le code ci-dessous.
$('#div').scroll(function (event) {
if ((parseInt($('#div')[0].scrollHeight) - parseInt(this.clientHeight)) == parseInt($('#div').scrollTop()))
{
console.log("this is scroll bottom of div");
}
});
Vous pouvez utiliser le code ci-dessous pour faire défiler la page jusqu'au bas de la page.
$(document).ready(function(){
$('div').scrollTop($('div').scrollHeight);
});