最近在研究H5的动画,于是简单实现了相应的手机端触摸切换画面效果,具体代码如下:
最终效果:
实现代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta content="telephone=yes" name="format-detection" />
<meta name="apple-mobile-web-app-status-bar-style" content="white">
<meta name="x5-fullscreen" content="true">
<meta name="apple-touch-fullscreen" content="yes">
<title>H5手机端滑动切换效果</title>
<style>
* {margin: 0;padding: 0;}
#box{position:absolute;width:100%;height:100%;}
#box>div{position: absolute;height:100%;width:100%;background:#ccc;font-size:40px;color:#fff;line-height:100%;text-align: center;}
#box .content{transform:scale(0.5);opacity:0;transition:all 1s;}
#box .active{transform:scale(1);opacity:1;transition:all 1s;}
</style>
</head>
<body>
<div class="box" id="box">
<div class="content" style="background:green;">1</div>
<div class="content" style="background:red;">2</div>
<div class="content" style="background:blue;">3</div>
<div class="content active" style="background:yellow;">4</div>
</div>
</body>
</html>
<script src="../Util/jquery-1.11.3.min.js"></script>
<script>
(function(select){
//小左边滑动
var startX, moveX, movebox = document.querySelector(select);
//触摸开始
function boxTouchStart(e) {
var touch = e.touches[0]; //获取触摸对象
startX = touch.pageX; //获取触摸坐标
}
//触摸移动
function boxTouchMove(e) {
var touch = e.touches[0];
moveX = touch.pageX - startX; //手指水平方向移动的距离
}
//触摸结束
function boxTouchEnd(e) {
moveDir = moveX < 0 ? true : false; //滑动方向大于0表示向左滑动,小于0表示向右滑动
//手指向左滑动
if (moveDir) {
var index = $(this).find("div.active").index();
//第一个是1的时候
if(index == 0){
$(this).find("div.active").removeClass("active");
$(this).children(":last").addClass("active");
}else{
var last = $(this).find("div.active");
last.removeClass("active").prev().addClass("active");
}
//手指向右滑动
} else {
var index = $(this).find("div.active").index();
//第一个是4的时候
if(index == 3){
$(this).find("div.active").removeClass("active");
$(this).children(":first").addClass("active");
}else{
var last = $(this).find("div.active");
var _this = $(this);
last.removeClass("active").next().addClass("active");
}
}
}
//滑动对象事件绑定
movebox.addEventListener("touchstart", boxTouchStart, false);
movebox.addEventListener("touchmove", boxTouchMove, false);
movebox.addEventListener("touchend", boxTouchEnd, false);
})("#box")
</script>