简单零基础学会H5移动端滑动翻页效果

这篇文章教大家如何使用原生js和少量css3动画来实现HTML5的翻页效果,我会尽量讲得细一点,让零基础的同学也能学会这个简单的案例。

先来看下html的布局代码:
index.html

一个div包裹5个div , 相当于5个不同的页面。

<!DOCTYPE html>
<html lang="zh">
<head>
	<meta charset="UTF-8" />
	<meta name="viewport" content="width=device-width, initial-scale=1.0" />
	<meta http-equiv="X-UA-Compatible" content="ie=edge" />
	<title>移动端H5翻页案例</title>
	<script type="text/javascript" src="js/index.js" ></script>
	<script type="text/javascript" src="js/sp.js" ></script>
	<link rel="stylesheet" type="text/css" href="css/index.css"/>
</head>
<body>
		<div class="show">
			<div class="page">第一页</div>
			<div class="page">第二页</div>
			<div class="page">第三页</div>
			<div class="page">第四页</div>
			<div class="page">第五页</div>
		</div>
</body>
</html>

如果是手机端的话一定要加上第5、6行这两个标签,第五行的标签可以自适配手机的宽高 ,第六行可以使用当前浏览器版本所支持的最高级标准模式渲染。

在这里插入图片描述

这是引用的文件, index.js是等下设置翻页的js代码 ,sp.js是适配不同尺寸的js代码(上个文章有教程),index.css就是设置样式和少量css3翻页动画的。

在这里插入图片描述
布局效果图:

打开控制台 点击标红框的小手机即可调成移动端查看。

在这里插入图片描述

这里默认使用iPhone6//7/8演示。

在这里插入图片描述

下面再看看css样式代码:
index.css

*{
	padding: 0;
	margin: 0;
}

html,body{
	height: 100%;
}

/*大容器*/
.show{
	width: 23.437rem;
	height: 100%;
	overflow: hidden;
	margin: 0 auto;
	position: relative;
}

.page{
	width: 23.437rem;
	height: 100%;
	overflow: hidden;
	position: absolute;
	display: none;
	font-size: 50px;
	text-align: center;
}

/*设置每一页的背景色*/
.page:nth-child(1){
	display: block;
	background-color: pink;
}
.page:nth-child(2){
	
	background-color: gold;
}
.page:nth-child(3){

	background-color: seagreen;
}
.page:nth-child(4){

	background-color: peachpuff;
}
.page:nth-child(5){

	background-color:darkgrey;
}

.hide{
	display: none;
}

/*设置翻页的动画*/

.out_top{
	animation: out_top .5s linear both;
}
.in_top{
	animation: in_top .5s linear both;
}
.out_down{
	animation: out_down .5s linear both;
}
.in_down{
	animation: in_down .5s linear both;
}

/*当前页-->向上翻-->隐藏*/
@keyframes out_top{
	from{
		transform: translateY(0%);
	}
	to{
		transform: translateY(-100%);
	}
}
/*下一页-->向上翻-->显示*/
@keyframes in_top{
	from{
		transform: translateY(100%);
	}
	to{
		transform: translateY(0%);
	}
}
/*当前页-->向下拉-->隐藏*/
@keyframes out_down{
	from{
		transform: translateY(0%);
	}
	to{
		transform: translateY(100%);
	}
}
/*上一页-->向下拉-->显示*/
@keyframes in_down{
	from{
		transform: translateY(-100%);
	}
	to{
		transform: translateY(0%);
	}
}

一定要在包裹页面page的容器里面加上overflow: hidden; 超出画面隐藏,否则页面会乱,还要用定位固定在同一个锚点。
在这里插入图片描述
先让每个页面都隐藏起来,利用nth-child()选择器给每个页面设置不同的背景颜色,利于分辨,最后让第一页显示出来。
在这里插入图片描述
效果图如下:
在这里插入图片描述
最后看一下js代码:
index.js

绝大部分代码我都添加了注释,方便看懂

