纯Css实现加载动画效果

效果:

            

代码实现: 

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>Loading</title>
		<style>
			* {
				margin: 0em;
				padding: 0em;
			}

			.loader {
				position: absolute;
				top: 50%;
				left: 50%;
				-webkit-transform: translate(-50%, -50%);
				-moz-transform: translate(-50%, -50%);
				-mos-transform: translate(-50%, -50%);
				-o-transform: translate(-50%, -50%);
				transform: translate(-50%, -50%);
				text-align: center;
				-webkit-touch-callout: none;
				-webkit-user-select: none;
				-khtml-user-select: none;
				-moz-user-select: none;
				-ms-user-select: none;
				user-select: none;
				cursor: default;
			}

			.text {
				position: absolute;
				left: -1.3em;
				top: -1.7em;
				-webkit-animation: text 2s infinite;
				-moz-animation: text 2s infinite;
				-moz-animation: text 2s infinite;
				-ms-animation: text 2s infinite;
				-o-animation: text 2s infinite;
				animation: text 2s infinite;
			}

			.horizontal {
				position: absolute;
				top: 0em;
				left: 0em;
				-webkit-transform: rotate(0deg);
				-moz-transform: rotate(0deg);
				-ms-transform: rotate(0deg);
				-o-transform: rotate(0deg);
				transform: rotate(0deg);
			}

			.circlesup {
				position: absolute;
				top: -4.7em;
				right: 12.1em;
			}

			.circle {
				position: absolute;
				width: 15em;
				height: 15em;
				-webkit-transform: rotate(45deg);
				-moz-transform: rotate(45deg);
				-ms-transform: rotate(45deg);
				-o-transform: rotate(45deg);
				transform: rotate(45deg);
				-webkit-animation: orbit 2s infinite;
				-moz-animation: orbit 2s infinite;
				-moz-animation: orbit 2s infinite;
				-ms-animation: orbit 2s infinite;
				-o-animation: orbit 2s infinite;
				animation: orbit 2s infinite;
				z-index: 5;
			}

			.circle:after {
				content: '';
				position: absolute;
				width: 2em;
				height: 2em;
				-webkit-border-radius: 100%;
				-moz-border-radius: 100%;
				-ms-border-radius: 100%;
				-o-border-radius: 100%;
				border-radius: 100%;
				background: #17b2f0;
			}

			.circle:nth-child(2) {
				-webkit-animation-delay: 100ms;
				-moz-animation-delay: 100ms;
				-ms-animation-delay: 100ms;
				-o-animation-delay: 100ms;
				animation-delay: 100ms;
				z-index: 4;
			}

			.circle:nth-child(2):after {
				background: #59b9e0;
				-webkit-transform: scale(0.8, 0.8);
				-moz-transform: scale(0.8, 0.8);
				-ms-transform: scale(0.8, 0.8);
				-o-transform: scale(0.8, 0.8);
				transform: scale(0.8, 0.8);
			}

			.circle:nth-child(3) {
				-webkit-animation-delay: 225ms;
				-moz-animation-delay: 225ms;
				-ms-animation-delay: 225ms;
				-o-animation-delay: 225ms;
				animation-delay: 225ms;
				z-index: 3;
			}

			.circle:nth-child(3):after {
				background: #ffa489;
				-webkit-transform: scale(0.6, 0.6);
				-moz-transform: scale(0.6, 0.6);
				-ms-transform: scale(0.6, 0.6);
				-o-transform: scale(0.6, 0.6);
				transform: scale(0.6, 0.6);
			}

			.circle:nth-child(4) {
				-webkit-animation-delay: 350ms;
				-moz-animation-delay: 350ms;
				-ms-animation-delay: 350ms;
				-o-animation-delay: 350ms;
				animation-delay: 350ms;
				z-index: 2;
			}

			.circle:nth-child(4):after {
				background: #ff6d37;
				-webkit-transform: scale(0.4, 0.4);
				-moz-transform: scale(0.4, 0.4);
				-ms-transform: scale(0.4, 0.4);
				-o-transform: scale(0.4, 0.4);
				transform: scale(0.4, 0.4);
			}

			.circle:nth-child(5) {
				-webkit-animation-delay: 475ms;
				-moz-animation-delay: 475ms;
				-ms-animation-delay: 475ms;
				-o-animation-delay: 475ms;
				animation-delay: 475ms;
				z-index: 1;
			}

			.circle:nth-child(5):after {
				background: #DB2F00;
				-webkit-transform: scale(0.2, 0.2);
				-moz-transform: scale(0.2, 0.2);
				-ms-transform: scale(0.2, 0.2);
				-o-transform: scale(0.2, 0.2);
				transform: scale(0.2, 0.2);
			}

			.circlesdwn {
				position: absolute;
				top: 2.5em;
				right: -13.5em;
				-webkit-transform: rotate(180deg);
				-moz-transform: rotate(180deg);
				-ms-transform: rotate(180deg);
				-o-transform: rotate(180deg);
				transform: rotate(180deg);
			}

			.vertical {
				position: absolute;
				top: -1.84em;
				left: -0.4em;
				-webkit-transform: rotate(90deg);
				-moz-transform: rotate(90deg);
				-ms-transform: rotate(90deg);
				-o-transform: rotate(90deg);
				transform: rotate(90deg);
			}

			@-webkit-keyframes text {
				0% {
					transform: scale(.2, .2);
					animation-timing-function: ease-out;
				}

				50% {
					transform: scale(1, 1);
					animation-timing-function: ease-out;
				}

				60% {
					transform: scale(1, 1);
					animation-timing-function: ease-out;
				}

				100% {
					transform: scale(.2, .2);
				}
			}

			@keyframes text {
				0% {
					transform: scale(.2, .2);
					animation-timing-function: ease-out;
				}

				50% {
					transform: scale(1, 1);
					animation-timing-function: ease-out;
				}

				60% {
					transform: scale(1, 1);
					animation-timing-function: ease-out;
				}

				100% {
					transform: scale(.2, .2);
				}
			}

			@-webkit-keyframes orbit {
				0% {
					transform: rotate(45deg);
				}

				5% {
					transform: rotate(45deg);
					animation-timing-function: ease-out;
				}

				70% {
					transform: rotate(405deg);
					animation-timing-function: ease-in;
				}

				100% {
					transform: rotate(405deg);
				}
			}

			@keyframes orbit {
				0% {
					transform: rotate(45deg);
				}

				5% {
					transform: rotate(45deg);
					animation-timing-function: ease-out;
				}

				70% {
					transform: rotate(405deg);
					animation-timing-function: ease-in;
				}

				100% {
					transform: rotate(405deg);
				}
			}

			#content {
				width: 100%;
				height: 100%;
				opacity: 0;
				transition: opacity 0.5s;
			}

			#content iframe {
				width: 100%;
				height: -webkit-fill-available;
			}
		</style>

	</head>
	<body>
		<div class="loader" id="loader">
			<div class="text">Loading...</div>
			<div class="horizontal">
				<div class="circlesup">
					<div class="circle"></div>
					<div class="circle"></div>
					<div class="circle"></div>
					<div class="circle"></div>
					<div class="circle"></div>
				</div>
				<div class="circlesdwn">
					<div class="circle"></div>
					<div class="circle"></div>
					<div class="circle"></div>
					<div class="circle"></div>
					<div class="circle"></div>
				</div>
			</div>
			<div class="vertical">
				<div class="circlesup">
					<div class="circle"></div>
					<div class="circle"></div>
					<div class="circle"></div>
					<div class="circle"></div>
					<div class="circle"></div>
				</div>
				<div class="circlesdwn">
					<div class="circle"></div>
					<div class="circle"></div>
					<div class="circle"></div>
					<div class="circle"></div>
					<div class="circle"></div>
				</div>
			</div>
		</div>
		<div id="content">
			<iframe src="//www.albertyy.com"></iframe>
		</div>
	</body>
	<script>
		document.onreadystatechange = loadingChange; //当页面加载状态改变的时候执行这个方法.
		function loadingChange() {
			if (document.readyState == "complete") { //当页面加载状态为完全结束时进入 
				document.getElementById("loader").style.display = "none";
				document.getElementById("content").style.opacity = 1;
			}
		}
	</script>
</html>

 

posted @ 2020-07-02 14:41  AlbertYang666  阅读(236)  评论(0编辑  收藏  举报

AlbertYang