javascript插件库之无缝信息滚动(part2)

今天来学习信息的无缝滚动。

知识点:

  1. setTimeout(表达式,延迟时间) 在执行时,是在载入后延长指定时间后,去执行一次表达式。只进执行一次。
  2. setInterval(表达式,交互时间)在执行时,它从载入后,每隔指定的时间就执行一次表达式。

无缝滚动 

<!DOCTYPE html>
<html>

	<head>
		<meta charset="UTF-8">
		<title></title>
		<style type="text/css">
			#info {
				width: 600px;
				height: 196px;
				overflow: hidden;
				background-color: bisque;
			}
			
			#info p {
				width: 100%;
				height: 30px;
				padding: 5px;
				line-height: 30px;
				margin: 0;
				background-color: cornflowerblue;
			}
			
			#info ol {
				width: 100%;
				height: 156px;
				margin: 0 auto;
				/*padding-top:10px ;*/
				box-sizing: border-box;
				overflow: hidden;
			}
			
			#info ol li {
				height: 26px;
				line-height: 26px;
			}
			
			#infobox {
				width: 100%;
				height: 156px;
				overflow: hidden;
			}
		</style>
	</head>

	<body>
		<div id="info">
			<p>新闻</p>
			<div id="infobox">
				<ol id="olinfo">
					<li>
						<a href="">华为593亿净利碾压茅台中石油 员工平均年薪60万</a>
					</li>
					<li>
						<a href="">报告:无偿加班普遍 七成受访白领没加班补贴</a>
					</li>
					<li>
						<a href="">不合格食品达693吨!2018年食品安全抽检出了哪些问题?</a>
					</li>
					<li>
						<a href="">证监会成立投资者保护工作领导小组 易会满任组长</a>
					</li>
					<li>
						<a href="">返乡就业,震后迁居:化工园区入驻17年,响水村民的进与退</a>
					</li>
					<li>
						<a href="">五大行2018年共赚1万亿!日均赚27.6亿 净利润增速均超4%</a>
					</li>
				</ol>
				<ol id="olinfo2"></ol>
			</div>
		</div>
		<script type="text/javascript">
			var infobox = document.getElementById("infobox");
			var olname = document.getElementById("olinfo");
			var olname2 = document.getElementById("olinfo2");
			olname2.innerHTML = olname.innerHTML;
			function scrollup() {
				if(infobox.scrollTop >= olname.offsetHeight) {
					infobox.scrollTop = 0;
				} else {
					infobox.scrollTop++
				}
			}
			var time = 50;
			var scroll = setInterval('scrollup()', time);
			infobox.onmouseover =function(){
				clearInterval(scroll);
			}
			infobox.onmouseout =function(){
				scroll = setInterval('scrollup()', time);
			}
		</script>
	</body>

</html>

结果为:

文字会一直滚动,当鼠标移上去,则停止向上滚动,移开鼠标则继续滚动。 

说明:

这样写可以把第一个ol直接复制给ol2;

olname2.innerHTML = olname.innerHTML;

当ol外层包裹的div#infobox的滚动的高度等于ol的高度时在,则执行。

infobox.scrollTop >= olname.offsetHeight

这第一个sh 鼠标事件为移入时停止滚动,第二个事件为鼠标移出事件,则继续滚动

infobox.onmouseover =function(){
				clearInterval(scroll);
			}
			infobox.onmouseout =function(){
				scroll = setInterval('scrollup()', time);
			}

间歇性滚动

<!DOCTYPE html>
<html>

	<head>
		<meta charset="UTF-8">
		<title></title>
		<style type="text/css">
			#info {
				width: 600px;
				overflow: hidden;
				background-color: bisque;
			}
			
			#info p {
				width: 100%;
				height: 30px;
				padding: 5px;
				line-height: 30px;
				margin: 0;
				background-color: cornflowerblue;
			}
			
			#info ol {
				width: 100%;
				height: 156px;
				margin: 0 auto;
				box-sizing: border-box;
				overflow: hidden;
			}
			
			#info ol li {
				height: 26px;
				line-height: 26px;
			}
			
			#infobox {
				width: 100%;
				height: 52px;
				overflow: hidden;
			}
		</style>
	</head>

	<body>
		<div id="info">
			<p>新闻</p>
			<div id="infobox">
				<ol id="olinfo">
					<li>
						<a href="">华为593亿净利碾压茅台中石油 员工平均年薪60万</a>
					</li>
					<li>
						<a href="">报告:无偿加班普遍 七成受访白领没加班补贴</a>
					</li>
					<li>
						<a href="">不合格食品达693吨!2018年食品安全抽检出了哪些问题?</a>
					</li>
					<li>
						<a href="">证监会成立投资者保护工作领导小组 易会满任组长</a>
					</li>
					<li>
						<a href="">返乡就业,震后迁居:化工园区入驻17年,响水村民的进与退</a>
					</li>
					<li>
						<a href="">五大行2018年共赚1万亿!日均赚27.6亿 净利润增速均超4%</a>
					</li>
				</ol>
			</div>
		</div>
		<script type="text/javascript">
			var infobox = document.getElementById("infobox");
			var lih = 52;//2行的高度
			infobox.innerHTML += infobox.innerHTML;	//复制相同的ol内容	
			infobox.scrollTop = 0;
			var time=50;
			var t;
			function aa(){
				infobox.scrollTop++;
				t = setInterval("scrollup()",time)//继续执行滚动事件
			}
			
			function scrollup(){				
				if(infobox.scrollTop % lih == 0){
					clearInterval(t);//当infobox.scrollTop能被lih高度整除则停止滚动
					setTimeout("aa()",2000)//在2000毫秒触发这个事件
				}else{
					infobox.scrollTop++;//如果infobox.scrollTop没被整除则继续滚动
					if(infobox.scrollTop>=infobox.scrollHeight/2){
						infobox.scrollTop = 0;//如果滚动完,则高度回到0,继续滚动
					}
				}
			}
			setTimeout("aa()",2000)//2000毫秒后开始这个滚动
		</script>
	</body>

</html>

结果为:2行2行的滚动

 说明:当清除了这个滚动事件后,继续执行infobox.scrollTop++;但是setTimeout只执行一次,如何让它循环执行,就要写个函式包裹,在这里写的时aa()函式;在这个函式中进行infobox.scrollTop++;但是这样也只能只能执行一次,所以把t = setInterval("scrollup()",time)这个放进了这个函式,当infobox.scrollTop++完后,执行这个定时器,这个定时器来继续调用scrollup()函式,这样就会一直循环执行这个间歇式滚动样式。

clearInterval(t);//当infobox.scrollTop能被lih高度整除则停止滚动
setTimeout("aa()",2000)//在2000毫秒触发这个事件

猜你喜欢

转载自blog.csdn.net/weixin_41406727/article/details/88902253