原生js实现文本滚动

<!DOCTYPE html>
<html lang="zh-CN">
	<head>
		<meta charset="utf-8">
		<title>文本滚动</title>
	</head>
	<body>
		<div id="anews" class="anews">
			<img src="喇叭.png"><!--普通图片,不影响最终显示-->
			<span class="anews_txt" id="anews_txt"></span>
		</div>
	<script>
		window.onload=function(){
			var anews_txt = document.getElementById("anews_txt")
			var txt = "观自在菩萨,行深般若波罗蜜多时,照见五蕴皆空,度一切苦厄,舍利子,色不异空,空不异色,色即是空,空即是色,受想行识,亦复如是,舍利子,是诸法空相,不生不灭,不垢不净,不增不减,是故空中无色,无受想行识,无眼耳鼻舌身意,无色声香味触法,无眼界,乃至无意识界,无无明,亦无无明尽,乃至无老死,亦无老死尽,无苦集灭道,无智亦无得,以无所得故,菩提萨埵,依般若波罗蜜多故,心无罣碍,无罣碍,故无有恐怖,远离颠倒梦想,究竟涅盘,三世诸佛,依般若波罗蜜多故,得阿耨多罗三藐三菩提,故知般若波罗蜜多,是大神咒,是大明咒,是无上咒,是无等等咒,能除一切苦,真实不虚,故说般若波罗蜜多咒,即说咒曰,揭谛揭谛,波罗揭谛,波罗僧揭谛,菩提萨婆诃。"
		const sleep = (delay) =&gt; new Promise((resolve) =&gt; setTimeout(resolve, delay)) 
		const printf = async (i,len,t) =&gt; {
			//i为设置的文本/len为标签一行最多显示的字数/t为刷新时间,即下一个字出来的时间
			anews_txt.style.setProperty('width', len+'em');//设置文本最大显示字符
			anews_txt.style.setProperty('text-align', 'right');//实现一开始的文本从有往左
			for(var q = 1, p = 0; q &lt;= i.length+len; ){
				await sleep(t)
				//如下是设置的文本长度大于单行最大显示的情况,即i+1 &gt;= len
				//若i+1 &lt; len文字则无法消失
				anews_txt.innerHTML = i.substr(p,q)
				if(q &gt;= len){
					p++当前显示已达到目标,单行最大显示字数//起始字符向后退
					anews_txt.style.setProperty('text-align', 'left');
				}
				if(q &lt;= i.length){
					q++
				}
			}
		}
		
		//第一个参数为String类型
		//第二个参数为int类型的正整数
		//第三个参数为int类型的正整数
		//第三个参数越大文本移动速度越快
		printf(txt,10,60)
	}
&lt;/script&gt;
&lt;/body&gt;
&lt;style&gt;
*{
	margin: 0;
	padding: 0;
	z-index: 0;
}
.anews{
	display: flex;
}
.anews_txt{
	height: 1.5em;
	overflow: hidden;
}
&lt;/style&gt;

</html>

  原生js实现文本滚动

 

posted @ 2021-01-19 15:26  显示昵称已被使用2010  阅读(109)  评论(1编辑  收藏  举报