自学web前端练手——魔方实现(css3+html+js)

以css3的平移、旋转、动画为主体构成。根据别人来弄的,但没有别人的华丽_(:з」∠)_

效果如下:(发现不能传小视频就只能粗略截几张图了)
有九宫格飞出去飞回来的效果(一边旋转一边飞),但只设置飞一次,飞回来后只旋转魔方,但我发现有一个面永远转不到他不知道为啥_(:з」∠)_
自学web前端练手——魔方实现(css3+html+js)_第1张图片
自学web前端练手——魔方实现(css3+html+js)_第2张图片
自学web前端练手——魔方实现(css3+html+js)_第3张图片
自学web前端练手——魔方实现(css3+html+js)_第4张图片
代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>魔方</title>
	<style>
	*{
		margin: 0;
		padding: 0;
	}
	.contain{
		width: 300px;
		height: 300px;
		/*border: 1px solid #000;*/
		margin: 150px auto;
		perspective:20000px;
	}
	.box{
		width: 300px;
		height: 300px;
		transform-style:preserve-3d;
		animation:ro 8s linear infinite;
		-webkit-animation:ro 8s linear infinite;
		-ms-animation:ro 8s linear infinite;
		-o-animation:ro 8s linear infinite;
		/*-webkit-transform: rotateX(45deg) rotateY(45deg);
		-ms-transform: rotateX(45deg) rotateY(45deg);
		-o-transform: rotateX(45deg) rotateY(45deg);
		transform: rotateX(45deg) rotateY(45deg);*/
	}
	@keyframes ro{
		0%{
			-webkit-transform: rotateX(0deg) rotateY(0deg);
			-ms-transform: rotateX(0deg) rotateY(0deg);
			-o-transform: rotateX(0deg) rotateY(0deg);
			transform: rotateX(0deg) rotateY(0deg);
		}
		100%{
			-webkit-transform: rotateX(360deg) rotateY(360deg);
			-ms-transform: rotateX(360deg) rotateY(360deg);
			-o-transform: rotateX(360deg) rotateY(360deg);
			transform: rotateX(360deg) rotateY(360deg);
		}
	}
	.box-page{
		width: 300px;
		height: 300px;
		position: absolute;
		transform-style:preserve-3d;
	}
	.top{
		/*background-color: red;*/
		-webkit-transform: translateZ(150px);
		-ms-transform: translateZ(150px);
		-o-transform: translateZ(150px);
		transform: translateZ(150px);
	}
	.bottom{
		/*background-color: green;*/
		-webkit-transform: translateZ(-150px) rotateX(180deg);
		-ms-transform: translateZ(-150px) rotateX(180deg);
		-o-transform: translateZ(-150px) rotateX(180deg);
		transform: translateZ(-150px) rotateX(180deg);
	}
	.left{
		/*background-color: orange;*/
		-webkit-transform: translateX(-150px) rotateY(-90deg);
		-ms-transform: translateX(-150px) rotateY(-90deg);
		-o-transform: translateX(-150px) rotateY(-90deg);
		transform: translateX(-150px) rotateY(-90deg);
	}
	.right{
		/*background-color: pink;*/
		-webkit-transform: translateX(150px) rotateY(90deg);
		-ms-transform: translateX(150px) rotateY(90deg);
		-o-transform: translateX(150px) rotateY(90deg);
		transform: translateX(150px) rotateY(90deg);
	}
	.before{
		/*background-color: blue;*/
		-webkit-transform: translateY(150px) rotateX(-90deg);
		-ms-transform: translateY(150px) rotateX(-90deg);
		-o-transform: translateY(150px) rotateX(-90deg);
		transform: translateY(150px) rotateX(-90deg);
	}
	.after{
		/*background-color: yellow;*/
		-webkit-transform: translateY(-150px) rotateX(90deg);
		-ms-transform: translateY(-150px) rotateX(90deg);
		-o-transform: translateY(-150px) rotateX(90deg);
		transform: translateY(-150px) rotateX(90deg);
	}
	.box-page div:nth-child(1){
		animation:a1 4.5s ease-in;
	}
	.box-page div:nth-child(2){
		animation:a1 4.5s ease-in 0.5s;
	}
	.box-page div:nth-child(3){
		animation:a1 4.5s ease-in 1s;
	}
	.box-page div:nth-child(4){
		animation:a1 4.5s ease-in 1.5s;
	}
	.box-page div:nth-child(5){
		animation:a1 4.5s ease-in 2s;
	}
	.box-page div:nth-child(6){
		animation:a1 4.5s ease-in 2.5s;
	}
	.box-page div:nth-child(7){
		animation:a1 4.5s ease-in 3s;
	}
	.box-page div:nth-child(8){
		animation:a1 4.5s ease-in 3.5s;
	}
	.box-page div:nth-child(9){
		animation:a1 4.5s ease-in 4s;
	}
	@keyframes a1{
		0%{
			-webkit-transform: translateZ(0px) scale(1) rotateZ(0deg);
			-ms-transform: translateZ(0px) scale(1) rotateZ(0deg);
			-o-transform: translateZ(0px) scale(1) rotateZ(0deg);
			transform: translateZ(0px) scale(1) rotateZ(0deg);
		}
		20%{
			-webkit-transform: translateZ(300px) scale(0) rotateZ(720deg);
			-ms-transform: translateZ(300px) scale(0) rotateZ(720deg);
			-o-transform: translateZ(300px) scale(0) rotateZ(720deg);
			transform: translateZ(300px) scale(0) rotateZ(720deg);
		}
		80%{
			-webkit-transform: translateZ(300px) scale(0) rotateZ(720deg);
			-ms-transform: translateZ(300px) scale(0) rotateZ(720deg);
			-o-transform: translateZ(300px) scale(0) rotateZ(720deg);
			transform: translateZ(300px) scale(0) rotateZ(720deg);
		}
		100%{
			-webkit-transform: translateZ(0px) scale(1) rotateZ(0deg);
			-ms-transform: translateZ(0px) scale(1) rotateZ(0deg);
			-o-transform: translateZ(0px) scale(1) rotateZ(0deg);
			transform: translateZ(0px) scale(1) rotateZ(0deg);
		}
	}
	</style>
</head>
<body>
	<div class="contain">
		<div class="box">
			<div class="box-page top"></div>
			<div class="box-page bottom"></div>
			<div class="box-page left"></div>
			<div class="box-page right"></div>
			<div class="box-page before"></div>
			<div class="box-page after"></div>
		</div>
	</div>
	<script>
	var arr=document.querySelectorAll(".box-page");
	for(var n=0;n<arr.length;n++){//遍历每个面
		for(var i=0;i<3;i++){//遍历行
			for(var j=0;j<3;j++){//遍历列
				var divs=document.createElement("div");
				divs.style.cssText="width:100px;height:100px;border:1px solid #fff;box-sizing:border-box;position:absolute;background-image:url(img/a"+n+".jpg);background-size:300px 300px;"
				arr[n].appendChild(divs);
				divs.style.left=j*100+"px";
				divs.style.top=i*100+"px";
				divs.style.backgroundPositionX=-j*100+"px";
				divs.style.backgroundPositionY=-i*100+"px";
			}
		}
	}
	</script>
</body>
</html>

你可能感兴趣的:(自学web前端,css3,html,js)