メモです

メモです

SafariでscrollToのbehavior:smoothが動作しないので代わりに書いた

SafariでscrollToのbehavior:smoothが動作しないのでネットで見つけたサイトを参考にしつつ関数を作った。

横方向にsmoothにスクロールする関数なのであまり使い道はない。
5とか15の数値は適当に決めた。
再帰を使うことで行数が減る。

const scroll_smooth_x = (target) => {
  let now = window.pageXOffset;
  const flag = (target < now) ? 'left' : 'right';
  
  const scrollMe = (now, target, flag) => {
    setTimeout(() => {
    if (target - now > 5) { 
      if (flag === 'left') { 
        now = now - (now - target) / 15; 
      } else if (flag === 'right') {
        now = now + (target - now) / 15;
    }
      window.scrollTo(now, 0);   
      scrollMe(now, target, flag);  
    } else {    
      scrollTo(target, 0);   
    }
    return;}, 5);
  }

  scrollMe(now, target, flag);
}

参考:
ページ内リンクをスマートにするsmoothScroll.js - to-R