摘要:使用说明函数调用参数说明大盒子标签名大盒子名大盒子类名侧导航每层盒子标签名侧导航每层盒子名侧导航每层盒子类名任选一个传入兼容性兼容火狐及以上。如果想兼容最好传或者标签名类名没做处理或者可以自己再处理一下。这里写上面封装的函数
使用说明
函数调用 new FullScreenScroll(obj)兼容性
obj 参数说明:
{
outerTag: "大盒子标签名(String)",
outerId: "大盒子id名(String)",
outerClass: "大盒子类名(String)",
tipTag: "侧导航每层盒子标签名(String)",
tipId: "侧导航每层盒子id名(String)",
tipClass: "侧导航每层盒子类名(String)"
}
Tag、Id、Class任选一个传入
兼容 Google、火狐、IE7及以上。js代码如下
如果想兼容IE最好传id或者标签名 类名没做处理 或者可以自己再处理一下。
function FullScreenScroll(obj){ // 外层盒子 if(obj.outerTag){ this.ul = document.getElementsByTagName(obj.outerTag)[0]; }else if(obj.outerId){ this.ul = document.getElementById(obj.outerId); }else{ this.ul = document.querySelector("."+obj.outerClass); } // 内层每层盒子 this.ulli = this.ul.children; // 侧导航每层盒子 if(obj.tipTag){ this.ol = document.getElementsByTagName(obj.tipTag)[0]; }else if(obj.tipId){ this.ol = document.getElementById(obj.tipId); }else{ this.ol = document.querySelector("."+obj.tipClass); } this.olli = this.ol.children; // 定时器 this.timer = null; // 控制滚动的开关 防止滑动过快 this.flag = true; // 获取卷去的高度 兼容写法 this.docTop = document.documentElement.scrollTop||document.body.scrollTop; // 规定盒子的初始位置的下标 this.num = Math.round(this.docTop/this.ulli[0].offsetHeight); // 初始化元素信息 this.eleInit() // 初始化函数 this.init() var _this = this this.addEvent(window,"resize",function(){ for(var i=0;i<_this.ulli.length;i++){ _this.ulli[i].style.height = document.documentElement.clientHeight + "px"; } }) } // 初始化元素信息 FullScreenScroll.prototype.eleInit = function(){ this.ul.style.height = document.documentElement.clientHeight*this.ulli.length + "px"; } // 初始化函数 FullScreenScroll.prototype.init = function(){ // 给每个侧导航添加点击事件 for(var i=0;iHTML、CSS代码0){ _this.num--; }else{ _this.num=0 } var target = _this.num*_this.ulli[0].offsetHeight _this.move(target) } },function(){ // 向下滚动处理函数 if(_this.flag){ _this.flag = false; clearInterval(_this.timer) if(_this.num<_this.ulli.length-1){ _this.num++; }else{ _this.num=_this.ulli.length-1; } var target = _this.num*_this.ulli[0].offsetHeight; _this.move(target) } }) } // 每屏运动的函数 target 滚动结束位置 FullScreenScroll.prototype.move = function(target){ var _this = this; this.timer = setInterval(function(){ // 滚动起点 // var leader = document.documentElement.scrollTop||document.body.scrollTop; var leader = _this.ul.offsetTop; // 步长 距离/n var step = (-target-leader)/10; // 当步长过小时 根据向上运动(step<0)或向下运动(step>0) 即 target-leader 大于0或小于0 向上取整或向下取整控制步长,否则步长一直减小,不会到达终点。 step = step>0?Math.ceil(step):Math.floor(step); // 判断是否到达终点 // 会有 target-leader 不够一个步长的情况 这个时候会发生抖动 if(Math.abs(-target-leader) 0){ upfn(); }else{ downfn(); } } } // 监听事件兼容写法 obj 操作对象 type 事件类型 fn 回调函数 FullScreenScroll.prototype.addEvent = function(obj,type,fn){ if(document.addEventListener){ obj.addEventListener(type,fn,false); }else{ obj.attachEvent("on"+type,fn); } } // 调用 new FullScreenScroll({ outerTag:"ul", tipTag:"ol" })
当然啦! html和css就需要自己写了。
这里有一个简单的丑陋的dome。
Document
- 1
- 2
- 3
- 4
- 5
- 1
- 2
- 3
- 4
- 5
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/104804.html
摘要:这篇文章将介绍如何使用原生主要使用语法实现全屏滚动插件,兼容手机触屏,触摸板优化,支持自定义页面动画,压缩后文件只有。 这篇文章将介绍如何使用原生 JS (主要使用 ES6 语法)实现全屏滚动插件,兼容 IE 10+、手机触屏,Mac 触摸板优化,支持自定义页面动画,压缩后 gzip 文件只有 2.15KB。完整源码在这 pure-full-page,点这查看 demo。 1)前面的话...
原文链接:https://github.com/AlloyTeam/AlloyTouch/wiki/AlloyTouch-FullPage-Plugin 先验货 showImg(https://segmentfault.com/img/remote/1460000007885626?w=280&h=280); 插件代码可以在这里找到。 注意,虽然是扫码体验,但是AlloyTouch.FullPag...
阅读 2734·2021-09-24 10:34
阅读 1836·2021-09-22 10:02
阅读 2228·2021-09-09 09:33
阅读 1441·2021-08-13 15:02
阅读 3250·2020-12-03 17:10
阅读 1140·2019-08-30 15:44
阅读 2129·2019-08-30 12:58
阅读 3215·2019-08-26 13:40