Webサイトでファーストビューを見せてから自動スクロールする方法

JavaScriptで数秒後に自動スクロール

Webサイトでファーストビューを見せてから自動スクロールすることがある。

ファーストビューで動画やCSSアニメーションを見せて、その後特定の要素に自動スクロールさせる処理が多い。

このような処理はjQueryを使用すると少ないコード量で簡単に実装できる。

コードは以下の通り。

$(window).scrollTop()が0でobserverでターゲットの要素(.second)が見えていないときのみ自動スクロールが2秒後に実行されるようにしている。

observer.observeはobserver.observe($('.second'))のようにjQueryで書くと動かないので注意。

const second = document.querySelector('.second')
const windowScrollTop = $(window).scrollTop()
const observer = new IntersectionObserver(function(changes)  {
  for (let i in changes) {
    if (windowScrollTop === 0 && !changes[i].isIntersecting) {
      setTimeout(() => {
        const secondTop = $('.second').offset().top
        $('html, body').animate({scrollTop: secondTop})
        observer.disconnect()
      }, 2000)
    }
  }
})
observer.observe(second)

数秒後に自動スクロールするサンプル