一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

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

时间:2017-03-01 编辑:简简单单 来源:一聚教程网

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

css代码:

 代码如下 复制代码

html,body {height:100%;}

body {margin:0px;}

div {height:100%;}

html代码:

 代码如下 复制代码

js代码:

 代码如下 复制代码

document.addEventListener("DOMContentLoaded",function() {

 varbody = document.body,

 html = document.documentElement;

 varitv, height = document.body.offsetHeight;

 varpage = scrollTop() / height | 0;

 //窗口大小改变事件

 addEventListener("resize", onresize,false);

 onresize();

 //滚轮事件

 document.body.addEventListener(

 "onwheel"indocument ?"wheel":"mousewheel",

 function(e) {

  clearTimeout(itv);

  itv = setTimeout(function() {

  vardelta = e.wheelDelta / 120 || -e.deltaY / 3;

  page -= delta;

  varmax = (document.body.scrollHeight / height | 0) - 1;

  if(page < 0)returnpage = 0;

  if(page > max)returnpage = max;

  move();

  }, 100);

  e.preventDefault();

 }

 );

 //平滑滚动

 functionmove() {

 varvalue = height * page;

 vardiff = scrollTop() - value;

 (functioncallee() {

  diff = diff / 1.2 | 0;

  scrollTop(value + diff);

  if(diff) itv = setTimeout(callee, 16);

 })();

 };

 //resize事件

 functiononresize() {

 height = body.offsetHeight;

 move();

 };

 //获取或设置scrollTop

 functionscrollTop(v) {

 if(v ==null)returnMath.max(body.scrollTop, html.scrollTop);

 elsebody.scrollTop = html.scrollTop = v;

 };

});

热门栏目