CSS 회전 큐브

기능 및 렌더링 :

여기에 사진 설명 삽입

이 케이스는 회전하는 큐브이고 전체는 두 개의 큐브로 구성됩니다. 바깥쪽에는 큰 입방체가 있고 안쪽에는 작은 입방체가 있고, 처음에는 전체 입방체가 닫혀 있고 자유롭게 회전합니다. 마우스를 가리키면 크고 작은 입방체가 확장됩니다.

구조 부분 :
<body>
		<div class="box">
			<div><img src="img/01.png" alt="" /></div>
			<div><img src="img/02.png" alt="" /></div>
			<div><img src="img/03.png"/></div>
			<div><img src="img/04.png"/></div>
			<div><img src="img/05.png"/></div>
			<div><img src="img/06.png"/></div>
			<div class="d1"><img src="img/bg01.jpg"/></div>
			<div class="d1"><img src="img/bg1.jpg"/></div>
			<div class="d1"><img src="img/bg2.jpg"/></div>
			<div class="d1"><img src="img/bg3.jpg"/></div>
			<div class="d1"><img src="img/bg4.jpg"/></div>
			<div class="d1"><img src="img/bg5.jpg"/></div>
		</div>
	</body>

구조 부분은 주로 두 부분으로 나뉩니다. 하나는 외부 큰 큐브 (d1)이고 다른 하나는 내부 작은 큐브입니다.

<style type="text/css">
			body {
				background: url(img/b.jpg);
				background-size: cover;
			}
			.box {  //给box设置动画
				transform: rotateZ(-45deg);
				border: 1px solid red;
				margin: 280px auto;
				width: 300px;
				height: 300px;
				position: relative;
				animation-duration:5s; //设置周期时间
				animation-name:name ; //动画关键帧名称
				animation-timing-function:linear ; //设置运动曲线
				animation-iteration-count: infinite; 播放次数:无限循环
				transition: all 1s;
				transform-style: preserve-3d; //开启3D,以3D效果显示
			}
			.box div {
				margin: 50px 0 0 50px;
				transition: all 1s;
				height: 200px;
				width: 200px;
				position: absolute;
				opacity: .5;
				/*border-radius: 50%;*/
			}
			img {
				width: 200px;
				height: 200px;
			}
			.d1 img {
				width: 400px;
				height: 400px;
			}
			@keyframes name{//动画的效果,以各个轴为基准旋转360度
				from{transform: rotateY(0deg) rotateX(0deg) rotateZ(0deg)}
				to{transform: rotateY(360deg) rotateX(360deg) rotateZ(360deg)}
			}
			.box .d1 {
				width: 400px;
				height:400px;
				background-color: darkgray;
				left: -50px;
				top: -50px;
				margin: 0;
				padding: 0;
				opacity: 1;
				border: 1px solid red;
			}
			
			//设置小盒子每个面离原点(z轴距离)100px,并且每个面做一定的旋转,围成一个正方体
			.box div:nth-child(1) {
				background-color: skyblue;
				transform: translateZ(100px); 
			}
			.box div:nth-child(2) {
				transform: rotateY(90deg) translateZ(100px);
				background-color: red;
			}
			.box div:nth-child(3) {
				transform: rotateY(90deg) translateZ(-100px);
				background-color: yellow;
			}
			.box div:nth-child(4) {
				transform: rotateX(90deg) translateZ(100px);
				background-color: pink;
			}
			.box div:nth-child(5) {
				transform: rotateX(90deg) translateZ(-100px);
				background-color: orange;
			}
			.box div:nth-child(6) {
				transform: translateZ(-100px);
				background-color: blue;
			}
			
			
			
			//设置鼠标悬浮时,小盒子的变化:
			  //每个面离原点的距离变为150px,每个面就不会挨在一起,有一定的距离
			.box:hover div:nth-child(1) {
				transform: translateZ(150px);
			}
			.box:hover div:nth-child(2) {
				transform: rotateY(90deg) translateZ(150px);
			}
			.box:hover div:nth-child(3) {
				transform: rotateY(90deg) translateZ(-150px);
			}
			.box:hover div:nth-child(4) {
				transform: rotateX(90deg) translateZ(150px);
			}
			.box:hover div:nth-child(5) {
				transform: rotateX(90deg) translateZ(-150px);
			}
			.box:hover div:nth-child(6) {
				transform: translateZ(-150px);
			}


			 //设置大盒子每个面离原点(z轴距离)200px,且每个面做一定角度的旋转,围成正方体
			.box div:nth-last-child(6) {
				transform: translateZ(200px);
			}
			.box div:nth-last-child(5) {
				transform: rotateY(90deg) translateZ(200px);
			}
			.box div:nth-last-child(4) {
				transform: rotateY(90deg) translateZ(-200px);
			}
			.box div:nth-last-child(3) {
				transform: rotateX(90deg) translateZ(200px);
			}
			.box div:nth-last-child(2) {
				transform: rotateX(90deg) translateZ(-200px);
			}
			.box div:nth-last-child(1) {
				transform: translateZ(-200px);
			}
			
			
			//设置鼠标悬浮时,大盒子的变化:
			  //每个面离原点的距离变为300px,每个面就不会挨在一起,有一定的距离,并且每个面的透明度发生改变,
			  这样就能看到里面的小盒子状态
			.box:hover div:nth-last-child(6) {
				opacity: .5;
				transform: translateZ(300px);
			}
			.box:hover div:nth-last-child(5) {
				opacity: .5;
				transform: rotateY(90deg) translateZ(300px);
			}
			.box:hover div:nth-last-child(4) {
				opacity: .5;
				transform: rotateY(90deg) translateZ(-300px);
			}
			.box:hover div:nth-last-child(3) {
				opacity: .5;
				transform: rotateX(90deg) translateZ(300px);
			}
			.box:hover div:nth-last-child(2) {
				opacity: .5;
				transform: rotateX(90deg) translateZ(-300px);
			}
			.box:hover div:nth-last-child(1) {
				opacity: .5;
				transform: translateZ(-300px);
			}
		</style>
결과

추천

출처blog.csdn.net/BookstoreSpirit/article/details/100399036