首頁 > web前端 > js教程 > 主體

關於原生js實作類似fullpage的單頁/全螢幕滾動的方法

不言
發布: 2018-06-26 15:37:59
原創
1723 人瀏覽過

這篇文章主要介紹了利用原生js實現類似fullpage的全屏滾動的實現方法,文中給出了完整的實例代碼,相信對大家的理解和學習具有一定的參考價值,需要的朋友們可以參考借鑒,下面來一起看看吧。

前言

單頁/全螢幕捲動頁面越來越常見了,它多用於產品介紹、招募等內容較少的簡單頁面。針對這種效果也出現了不少jQuery 插件,本文實現的效果類似fullpage的單一螢幕滾動,使用原生JS實現,不依賴任何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中文網!

相關推薦:

如何透過JS判斷iframe是否載入完成

#如何利用JS實作仿微信支付彈窗功能

關於JavaScript製作簡單的方塊選圖表

############################################### #

以上是關於原生js實作類似fullpage的單頁/全螢幕滾動的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板