天天看點

通過JavaScript調用CSS動畫

通過JavaScript調用CSS動畫

    • 案例一:通過按鈕開始和停止動畫
    • 案例二:通過定時器停止動畫

案例一:通過按鈕開始和停止動畫

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style>
		.animation {
		    animation: move 2s infinite alternate;
			border:1px solid;
			width:100px;
			height:100px;
			margin-top:50px;
		}
		  
		@keyframes move {
		    0% {
				transform: rotate(0deg) translate(-100px, 0); ;
		    }
		    100% {
				transform: rotate(360deg) translate(100px, 0);
		    }
		}
		
		.btn:hover{
			cursor: pointer;
		}
		</style>
	</head>
	<body>
		<div class="btn">stop</div>
		<div class="animation"></div>
		<script type="text/javascript">
			document.querySelector('.btn').addEventListener('click', function() {
                //querySelector() 方法傳回文檔中比對指定 CSS 選擇器的第一個元素
			    let btn = document.querySelector('.btn');
			    let elem = document.querySelector('.animation');
			    let state = elem.style['animationPlayState'];
			      
			    if(state === 'paused') {
			        elem.style['animationPlayState'] = 'running';
			        btn.innerText = 'stop';
			    } else {
			        elem.style['animationPlayState'] = 'paused';
			        btn.innerText = 'play';
			    }
			});			
		</script>
	</body>
</html>

           

案例二:通過定時器停止動畫

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style>
		.animation {
		    animation: move 2s linear infinite alternate;
			border:1px solid;
			width:100px;
			height:100px;
		}
		  
		@keyframes move {
		    0% {
				transform: rotate(0deg);
		    }
		    100% {
				transform: rotate(360deg);
		    }
		}
		</style>
	</head>
	<body>
		<div class="animation"></div>
		<script type="text/javascript">
			// 設定動畫在600毫秒後暫停,這個時間值可以根據情況(要停止的位置)自己設定
			setInterval("pausedMove()",600);
			function pausedMove(){
				let elem = document.querySelector('.animation');
				//這樣寫也可以:elem.style.animationPlayState = 'paused';
				elem.style['animationPlayState'] = 'paused';
			}
		</script>
	</body>
</html>