GSAP小应用——JS单页滚屏

好吧,第一次写,比想像中的花时间呢,总算是写好了。也好久没写博客了,就发上来看看吧!

说明:就是一个很普通的单屏滚动效果,一次滚一屏那样子。

PS:有了这个,再加上TimelineMax,那不就~~   <( ̄︶ ̄)>

PS2:用的是touch事件,只有在手机浏览器或像chrome手机模拟器之类的浏览器中才能看到效果!

<!DOCTYPE html>
<html>
<head>
	<title>js单屏滚动</title>
	<meta charset=‘utf-8‘/>
	<meta name="viewport" content="width=device-width,target-densitydpi=high-dpi,initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
	<style type="text/css">
	html,body{height: 100%; margin: 0; padding: 0;}
	.page{height: 100%; font-size: 30em; text-align: center; background-color: rgb(68, 164, 168);}
	</style>

	<!-- 引入GSAP -->
	<script type="text/javascript" src=‘http://cdnjs.cloudflare.com/ajax/libs/gsap/latest/plugins/CSSPlugin.min.js‘></script>
    <script type="text/javascript" src=‘http://cdnjs.cloudflare.com/ajax/libs/gsap/latest/easing/EasePack.min.js‘></script>
    <script type="text/javascript" src=‘http://cdnjs.cloudflare.com/ajax/libs/gsap/latest/TweenLite.min.js‘></script>

	<script type="text/javascript">
	//定义初始屏
	var currentPage = 1;
	//定义初始触点纵坐标
	var old_clientY	= 0;
	var new_clientY	= 0;
	//定义屏幕高度
	var stage 		= document.body || document.documentElement;
	var stageHeight = stage.clientHeight;
	//定义屏幕个数
	var pageNum 	= 4;

	//禁止屏幕滚动
	window.addEventListener(‘touchmove‘,function(ev){
		ev.preventDefault();
	});

	window.addEventListener(‘touchstart‘,function(ev){
		old_clientY = ev.changedTouches[0][‘clientY‘];
	});

	window.addEventListener(‘touchend‘,function(ev){
		new_clientY = ev.changedTouches[0][‘clientY‘];

		//滚动超过30个像素就不滚动
		if(Math.abs(new_clientY - old_clientY) < 30) return;

		if(new_clientY > old_clientY){//住下拉向上滚
			currentPage--;
			if(currentPage < 1) 		currentPage = 1;
		}else{//住上拉向下滚
			currentPage++;
			if(currentPage > pageNum) 	currentPage = pageNum;
		}

		TweenLite.to(‘body‘, 0.8, {scrollTop: (currentPage-1) * stageHeight, ease: Back.easeInOut});
	});
	</script>
</head>
<body>
	<div class=‘page‘>1</div>
	<div class=‘page‘>2</div>
	<div class=‘page‘>3</div>
	<div class=‘page‘>4</div>
</body>
</html>

  

时间: 2024-10-25 11:24:46

GSAP小应用——JS单页滚屏的相关文章

JS 滚轮事件 滚屏效果

浏览器差异:firefox滚轮事件是DOMMouseScroll,其他浏览器使用的是mousewheel firefox事件的event对象使用detail值表示滚轮反向,(-3)表示向上,(3)表示向下. 其他浏览器使用wheelDelta值表示表示滚轮方向,(120)表示向上, (-120)表示向下. 监听事件,删除监听事件:IE678使用attachEvent/detachEvent, 其他浏览器使用addEventListener/removeEventListener. 有Kissy版

js实现双击滚屏效果

<body onDblClick="s=setInterval('scrollBy(0,2)',50)" onMousedown="clearInterval(s)" >

拥抱单页网站! jQuery全屏滚动插件fullPage.js

