ホームページ >ウェブフロントエンド >フロントエンドQ&A >プラグインなしのjQuery全画面スクロール

プラグインなしのjQuery全画面スクロール

王林
王林オリジナル
2023-05-18 20:31:10447ブラウズ

Web テクノロジーの継続的な発展に伴い、全画面スクロール効果を使用する Web サイトがますます増えており、ユーザーは 1 ページ内で複数のコンテンツ領域を閲覧できます。この効果を実現するには多くの方法がありますが、最も一般的に使用される方法は jQuery プラグインを使用することです。しかし、今日紹介したいのは、jQueryプラグインを使わずに全画面スクロールを実現する方法です。

  1. HTML 構造

まず、Web サイトの HTML 構造を決定する必要があります。この例では、最初の画面の背景として画像を使用し、2 番目の画面にテキストを表示します。したがって、HTML 構造は次のようになります。

<body>
  <div class="section section-1">
    <div class="bg-img"></div>
  </div>
  <div class="section section-2">
    <div class="text"></div>
  </div>
</body>

ページ全体が 2 つの部分に分割されており、各部分がセクションであり、最初の画面の背景が .bg-div を含むウィンドウであることがわかります。 2 番目の画面にはクラス .text の div が含まれています。

  1. CSS スタイル

次に、ページにスタイルを追加する必要があります。ページの高さをブラウザ ウィンドウの高さに設定し、各セクションの高さを 100% に設定する必要があります。同時に、後でページをスクロールできるように、すべてのセクションの位置を絶対位置に設定する必要があります。

html,
body {
  height: 100%;
  margin: 0;
  padding: 0;
}

.section {
  height: 100%;
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
}

.section-1 {
  background-color: #f9f9f9;
}

.bg-img {
  background-image: url('https://picsum.photos/1920/1080');
  background-size: cover;
  background-position: center;
  height: 100%;
}

.section-2 {
  background-color: #fff;
}
  1. JavaScript コード

次に、ページのスクロールを実現するために、JavaScript コードを Web サイトに追加する必要があります。マウス ホイールまたはキーボードの上下矢印を使用してページをスクロールできます。

var sectionIndex = 0;
var sections = $('.section');
var totalSections = sections.length;

$(document).on('mousewheel DOMMouseScroll', function (e) {
  if (e.originalEvent.wheelDelta > 0 || e.originalEvent.detail < 0) {
    //向上滚动
    sectionIndex--;
  } else {
    //向下滚动
    sectionIndex++;
  }
  if (sectionIndex < 0) {
    sectionIndex = 0;
  }
  if (sectionIndex > totalSections - 1) {
    sectionIndex = totalSections - 1;
  }
  scrollToSection(sectionIndex);
});

$(document).keydown(function (e) {
  switch (e.which) {
    case 38: //向上箭头
      sectionIndex--;
      break;
    case 40: //向下箭头
      sectionIndex++;
      break;   
    default:
      return; 
  }
  if (sectionIndex < 0) {
    sectionIndex = 0;
  }
  if (sectionIndex > totalSections - 1) {
    sectionIndex = totalSections - 1;
  }
  scrollToSection(sectionIndex);    
});

function scrollToSection(sectionIndex) {
  $('html, body').animate({
    scrollTop: sections.eq(sectionIndex).offset().top
  }, 500);
}

後続のスクロールのために現在の画面位置を記録するために、sectionIndex 変数を定義します。また、すべてのセクション要素を保存するために、sections 変数を定義し、セクションの数を記録するために、totalSections 変数を定義します。

次に、マウスホイールとキーボードの上下矢印のイベントリスナーを追加し、ユーザーがスクロールするときにsectionIndexを増減させ、sectionIndexの値が総画面数を超えているかどうかを確認します。私たちが見ている画面は確かに合法です。最後に、scrollToSection 関数を呼び出して、目的の画面にジャンプします。

scrollToSection 関数は、jQuery の animate メソッドを使用して、指定されたセクションの位置までスムーズにスクロールします。必要に応じてスクロール時間を変更することもできます。

  1. 結果表示

ついに、jQuery プラグインを使用する必要のない全画面スクロール効果の実装に成功しました。その効果は次のとおりです。

  1. 概要

この記事では、純粋な JavaScript と jQuery を使用して、全画面スクロール効果、実装効果も発揮します。 jQuery プラグインを使用すると実装が簡単になりますが、ネイティブ JavaScript を使用すると、コードの背後にある動作原理とロジックをより深く理解できるようになり、スクロール効果をより柔軟にカスタマイズできるようになります。

以上がプラグインなしのjQuery全画面スクロールの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。