Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

jQuery: Scroll to the center of the element

I am working on a jQuery function that scrolls to the div on click. Right now it will scroll to the top, I was wondering if their was a way to make it scroll to the center of $('.scrollit') instead of top, or possibly a way to offset it by some pixel amount?

$(".playbox").on('click', function () {
    $('.scrollit').animate({
        scrollTop: $(this).offset().top
    }, 1000);
like image 315
Jeff Avatar asked Jun 26 '16 06:06

Jeff


2 Answers

You can use the height of the element.

scrollTop: $(this).offset().top + $(this).height() / 2;

Add the half of the height of the element to the scrollTop to scroll to the center of the element.

like image 188
Tushar Avatar answered Oct 13 '22 08:10

Tushar


There are two major difference to the other answer. Its relevant if you add or remove offset, so I exchange the plus with a minus. And I use the screen size as reference and not the element. To animate the scrolling and wrap in a function is optional.

function scrollTo (id) {
   $('html,body').animate({
      scrollTop: $("#"+id).offset().top - $(window).height()/2
   }, 1000);
}
like image 30
and-bri Avatar answered Oct 13 '22 07:10

and-bri