css绘制旋转的球体

1,661 阅读2分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

主要实现一个球体旋转的效果,所谓的旋转球体,就是让每条线相聚一定距离,然后旋转,在设置动画,运动起来看着就像球体旋转一样。

绘制

容器

我们需要准备一个容器来渲染这个球体。我们需要景深元素,需要线的元素等。

<div class="eyes">
	<div class="box">
		<div class="div1"></div>
		<div class="div2"></div>
		<div class="div3"></div>
		<div class="div4"></div>
		<div class="div5"></div>
	</div>
</div>

设置样式

在这些dom基础上,我们给它添加一些样式,让他们灵活起来。

景深

景深是指相机对焦点前后相对清晰的成像范围。在光学中,尤其是录影或是摄影,是一个描述在空间中,可以清楚成像的距离范围。虽然透镜只能够将光聚 到某一固定的距离,远离此点则会逐渐模糊,但是在某一段特定的距离内,影像模糊的程度是肉眼无法察觉的,这段距离称之为景深。当焦点设在超焦距处时,景深 会从超焦距的一半延伸到无限远,对一个固定的光圈值来说,这是最大的景深。

说白了就是提供立体效果的。

.eyes{
	perspective: 1200px;
	perspective-origin: 50% 50%;
	background-color: black;
}
.box{
	transform-style: preserve-3d;
	-webkit-animation:wei 30s infinite linear;
	//动画设置animation
	margin:100px auto;
	position: relative;
	width: 600px;
	height: 600px;
}

间轴线设置

.box:before{
	content: " ";
	width: 600px;
	border:1px solid gold;
	display: block;
	transform: rotateZ(90deg) translateX(300PX);
}

五条线的设置

.box >div{
	width: 300px;
	height:300px;
	border:2px solid white;
	position: absolute;
	top: 150px;
	left: 150px;
	border-radius: 50%;
}
.div1{
	transform: rotateY(0deg);
}
.div2{
	transform: rotateY(36deg);
}
.div3{
	transform: rotateY(72deg);
}
.div4{
	transform: rotateY(108deg);
}
.div5{
	transform: rotateY(144deg);
}

开启动画

@-webkit-keyframes wei{
	from{
		transform: rotateZ(-30deg) rotateY(0deg);
	}
	to{
		transform: rotateZ(-30deg) rotateY(3600deg);
	}
}