フルページと同様のシングルページ/フルスクリーンスクロールをネイティブjsで実装する方法について

不言
リリース: 2018-06-26 15:37:59
オリジナル
1722 人が閲覧しました

この記事では、フルページと同様の全画面スクロールを実現するためのネイティブ js の実装方法を主に紹介します。この記事には、すべての人の理解と学習に一定の参考価値があると思います。以下を見てみましょう。

はじめに

単一ページ/全画面スクロールのページは、主に製品紹介や採用情報などのコンテンツが少ないシンプルなページに使用されることが多くなっています。この効果のために多くの jQuery プラグインが登場しています。この記事で実現される効果は、ネイティブ JS を使用して実装されており、

CSS コードに依存しません。

html,body {height:100%;}
body {margin:0px;}
p {height:100%;}
ログイン後にコピー

HTMLコード:

<p style="background:#FEE;"></p>
<p style="background:#EFE;"></p>
<p style="background:#EEF;"></p>
<p style="background:red;"></p>
ログイン後にコピー

jsコード:

document.addEventListener("DOMContentLoaded", function() {
 var body = document.body,
 html = document.documentElement;
 var itv, height = document.body.offsetHeight;
 var page = scrollTop() / height | 0;
 //窗口大小改变事件
 addEventListener("resize", onresize, false);
 onresize();
 //滚轮事件
 document.body.addEventListener(
 "onwheel" in document ? "wheel" : "mousewheel",
 function(e) {
  clearTimeout(itv);
  itv = setTimeout(function() {
  var delta = e.wheelDelta / 120 || -e.deltaY / 3;
  page -= delta;
  var max = (document.body.scrollHeight / height | 0) - 1;
  if (page < 0) return page = 0;
  if (page > max) return page = max;
  move();
  }, 100);
  e.preventDefault();
 }
 );
 //平滑滚动
 function move() {
 var value = height * page;
 var diff = scrollTop() - value;
 (function callee() {
  diff = diff / 1.2 | 0;
  scrollTop(value + diff);
  if (diff) itv = setTimeout(callee, 16);
 })();
 };
 //resize事件
 function onresize() {
 height = body.offsetHeight;
 move();
 };
 //获取或设置scrollTop
 function scrollTop(v) {
 if (v == null) return Math.max(body.scrollTop, html.scrollTop);
 else body.scrollTop = html.scrollTop = v;
 };
});
ログイン後にコピー

以上がこの記事の内容の全てだと思います。みんなの勉強に役立ちますその他の関連コンテンツについては、PHP 中国語 Web サイトに注目してください。

関連する推奨事項:

iframe が JS 経由で読み込まれているかどうかを判断する方法

JS を使用して模倣 WeChat 支払いポップアップ ウィンドウ機能を実装する方法

シンプルなボックスを作成するための JavaScript についてチャート

以上がフルページと同様のシングルページ/フルスクリーンスクロールをネイティブjsで実装する方法についての詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート