技術系

自動スクロールを実装②

技術系

こんにちは、なかにしです。

今回はいよいよ本題!
自動スクロールを実装していきます。

JSとJquery、両方で実装していきます!

JSで実装

▽こんな感じです

<!DOCTYPE html>
<html lang="ja">

  <head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Scroll-JS</title>

    <link rel="stylesheet" href="./index.css">
    <script src="./index.js" defer></script>
  </head>

  <body>
    <div class="top _1">
      <p>こんにちは。</p>
    </div>
    <div class="top _2">
      <p>こんにちは。</p>
    </div>
    <div class="top _3">
      <p id="jump">ここに飛びたいな</p>
    </div>
    <div class="top _4">
      <p>こんにちは。</p>
    </div>
    <div class="top _5">
      <p>こんにちは。</p>
    </div>

    <button onclick="topScroll()">途中に飛ばす</button>
  </body>

</html>
html {
  scroll-behavior: smooth;
}

body {
  margin: 0;
}

p {
  margin: 0;
}

.top {
  width: 100vw;
  height: 500px;
}

._1 {
  background-color: #82D9FA;
}

._2 {
  background-color: #6BA1E3;
}

._3 {
  background-color: #7790FD;
}

._4 {
  background-color: #6BE1E3;
}

._5 {
  background-color: #77FDDA;
}
let i = 0;

let start = function () {
  scrollTo(0, i);

  i = i + 5;

  if (
    window.scrollY >=
    document.documentElement.scrollHeight -
      document.documentElement.clientHeight
  ) {
  } else {
    window.requestAnimationFrame(start);
  }
};

window.setTimeout(start, 1000);

▽動作確認

Jqueryで実装

やり方は以下です。

①スクロール先の座標を取得
②ページ読み込み後、animationメソッドでスクロール

▽こんな感じ

<!DOCTYPE html>
<html lang="ja">

  <head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="./index.css">
    <title>Scroll-Jquery</title>

    <script src="https://code.jquery.com/jquery-3.6.1.js"
      integrity="sha256-3zlB5s2uwoUzrXK3BT7AX3FyvojsraNFxCc2vC/7pNI=" crossorigin="anonymous"></script>
    <script src="./index.js"></script>
  </head>

  <body>
    <div class="top _1">
      <p>こんにちは。</p>
    </div>
    <div class="top _2">
      <p>こんにちは。</p>
    </div>
    <div class="top _3">
      <p id="jump">ここに飛びたいな</p>
    </div>
    <div class="top _4">
      <p>こんにちは。</p>
    </div>
    <div class="top _5">
      <p>こんにちは。</p>
    </div>

    <button id="scroll">途中に飛ばす</button>
  </body>

</html>
html {
  scroll-behavior: smooth;
}

body {
  margin: 0;
}

p {
  margin: 0;
}

.top {
  width: 100vw;
  height: 500px;
}

._1 {
  background-color: #82D9FA;
}

._2 {
  background-color: #6BA1E3;
}

._3 {
  background-color: #7790FD;
}

._4 {
  background-color: #6BE1E3;
}

._5 {
  background-color: #77FDDA;
}
$(function () {
  const position = $(document).height() - $(window).height();
  $("html,body").animate({ scrollTop: position }, 20000, "linear", function () {
    console.log("completed!");
  });
});

▽動作確認

さいごに

自動スクロールの実装を思いついたきっかけは「Discordの謝辞のページ」という話をしましたが、実装の為にDiscordを調べていると、面白いところを見つけました。

謝辞のページで開発ツールを開いてみると…

注意喚起もびっくりしましたが、
最後に求人してました。

確かに開発者ツールはエンジニアくらいしか開かないもんな~

こういう奇抜なアイディアを出す人も、
それを許可する会社も本当に素敵だと思います。

さすがですね、Discordさん!
これからも愛用させていただきます🙌

今回はここまで!
Enjoy Hacking!!

タイトルとURLをコピーしました