madebysource / animated-scrollto

Animated scrolling without any dependency on libraries
MIT License
319 stars 57 forks source link

chrome browser zoom, scroll failure. #5

Open jaywcjlove opened 10 years ago

jaywcjlove commented 10 years ago

Mac osx 10.9.4 chrome version 37.0.2062.94 chrome browser zoom, scroll failure. _2014-09-08_2_23_58

nrei0 commented 6 years ago

Still have a problem.

nrei0 commented 6 years ago

Did my own implementation. There can be some optimization tricks. Beside, it should work only on scroll to bottom.

function scrollTo(docEl, to, duration) {
  let t0 = Date.now();
  const diff = (to - docEl.scrollTop);
  const speed = diff / duration;

  const interval = setInterval(() => {
    const t1 = Date.now();
    const delta = t1 - t0;

    docEl.scrollTop += (speed * delta);

    if (to - docEl.scrollTop <= 0) {
      docEl.scrollTop = to;
      clearInterval(interval);
      return;
    }

    t0 = t1;
  }, 0);
}

scrollTo(docEl, docEl.scrollTop + top, duration);