H5类似淘宝头条垂直滚动效果

不同样式的垂直滚动:

无缝垂直滚动;
间歇性垂直滚动(一次滚动一条);
间歇性垂直滚动(一次滚动两条);

变量解释:
speed:滚动的速度;
delay:暂停的时长;
scrollTop :滚动的高度;
scrollHeight:滚动元素的高度;

关注我的微信公众号【前端基础教程从0开始】,加我微信,可以免费为您解答问题。回复“1”,拉你进程序员技术讨论群。回复“小程序”,领取300个优秀的小程序开源代码+一套入门教程。回复“领取资源”,领取300G前端,Java,微信小程序,Python等资源,让我们一起学前端。

1. 无缝垂直滚动(无停歇的一直滚动)
<!doctype html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
		<link href="css/mui.min.css" rel="stylesheet" />
		<style type="text/css">
			body{
				background-color: #FFFFFF;
			}
			.out{
				overflow: hidden;
				height: 21px;
				margin-top: 50px;
				padding-left: 20px;
			}
		</style>
	</head>

	<body>
		<div class="out" id="roll">
			<div>111111111</div>
			<div>222222222</div>
			<div>333333333</div>
			<div>44444444444</div>
			<div>555555555</div>
			<div>66666666</div>
			<div>777777777777</div>
			<div>888888888888</div>
		</div>
		
		<script type="text/javascript" src="js/mui.min.js" ></script>
		<script type="text/javascript" src="js/jquery-1.8.2.min.js" ></script>
		<script type="application/javascript">
			var speed = 100;
			window.onload = function(){
				var area = document.getElementById("roll");
				area.innerHTML += area.innerHTML;
				function scroll(){
					if(area.scrollTop >= area.scrollHeight/2){
						area.scrollTop = 0;
					}else{
						area.scrollTop++;
					}
				}
				
				setInterval(scroll,speed);
			}
		</script>
	</body>

</html>
2. 间歇性垂直滚动(一次滚动一条)
<!doctype html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
		<link href="css/mui.min.css" rel="stylesheet" />
		<style type="text/css">
			body{
				background-color: #FFFFFF;
			}
			.out{
				overflow: hidden;
				height: 21px;
				margin-top: 50px;
				padding-left: 20px;
			}
		</style>
	</head>

	<body>
		<div class="out" id="roll">
			<div>111111111</div>
			<div>222222222</div>
			<div>333333333</div>
			<div>44444444444</div>
			<div>555555555</div>
			<div>66666666</div>
			<div>777777777777</div>
			<div>888888888888</div>
		</div>
		
		<script type="text/javascript" src="js/mui.min.js" ></script>
		<script type="text/javascript" src="js/jquery-1.8.2.min.js" ></script>
		<script type="application/javascript">
			var speed = 100;
			var delay = 2000;
			var height = 21;
			var time;
			window.onload = function(){
				var area = document.getElementById("roll");
				area.innerHTML += area.innerHTML;
				function scroll(){
					if(area.scrollTop % height == 0){
						clearInterval(time);
						setTimeout(start,delay);
					}else{
						area.scrollTop++;
						if(area.scrollTop >= area.scrollHeight/2){
							area.scrollTop = 0;
						}
					}
					
				}
				function start(){
					time = setInterval(scroll,speed);
					area.scrollTop++;
				}
				setTimeout(start,delay);
			}
		</script>
	</body>
</html>
3. 间歇性垂直滚动(一次滚动两条)
<!doctype html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
		<link href="css/mui.min.css" rel="stylesheet" />
		<style type="text/css">
			body{
				background-color: #FFFFFF;
			}
			.out{
				overflow: hidden;
				height: 42px;
				margin-top: 50px;
				padding-left: 20px;
			}
		</style>
	</head>

	<body>
		<div class="out" id="roll">
			<div>111111111</div>
			<div>222222222</div>
			<div>333333333</div>
			<div>44444444444</div>
			<div>555555555</div>
			<div>66666666</div>
			<div>777777777777</div>
			<div>888888888888</div>
		</div>
		
		<script type="text/javascript" src="js/mui.min.js" ></script>
		<script type="text/javascript" src="js/jquery-1.8.2.min.js" ></script>
		<script type="application/javascript">
			var speed = 100;
			var delay = 2000;
			var height = 42;
			var time;
			window.onload = function(){
				var area = document.getElementById("roll");
				var counts = $("#roll").find("div").length;
				area.innerHTML = area.innerHTML + area.innerHTML + area.innerHTML;
				function scroll(){
					if(area.scrollTop % height == 0){
						clearInterval(time);
						setTimeout(start,delay);
					}else{
						area.scrollTop++;
						if(counts % 2 ==0 ){
							if(area.scrollTop >= area.scrollHeight/3){
								area.scrollTop = 0;
							}
						}else{
							if(area.scrollTop >= area.scrollHeight*2/3){
								area.scrollTop = 0;
							}
						}
					}
				}
				function start(){
					time = setInterval(scroll,speed);
					area.scrollTop++;
				}
				setTimeout(start,delay);
			}
		</script>
	</body>

</html>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值