var pages = document.getElementsByClassName('page');//获取页面的节点集合
var startY,endY,dis = 0; //第一次触碰的焦点 ,最后触碰的焦点 ,滑动距离
var index = 0;//页码

//获取第一次触碰屏幕的焦点startY的事件
document.addEventListener('touchstart',function(e){
	var touch = e.touches[0];
	startY = touch.pageY;
})

//获取最后触摸的焦点endY , 算出滑动屏幕的距离dis的事件
document.addEventListener('touchmove',function(e){
	var touch = e.touches[0];
	endY = touch.pageY;
	dis = startY - endY;
})

//滑动事件结束 如果手指滑动距离大于150 并且正向则执行pageTop函数 -->向上滑动翻页
//滑动事件结束 如果手指滑动距离大于150 方向为负则执行pageDown函数 -->向下滑动翻页
//翻页完毕 执行qingling函数 进行数值清零
document.addEventListener('touchend',function(e){
	if(Math.abs(dis)>150){
		if(dis>0){
			pageTop(index);
			qingling();
		}else{
			pageDown(index);
			qingling();
		}
	}
})

//向上翻页并添加翻页动画的样式
function pageTop(n){
	if(n<pages.length-1){
		n++;
		index++;
		
//  		这个定时器的作用执行此函数一秒后  本页面添加一个隐藏的样式  随后滑走
		setTimeout(function(){
			pages[n-1].classList.add('hide');
		},1000)
		
		pages[n-1].classList.add('out_top');
		pages[n-1].classList.remove('in_top','out_down','in_down');
		pages[n].classList.add('in_top');
		pages[n].classList.remove('out_top','out_down','in_down');
		pages[n].style.display = 'block';
	}
}

//向下翻页并添加翻页动画的样式
function pageDown(n){
	if(n>0){
		n--;
		index--;
		
		setTimeout(function(){
			pages[n+1].classList.add('hide');
		},1000)
		
		pages[n+1].classList.add('out_down');
		pages[n+1].classList.remove('in_top','out_top','in_down');
		pages[n].classList.add('in_down');
		pages[n].classList.remove('out_top','out_down','in_top');
	}
}

//使相关参数清零
function qingling(){
	startY = 0;
	endY = 0;
	dis = 0;
}

touchstart ,touchmove touchend这些都是触碰事件的固定参数,就像onclick这样, addEventListener(‘事件类型’,要执行的函数)

在这里插入图片描述
最后的效果:

视频演示

在这里插入图片描述
代码不是很多,但是这个案例很实用,大家可以尝试理解背一下,可以直接套用的
等下我会把完整的项目包发上来,大家可以免费下载学习。

点击免费下载完整项目包

  • 26
    点赞
  • 80
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 15
    评论
vue-awesome-swiper是一个基于Vue.js的插件,用于实现H5滑动翻页效果。它是在swiper的基础上进行了封装,使得在Vue项目中使用swiper变得更加方便和灵活。 要在vue中使用vue-awesome-swiper,首先需要在main.js中引入VueAwesomeSwiper插件,并导入swiper的样式文件。具体的代码如下: import VueAwesomeSwiper from 'vue-awesome-swiper' import 'swiper/dist/css/swiper.css' Vue.use(VueAwesomeSwiper) 这样就可以在Vue组件中使用vue-awesome-swiper来实现H5滑动翻页效果了。你可以在需要使用swiper的组件中引入并注册vue-awesome-swiper的组件,然后使用组件的方式来配置和控制swiper的各种参数和功能。通过配置不同的选项,你可以实现各种不同的滑动翻页效果,满足你的需求。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [vue案例 - vue-awesome-swiper实现h5滑动翻页效果](https://blog.csdn.net/weixin_33881050/article/details/93267999)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [vue移动端使用swiper+vue-awesome-swiper实现滑动选择](https://blog.csdn.net/weixin_45842078/article/details/119141775)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Elio_21

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值