左右镜像滚动效果demo

分享一个有趣的效果,并不复杂,

 

关键在于

横向,纵向的布局;

滚动时坐标的运算;

10毫秒的延迟;

 

代码超简单,看看就懂了

<!DOCTYPE html>
<html>

	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<meta charset="utf-8">
		<meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" />
		<meta http-equiv="Page-Enter" content="revealTrans(Duration=1.0,Transition=0)">
		<title>左右镜像滚动</title>
		<style type="text/css">
			td { height: 50px; }
			/*滚动条整体部分,必须要设置*/
			 ::-webkit-scrollbar { width: 0; height: 0; background-color: transparent; }
			/*滚动条的轨道*/
			 ::-webkit-scrollbar-track { box-shadow: none; background-color: transparent; }
			/*滚动条的滑块按钮*/
			 ::-webkit-scrollbar-thumb { background-color: transparent; box-shadow: none; }
			/*滚动条的上下两端的按钮*/
			 ::-webkit-scrollbar-button { height: 0; background-color: transparent; }
			#all { outline: 1px solid #f00; width: 100%; max-width: 500px; margin: auto; height: 300px; overflow-x: hidden; overflow-y: auto; position: relative; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; }
			#fall1, #fall2 { outline: 1px solid #f00; float: left; width: 50%; overflow: auto; }
			#fall1 {}
			#fall2 {}
		</style>
	</head>

	<body>
		<div id="all">

			<div id="fall1">
				<table border="" cellspacing="" cellpadding="">
					<tr>
						<td>1</td>
						<td>2</td>
						<td>3</td>
						<td>4</td>
						<td>5</td>
						<td>6</td>
						<td>7</td>
						<td>8</td>
						<td>9</td>
						<td>10</td>
						<td>11</td>
						<td>12</td>
					</tr>
					<tr> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> </tr>
					<tr> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> </tr>
					<tr> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> </tr>
					<tr> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> </tr>
					<tr> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> </tr>
					<tr> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> </tr>
				</table>
			</div>
			<div id="fall2">
				<table border="" cellspacing="" cellpadding="">
					<tr>
						<td>12</td>
						<td>11</td>
						<td>10</td>
						<td>9</td>
						<td>8</td>
						<td>7</td>
						<td>6</td>
						<td>5</td>
						<td>4</td>
						<td>3</td>
						<td>2</td>
						<td>1</td>
					</tr>
					<tr> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> </tr>
					<tr> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> </tr>
					<tr> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> </tr>
					<tr> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> </tr>
					<tr> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> </tr>
					<tr> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> <td>123</td> </tr>
				</table>
			</div>

		</div>

		<script src="https://cdn.bootcss.com/jquery/2.2.4/jquery.min.js"></script>
		<script type="text/javascript">
			'use strict';

			window.onload = function() {

				var wf1 = $("#fall1").width()
				var wf2 = $("#fall2").width()
				var tf1 = $("#fall1 table").width()
				var tf2 = $("#fall2 table").width()
				var setTimeoutName;
				var isFall1Click = false;
				var isFall2Click = false;
				var fall1Layer = {}
				var fall2Layer = {}

				$("#fall2").scrollLeft(tf2)

				if('ontouchstart' in document.documentElement) {
					//移动端
					$("#fall1").scroll(function() {
						var lin = $("#fall1").scrollLeft()
						$("#fall2").scrollLeft(tf2 - wf2 - lin)
					})
					$("#fall2").scroll(function() {
						var lin = $("#fall2").scrollLeft()
						$("#fall1").scrollLeft(tf1 - wf1 - lin)
					})
				} else {
					//pc端
					document.getElementById("fall1").onmousedown = function(e) {
						clearTimeout(setTimeoutName)
						isFall1Click = true
						isFall2Click = !isFall1Click
						fall1Layer.x = e.layerX + $("#fall1").scrollLeft()
						fall1Layer.y = e.layerY + $("#fall1").scrollTop()
					}
					document.getElementById("fall1").onmousemove = function(e) {
						if(isFall1Click && !isFall2Click) {
							clearTimeout(setTimeoutName)
							setTimeoutName = setTimeout(function() {
								var lin = fall1Layer.x - e.layerX
								$("#fall1").scrollLeft(lin)
								$("#fall2").scrollLeft(tf2 - wf2 - lin)
							}, 10)
						}
					}
					document.getElementById("fall1").onmouseup = function(e) {
						clearTimeout(setTimeoutName)
						isFall1Click = isFall2Click = false
					}
					//==================
					document.getElementById("fall2").onmousedown = function(e) {
						clearTimeout(setTimeoutName)
						isFall2Click = true
						isFall1Click = !isFall2Click
						fall2Layer.x = e.layerX + $("#fall2").scrollLeft()
						fall2Layer.y = e.layerY + $("#fall2").scrollTop()
					}
					document.getElementById("fall2").onmousemove = function(e) {
						if(isFall2Click && !isFall1Click) {
							clearTimeout(setTimeoutName)
							setTimeoutName = setTimeout(function() {
								var lin = fall2Layer.x - e.layerX
								$("#fall2").scrollLeft(lin)
								$("#fall1").scrollLeft(tf1 - wf1 - lin)
							}, 10)
						}
					}
					document.getElementById("fall2").onmouseup = function(e) {
						clearTimeout(setTimeoutName)
						isFall1Click = isFall2Click = false

					}
					//==================
					document.onmouseup = function(e) {
						clearTimeout(setTimeoutName)
						isFall1Click = isFall2Click = false
					}
				}

			}
		</script>

	</body>

</html>

 

 

 

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值