纯JS 全屏滚动 / 整屏翻页

2024-03-13 14:48
文章标签 js 滚动 全屏 翻页 整屏

本文主要是介绍纯JS 全屏滚动 / 整屏翻页,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

###在线演示
http://ftp592347.host584.zhujiwu.me/js-fullpage/index.html
###知识点总结

  1. 当需要制作转动鼠标滚轮放大页面字体这样的交互效果时,会用到 Mousewheel 事件。其实在大多数浏览器(IE6, IE7, IE8, Opera 10+, Safari 5+)中,都提供了 “mousewheel” 事件。但杯具的是 Firefox 3.5+ 却不支持此事件,不过庆幸 Firefox 3.5+ 中提供了另外一个等同的事件:”DOMMouseScroll”
  2. mousewheel事件中的 “event.wheelDelta” 属性值:返回的如果是正值说明滚轮是向上滚动;
  3. DOMMouseScroll事件中的 “event.detail” 属性值:返回的如果是负值说明滚轮是向上滚动
    这个适用于pc,移动端代码见https://blog.csdn.net/tangdou5682/article/details/93754333,利用touch事件与scrollTo

###html代码

<div id="wrap"><div id="main"><div id="page1" class="page"></div><div id="page2" class="page"></div><div id="page3" class="page"></div><div id="page4" class="page"></div></div>
</div>

###css

<style type="text/css">
html,body{height:100%;
}
body,ul,li,a,p,div{padding:0px; margin:0px; font-size:14px;}
#wrap{overflow: hidden;width:100%;
}
#main{height:2944px;top:0;position: relative;
}
.page{width:100%;margin:0;
}
#page1{background:#E4E6CE;
}
#page2{background:#6CE26C;
}
#page3{background:#BF4938;
}
#page4{background:#2932E1;
}
</style>

###javascritpt

<script type="text/javascript">var wrap = document.getElementById("wrap");var main = document.getElementById("main");var hei = document.body.clientHeight;wrap.style.height = hei + "px";var obj = document.getElementsByTagName("div");for(var i=0;i<obj.length;i++){if(obj[i].className == 'page'){obj[i].style.height = hei + "px";}}//如果不加时间控制,滚动会过度灵敏,一次翻好几屏var startTime = 0, //翻屏起始时间  endTime = 0,  now = 0;     //浏览器兼容      if ((navigator.userAgent.toLowerCase().indexOf("firefox")!=-1)){   document.addEventListener("DOMMouseScroll",scrollFun,false);        }  else if (document.addEventListener) {  document.addEventListener("mousewheel",scrollFun,false);  }  else if (document.attachEvent) {  document.attachEvent("onmousewheel",scrollFun);   }  else{  document.onmousewheel = scrollFun;  }  //滚动事件处理函数function scrollFun(event){startTime = new Date().getTime();  var delta = event.detail || (-event.wheelDelta);  //mousewheel事件中的 “event.wheelDelta” 属性值:返回的如果是正值说明滚轮是向上滚动//DOMMouseScroll事件中的 “event.detail” 属性值:返回的如果是负值说明滚轮是向上滚动if ((endTime - startTime) < -1000){if(delta>0 && parseInt(main.offsetTop) > -(hei*3)){//向下滚动now = now - hei;toPage(now);} if(delta<0 && parseInt(main.offsetTop) < 0){//向上滚动now = now + hei;toPage(now);}endTime = new Date().getTime();  }else{  event.preventDefault();    }    }function toPage(now){        $("#main").animate({top:(now+'px')},1000);     //jquery实现动画效果//setTimeout("main.style.top = now + 'px'",1000);     javascript 实现动画效果}   
</script>

请认真看注释和知识点,有什么问题或建议,欢迎留言V

这篇关于纯JS 全屏滚动 / 整屏翻页的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/805218

相关文章

JS+HTML实现在线图片水印添加工具

《JS+HTML实现在线图片水印添加工具》在社交媒体和内容创作日益频繁的今天,如何保护原创内容、展示品牌身份成了一个不得不面对的问题,本文将实现一个完全基于HTML+CSS构建的现代化图片水印在线工具... 目录概述功能亮点使用方法技术解析延伸思考运行效果项目源码下载总结概述在社交媒体和内容创作日益频繁的

Node.js 数据库 CRUD 项目示例详解(完美解决方案)

《Node.js数据库CRUD项目示例详解(完美解决方案)》:本文主要介绍Node.js数据库CRUD项目示例详解(完美解决方案),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考... 目录项目结构1. 初始化项目2. 配置数据库连接 (config/db.js)3. 创建模型 (models/

使用Node.js制作图片上传服务的详细教程

《使用Node.js制作图片上传服务的详细教程》在现代Web应用开发中,图片上传是一项常见且重要的功能,借助Node.js强大的生态系统,我们可以轻松搭建高效的图片上传服务,本文将深入探讨如何使用No... 目录准备工作搭建 Express 服务器配置 multer 进行图片上传处理图片上传请求完整代码示例

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放

Node.js net模块的使用示例

《Node.jsnet模块的使用示例》本文主要介绍了Node.jsnet模块的使用示例,net模块支持TCP通信,处理TCP连接和数据传输,具有一定的参考价值,感兴趣的可以了解一下... 目录简介引入 net 模块核心概念TCP (传输控制协议)Socket服务器TCP 服务器创建基本服务器服务器配置选项服

mac安装nvm(node.js)多版本管理实践步骤

《mac安装nvm(node.js)多版本管理实践步骤》:本文主要介绍mac安装nvm(node.js)多版本管理的相关资料,NVM是一个用于管理多个Node.js版本的命令行工具,它允许开发者在... 目录NVM功能简介MAC安装实践一、下载nvm二、安装nvm三、安装node.js总结NVM功能简介N

禁止HTML页面滚动的操作方法

《禁止HTML页面滚动的操作方法》:本文主要介绍了三种禁止HTML页面滚动的方法:通过CSS的overflow属性、使用JavaScript的滚动事件监听器以及使用CSS的position:fixed属性,每种方法都有其适用场景和优缺点,详细内容请阅读本文,希望能对你有所帮助... 在前端开发中,禁止htm

前端原生js实现拖拽排课效果实例

《前端原生js实现拖拽排课效果实例》:本文主要介绍如何实现一个简单的课程表拖拽功能,通过HTML、CSS和JavaScript的配合,我们实现了课程项的拖拽、放置和显示功能,文中通过实例代码介绍的... 目录1. 效果展示2. 效果分析2.1 关键点2.2 实现方法3. 代码实现3.1 html部分3.2

JS 实现复制到剪贴板的几种方式小结

《JS实现复制到剪贴板的几种方式小结》本文主要介绍了JS实现复制到剪贴板的几种方式小结,包括ClipboardAPI和document.execCommand这两种方法,具有一定的参考价值,感兴趣的... 目录一、Clipboard API相关属性方法二、document.execCommand优点:缺点:

Node.js 中 http 模块的深度剖析与实战应用小结

《Node.js中http模块的深度剖析与实战应用小结》本文详细介绍了Node.js中的http模块,从创建HTTP服务器、处理请求与响应,到获取请求参数,每个环节都通过代码示例进行解析,旨在帮... 目录Node.js 中 http 模块的深度剖析与实战应用一、引言二、创建 HTTP 服务器:基石搭建(一