实现手写字体滚动动画

141 阅读2分钟

运用css3和js实现手写字体滚动动画

image.png `

<head>
	<meta charset="UTF-8">
	<title></title>

	<style type="text/css">
		* {
			padding: 0;
			margin: 0;
		}
		
		ul li {
			list-style-type: none;
		}
		/* 字体滚动 */
		
		#scrollDiv {
			position: absolute;
			z-index: 9999;
			top: 0.5rem;
			left: 0;
			font-weight: lighter;
			font-family: "PingFang SC Light", "PingFang SC", "Microsoft Yahei", sans-serif;
			font-size: 0.28rem;
			height: 2.40rem;
			width: 100%;
			overflow: hidden;
			text-align: center;
		}
		
		#scrollDiv p {
			position: absolute;
			width: 100%;
			left: 0;
			bottom: 0.2rem;
			height: 1rem;
			line-height: 2.4rem;
			text-align: center;
			font-weight: lighter;
		}
		
		.defult-4 {
			transform: translateY(-2.4rem);
			color: #aaaaaa;
		}
		
		.defult-3 {
			transform: translateY(-1.6rem);
			color: #aaaaaa;
		}
		
		.defult-2 {
			transform: scale(1.5, 1.5) translateY(-0.8rem);
			/* font-size: 30px; */
		}
		
		.defult-1 {
			transform: translateY(0);
			color: #aaaaaa;
		}
		
		.defult-0 {
			transform: translateY(0.8rem);
		}
		
		.animation1 {
			animation: fadeInUp01 1s linear 0s 1 alternate;
			/* Safari and Chrome: */
			-webkit-animation: fadeInUp01 1s linear 0s 1 alternate;
			animation-fill-mode: forwards;
			-webkit-animation-fill-mode: forwards;
		}
		
		.animation2 {
			animation: fadeInUp02 1s linear 0s 1 alternate;
			/* Safari and Chrome: */
			-webkit-animation: fadeInUp02 1s linear 0s 1 alternate;
			animation-fill-mode: forwards;
			-webkit-animation-fill-mode: forwards;
		}
		
		.animation3 {
			animation: fadeInUp03 1s linear 0s 1 alternate;
			/* Safari and Chrome: */
			-webkit-animation: fadeInUp03 1s linear 0s 1 alternate;
			animation-fill-mode: forwards;
			-webkit-animation-fill-mode: forwards;
		}
		
		.animation4 {
			animation: fadeInUp04 1s linear 0s 1 alternate;
			/* Safari and Chrome: */
			-webkit-animation: fadeInUp04 1s linear 0s 1 alternate;
			animation-fill-mode: forwards;
			-webkit-animation-fill-mode: forwards;
		}
		
		@keyframes fadeInUp04 {
			0% {
				transform: translateY(-1.6rem);
				opacity: 1;
				color: #ccc;
			}
			100% {
				transform: translateY(-2.2rem);
				color: #ccc;
				opacity: 0;
			}
		}
		
		@-webkit-keyframes fadeInUp04 {
			0% {
				transform: translateY(-1.6rem);
				color: #aaaaaa;
			}
			100% {
				transform: translateY(-2.4rem);
				color: #aaaaaa;
			}
		}
		
		@keyframes fadeInUp01 {
			0% {
				transform: translateY(0.8rem);
				color: #aaaaaa;
			}
			100% {
				transform: translateY(0);
				color: #aaaaaa;
			}
		}
		
		@-webkit-keyframes fadeInUp01 {
			0% {
				transform: translateY(0.8rem);
				color: #aaaaaa;
			}
			100% {
				transform: translateY(0);
				color: #aaaaaa;
			}
		}
		
		@-webkit-keyframes fadeInUp02 {
			0% {
				transform: scale(1, 1) translateY(0);
				color: #aaaaaa;
			}
			100% {
				transform: scale(1.5, 1.5) translateY(-0.8rem);
				color: #3c3c3c;
			}
		}
		
		@keyframes fadeInUp02 {
			0% {
				transform: scale(1, 1) translateY(0);
				color: #aaaaaa;
			}
			100% {
				transform: scale(1.5, 1.5) translateY(-0.8rem);
				color: #3c3c3c;
			}
		}
		
		@keyframes fadeInUp03 {
			0% {
				transform: scale(1.5, 1.5) translateY(-0.8rem);
				color: #3c3c3c;
			}
			100% {
				transform: scale(1, 1) translateY(-1.6rem);
				color: #aaaaaa;
			}
		}
		
		@-webkit-keyframes fadeInUp03 {
			0% {
				transform: scale(1.5, 1.5) translateY(-0.8rem);
				color: #3c3c3c;
			}
			100% {
				transform: scale(1, 1) translateY(-1.6rem);
				color: #aaaaaa;
			}
		}
	</style>
</head>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.js"></script>
<script>
	function updateFontSize() {
		document.getElementsByTagName('html')[0].style.fontSize = 100 * (document.documentElement.clientWidth / 1920) + 'px';;
	}
	updateFontSize();
	window.onresize = function() {
		updateFontSize();
	};
</script>
<body>
	<!--滚动文字-->
	<div id="scrollDiv">
		<p class="defult-4" data-index="4">"小飞小飞,15+5-10×2÷4等于多少"</p>
		<p class="defult-3" data-index="3">"小飞小飞,小鸟为什么会飞"</p>
		<p class="defult-2" data-index="2">"小飞小飞,现在几点了"</p>
		<p class="defult-1" data-index="1">"小飞小飞,明天天气怎么样"</p>
		<p class="defult-0" data-index="0">"小飞小飞,我要听光辉岁月"</p>
		<p class="defult-0" data-index="0">"小飞小飞,明天8点叫我起床"</p>
		<p class="defult-0" data-index="0">"小飞小飞,我要听评书"</p>
		<p class="defult-0" data-index="0">"小飞小飞,今天存贷款利率是多少"</p>
		<p class="defult-0" data-index="0">"生活助手 金融家 娱乐明星 学习机 多面手"</p>
	</div>
	<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.js"></script>
	<script>
		// 字体滚动
		function autoscroll(obj) {
			let textContent = "";
			$(obj).find('p').each(function(index, k) {
				let $this = this;
				//获取当前的内容
				if(index == 0) {
					textContent = $($this).html();
				}
				if(index > 0 && index < 5) {
					let dataIndex = $($this).attr("data-index");
					dataIndex = parseInt(dataIndex) + 1
					$($this).removeClass($($this).attr("class")).addClass("animation" + dataIndex).attr("data-index", dataIndex);
					setTimeout(function() {
						$($this).addClass("defult-" + dataIndex);
						if(index == 4) {
							$(obj).append("<p class='defult-0' data-index='0'>" + textContent + "</p>");
							$(obj).find('p').eq(0).remove();
						}
					}, 200);
				}
			})
		}
		$(function() {
			setIntervalScrollDiv = setInterval('autoscroll("#scrollDiv")', 2000)
		})
	</script>
</body>
`