原生js实现类似fullpage的单页/全屏滚动


Posted in Javascript onJanuary 22, 2017

前言

单页/全屏滚动页面越来越常见了,它多用于产品介绍、招聘等内容较少的简单页面。针对这种效果也出现了不少 jQuery 插件,本文实现的效果类似于fullpage的单屏滚动,使用原生JS实现,不依赖任何js库;

css代码:

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

html代码:

<div style="background:#FEE;"></div>
<div style="background:#EFE;"></div>
<div style="background:#EEF;"></div>
<div style="background:red;"></div>

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;
 };
});

在线演示请点击:这里

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

Javascript 相关文章推荐
newxtree.js代码
Mar 13 Javascript
javascript实现div浮动在网页最顶上并带关闭按钮效果实例
Aug 13 Javascript
Javascript模拟加速运动与减速运动代码分享
Dec 11 Javascript
JS判断是否360安全浏览器极速内核的方法
Jan 29 Javascript
Js实现无刷新删除内容
Apr 29 Javascript
jQuery实现在列表的首行添加数据
May 19 Javascript
JS仿淘宝实现的简单滑动门效果代码
Oct 14 Javascript
AngularJS 与百度地图的结合实例
Oct 20 Javascript
Bootstrap实现可折叠分组侧边导航菜单
Mar 07 Javascript
解决vue select当前value没有更新到vue对象属性的问题
Aug 30 Javascript
微信小程序实现滑动翻页效果(完整代码)
Dec 06 Javascript
vue实现简单瀑布流布局
May 28 Javascript
前端开发必知的15个jQuery小技巧
Jan 22 #Javascript
Vue.js学习之过滤器详解
Jan 22 #Javascript
Jquery与Bootstrap实现后台管理页面增删改查功能示例
Jan 22 #Javascript
Ionic 2 实现列表滑动删除按钮的方法
Jan 22 #Javascript
Vue.js学习之计算属性
Jan 22 #Javascript
ionic中列表项增加和删除的实现方法
Jan 22 #Javascript
JQueryEasyUI框架下的combobox的取值和绑定的方法
Jan 22 #Javascript
You might like
再说下636单管机
2021/03/02 无线电
自己写的php curl库实现整站克隆功能
2015/02/12 PHP
php实现字符串首字母转换成大写的方法
2015/03/17 PHP
PHP的介绍以及优势详细分析
2019/09/05 PHP
js操作Xml(向服务器发送Xml,处理服务器返回的Xml)(IE下有效)
2009/01/30 Javascript
JavaScript在IE和Firefox浏览器下的7个差异兼容写法小结
2010/06/18 Javascript
js禁止小键盘输入数字功能代码
2011/08/01 Javascript
JQuery的ready函数与JS的onload的区别详解
2013/11/21 Javascript
JQuery中dataGrid设置行的高度示例代码
2014/01/03 Javascript
js用Date对象的setDate()函数对日期进行加减操作
2014/09/18 Javascript
jquery中$each()方法的使用指南
2015/04/30 Javascript
AngularJS实现单独作用域内的数据操作
2016/09/05 Javascript
利用node.js搭建简单web服务器的方法教程
2017/02/20 Javascript
详解在vue-cli中引用jQuery、bootstrap以及使用sass、less编写css
2017/11/08 jQuery
Vue2.0中集成UEditor富文本编辑器的方法
2018/03/03 Javascript
vue-router 源码之实现一个简单的 vue-router
2018/07/02 Javascript
微信小程序用户拒绝授权的处理方法详解
2019/09/20 Javascript
[02:05:03]完美世界DOTA2联赛循环赛 LBZS VS Matador BO2 10.28
2020/10/28 DOTA
简单介绍Python的轻便web框架Bottle
2015/04/08 Python
详解Python import方法引入模块的实例
2017/08/02 Python
python入门前的第一课 python怎样入门
2018/03/06 Python
对Python subprocess.Popen子进程管道阻塞详解
2018/10/29 Python
python实现单链表的方法示例
2019/09/03 Python
10个python3常用排序算法详细说明与实例(快速排序,冒泡排序,桶排序,基数排序,堆排序,希尔排序,归并排序,计数排序)
2020/03/17 Python
Django nginx配置实现过程详解
2020/09/10 Python
HTML5 Canvas绘制圆点虚线实例
2015/01/01 HTML / CSS
会计实习生工作总结的自我评价
2013/10/07 职场文书
信息专业大学生自我评价分享
2014/01/17 职场文书
优秀的应届生自荐信
2014/05/23 职场文书
汽车专业求职信
2014/06/05 职场文书
借款协议书
2014/09/16 职场文书
个人批评与自我批评材料
2014/10/17 职场文书
班主任工作实习计划
2015/01/16 职场文书
新年祝酒词大全
2015/08/11 职场文书
python基础之爬虫入门
2021/05/10 Python
用python开发一款操作MySQL的小工具
2021/05/12 Python