不知道从什么时候开始,单页网站就悄悄走进人们的视线,尤其是国外的网站,更是钟爱单页网站.制作一个全屏滚动的效果,然后每个滚动页弄一个好看的背景色,配上一些描述性的文字,大家都喜欢这么弄,仿佛逼格瞬间可以爆表似的.当然,不得不承认,介绍产品的页面用单页网站似乎确实高大上的多. 在站长之家看到一篇文章,让我对单页网站有了探索的热情.文章这么写的:“随着单页网站从未经考验的即兴创作一跃成为受人热捧的潮流趋势,垂直滚动的理念正式成了人们目光聚焦的中心.与此同时,设计师们也在大踏步地创新,力求让这一趋势在

js中如何实现滚屏事件

在前端工作中使用JS来实现整屏的上下滚动,下面是JS代码: /**** * 函数:判断滚轮滚动方向 * 参数:event *返回: 方向 上 还是下 ***/ var i =0; var $screen = $("#jq_banner"); var len = $("#jq_banner ul li").length-1; var _h; _h = $screen.height(); var init =function init(){ _h = $screen.h

bottle + vue.js 打造你的单页应用

看到各种单页应用之后,觉得单页应用简直酷毙了,作为一个技术宅,在假期的 时候恶补了一下vue ,觉得还不错,不过想想前端的东西毕竟还是太广博了.我也不知道怎么写反正应用起来有点别扭,就是资料太少了,成型的东西 也太少了,就说说简单的思路吧. vue相当于前段的框架,用于更新数据,废话不多说, 仅仅说应用引入vue 第一,我想做一个单页应用 第二,静态文件又http服务器转发给客户端,而服务端就可以不参数与这些文件的更新,仅仅保持数据通讯即可 第三,假期确实闲着无聊,我是知道react 的,但是纠

浅谈单页应用和多页应用——Vue.js向

浅谈单页应用和多页应用--Vue.js向 多页面 多页面应用:每次页面跳转,后台都会返回一个新的HTML文档,就是多页面应用. 在以往传统开发的应用(网站)大多都是多页面应用,路由由后端来写. 页面跳转=>返回HTML,优点:首屏时间快,SEO效果好,缺点是页面切换慢. 首屏时间快?访问页面,服务器只需要返回一个HTML文件,这个过程就经历了一个HTTP请求,请求响应回来,页面就能被展示出来. SEO(搜索引擎排名)效果好?搜索引擎能识别HTML的内容,根据内容进行排名. 页面切换慢:每一次切换

使用 Vuex + Vue.js 构建单页应用

鉴于该篇文章阅读量大,回复的同学也挺多的,特地抽空写了一篇 vue2.0 下的 vuex 使用方法,传送门:使用 Vuex + Vue.js 构建单页应用[新篇] -------------------- 华丽的分割线 -------------------- 原文地址:https://coligo.io/learn-vuex-by-building-notes-app/ 前言:在最近学习 Vue.js 的时候,看到国外一篇讲述了如何使用 Vue.js 和 Vuex 来构建一个简单笔记的单页应用

《单页web应用 javaScript从前端到后端》3.1 开发shell小例子demo

目前看到这里,还不懂什么是单页应用,这不就是一个普通的点击滑开收缩的动画而已--作者写的那么复杂666 请转载此文的朋友务必附带原文链接,谢谢. 原文链接:http://xuyran.blog.51cto.com/11641754/1891022 spa.html: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <li

通过Web Api 和 Angular.js 构建单页面的web 程序

在传统的web 应用程序中,浏览器端通过向服务器端发送请求,然后服务器端根据这个请求发送HTML到浏览器,这个响应将会影响整个的页面,比如说:用户通过一个连接导航到一个页面,会发送一个请求到服务器端,接下来服务器将会发送一个新的页面给浏览器. 但是在单页面应用程序中,整个页面只是在浏览器一开始请求的时候才会加载,接下来的请求,下来的交互请求都是通过ajax 来完成的,这就意味着只有部分的页面会更新,并不需要去加载整个的页面,这就减少了对用户操作的响应时间,从而使用户有一个更流畅的体验.但是在传统