实现一个简单的 页面划入效果

自己写了一个划入的效果

<!DOCTYPE html>
<html>

	<head>
		<meta charset="UTF-8">
		<meta name="viewport" content="width=device-width,initial-scale=1.0,user-scalable=0,minimum-scale=1.0,maximum-scale=1.0">
		<title>Slide-expamle</title>
		<style>
			html,
			body,
			ul,
			li,
			ol,
			img {
				margin: 0;
				padding: 0;
				border: none;
				list-style: none;
				border-image: none;
				border-image-width: 0;
			}
			
			body {
				position: absolute;
				left: 0;
				right: 0;
				top: 0;
				bottom: 0;
			}
			
			.content {
				width: 100%;
				height: 100%;
				overflow: hidden;
			}
			
			.main {
				width: 300%;
				height: 100%;
			}
			
			.main li {
				float: left;
				width: 33.333333%;
				height: 100%;
			}
			
			.main li img {
				width: 100%;
				height: 100%;
			}
			
			.nav {
				margin-top: -15%;
				padding: 0 25%;
				display: flex;
				justify-content: center;
			}
			
			.nav li {
				width: 10px;
				height: 10px;
				border: 1px solid #e3e3e3;
				border-radius: 10px;
				background-color: #fff;
			}
			
			.nav li+li {
				margin-left: 5px;
			}
			
			.nav .active {
				background-color: #e3e3e3;
			}
		</style>
	</head>

	<body>
		<div class="content">
			<ul id="main" class="main">
				<li><img src="img/360592421252747277.jpg" />
					<ul class="nav">
						<li class="active"></li>
						<li></li>
						<li></li>
					</ul>
				</li>
				<li><img src="img/70711697724823488.jpg" />
					<ul class="nav">
						<li></li>
						<li class="active"></li>
						<li></li>
					</ul>
				</li>
				<li><img src="img/825168513028341693.jpg" />
					<ul class="nav">
						<li></li>
						<li></li>
						<li class="active"></li>
					</ul>
				</li>
			</ul>
		</div>
		<script>
			var body = document.body;
			body.addEventListener("orientationchange", function(e) {
				e.stopPropagation();
				e.preventDefault();
			});
			var main = document.getElementById('main');

			var startX = 0,
				screenWidth = screen.width,
				bidTranslateX = 0,
				lang = 0;
			main.addEventListener('touchstart', function(e) {
				var touch = e.touches[0];
				startX = touch.pageX;
				console.log(startX);
			});

			main.addEventListener('touchmove', function(e) {
				var touch = e.touches[0];
				var movingX = touch.pageX;
				lang = movingX - startX;
				var translateX = lang + bidTranslateX;
				if(Math.abs(lang) < screenWidth) {
					if(lang < 0) {
						if(translateX > -(screenWidth * 2)) {
							this.style.transform = 'translateX(' + translateX + 'px)';
						}

					} else {
						if(translateX < 0) {
							this.style.transform = 'translateX(' + translateX + 'px)';
						}
					}
				}

				console.log("touchmove:" + translateX);
			});

			main.addEventListener('touchend', function(e) {
				var touch = e.changedTouches[0],
					translateX;
				var endX = touch.pageX;
				if(lang > 0) {
					bidTranslateX += screenWidth;
				} else {
					bidTranslateX -= screenWidth;
				}

				if(bidTranslateX > 0) {
					translateX = bidTranslateX = 0;
				} else if(Math.abs(bidTranslateX) > (screenWidth * 2)) {
					translateX = bidTranslateX = -(screenWidth * 2);
				} else {
					translateX = bidTranslateX;
				}
				this.style.transition = "-webkit-transform 500ms ease-out";
				this.style.webkitTransform = "translateX(" + translateX + "px)";
				console.log('touchend:' + bidTranslateX);
			});
		</script>
	</body>

</html>
自己记录一下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值