纯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

相关文章

html 滚动条滚动过快会留下边框线的解决方案

《html滚动条滚动过快会留下边框线的解决方案》:本文主要介绍了html滚动条滚动过快会留下边框线的解决方案,解决方法很简单,详细内容请阅读本文,希望能对你有所帮助... 滚动条滚动过快时,会留下边框线但其实大部分时候是这样的,没有多出边框线的滚动条滚动过快时留下边框线的问题通常与滚动条样式和滚动行

使用Python获取JS加载的数据的多种实现方法

《使用Python获取JS加载的数据的多种实现方法》在当今的互联网时代,网页数据的动态加载已经成为一种常见的技术手段,许多现代网站通过JavaScript(JS)动态加载内容,这使得传统的静态网页爬取... 目录引言一、动态 网页与js加载数据的原理二、python爬取JS加载数据的方法(一)分析网络请求1

uniapp小程序中实现无缝衔接滚动效果代码示例

《uniapp小程序中实现无缝衔接滚动效果代码示例》:本文主要介绍uniapp小程序中实现无缝衔接滚动效果的相关资料,该方法可以实现滚动内容中字的不同的颜色更改,并且可以根据需要进行艺术化更改和自... 组件滚动通知只能实现简单的滚动效果,不能实现滚动内容中的字进行不同颜色的更改,下面实现一个无缝衔接的滚动

VSCode中配置node.js的实现示例

《VSCode中配置node.js的实现示例》本文主要介绍了VSCode中配置node.js的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着... 目录一.node.js下载安装教程二.配置npm三.配置环境变量四.VSCode配置五.心得一.no

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