Sans utiliser le populaire plugin scrollTo, comment puis-je faire défiler jusqu’au milieu vertical (50%) de la page / div?
Cela fait défiler le défilement interne d’une div jusqu’à sa moitié verticale
var myDiv = $("#yourdiv"); var scrollto = myDiv.offset().top + (myDiv.height() / 2); myDiv.animate({ scrollTop: scrollto});
$("#centralize-ver").click(function(){//centralize vertical var scrollableDivJ=$("#scroll-div"); scrollableDivJ.scrollTop("1000000");//scroll to max var scrollHeight=scrollableDivJ.prop("scrollHeight"); var diff=(scrollHeight-scrollableDivJ.scrollTop())/2; var middle=scrollHeight/2-diff; scrollableDivJ.scrollTop(middle); });
$("#centralize-hor").click(function(){//centralize horizontal var scrollableDivJ=$("#scroll-div"); scrollableDivJ.scrollLeft("1000000");//scroll to max var scrollWidth=scrollableDivJ.prop("scrollWidth"); var diff=(scrollWidth-scrollableDivJ.scrollLeft())/2; var middle=scrollWidth/2-diff; scrollableDivJ.scrollLeft(middle); });
Remplacez “# scroll-div” par votre div. “body” ne fonctionne pas pour moi.
jsfiddle
C’est la seule solution qui fonctionne correctement pour moi. En fait, c’est une solution de 2h-try’n’error qui fait assez bien son travail. Peut-être que quelqu’un pourrait expliquer pourquoi scrollTop n’atteint jamais la valeur de prop (“scrollheight”) et que le calcul écrit de diff et middle est nécessaire.