代码解读
	  定义dom,只有1个元素:
	  <divclass="spinner"></div>
	  居中显示:
	  body{
	  margin:0;
	  height:100vh;
	  display:flex;
	  align-items:center;
	  justify-content:center;
	  background-color:silver;
	  }
	  定义容器尺寸:
	  .spinner{
	  width:50vmin;
	  height:50vmin;
	  position:relative;
	  }
	  用before伪元素画出1个像宝路薄荷糖状的黑色圆环:
	  .spinner::before{
	  content:'';
	  position:absolute;
	  box-sizing:border-box;
	  width:inherit;
	  height:inherit;
	  border:12.5vminsolid;
	  border-radius:50%;
	  }
	  接下来制作动画效果。
	  设置透视景深:
	  body{
	  perspective:400px;
	  }
	  让圆环在z轴上运动:
	  .spinner::before{
	  animation:spin1.5sease-in-outinfinitebothreverse;
	  }
	  @keyframesspin{
	  0%,100%{
	  transform:translateZ(10vmin);
	  }
	  60%{
	  transform:translateZ(-10vmin);
	  }
	  }
	  让圆环在z轴距离较大时稍稍倾斜:
	  @keyframesspin{
	  0%,100%{
	  transform:translateZ(10vmin)rotateX(25deg);
	  }
	  60%{
	  transform:translateZ(-10vmin);
	  }
	  }
	  增加缩放效果:
	  @keyframesspin{
	  0%,100%{
	  transform:translateZ(10vmin)rotateX(25deg);
	  }
	  33%{
	  transform:translateZ(-10vmin)scale(0.4);
	  }
	  60%{
	  transform:translateZ(-10vmin);
	  }
	  }
	  用after伪元素再画出一个白色的圆环,并且让它的动画延迟动画总长的一半时间:
	  .spinner::before,
	  .spinner::after{
	  /*略*/
	  animation:spin1.5sease-in-outinfinitebothreverse;
	  }
	  .spinner::after{
	  border-color:white;
	  animation-delay:-0.75s;
	  }
	  接下来制作容器的动画效果,为了不受子元素动画的影响,先暂时屏蔽伪元素的动画效果。
	  .spinner::before,
	  .spinner::after{
	  /*animation:spin1.5sease-in-outinfinitebothreverse;*/
	  }
	  增加容器沿x轴旋转的动画效果,动画时间为子元素动画时间的2倍:
	  .spinner{
	  animation:wobble3sease-in-outinfinite;
	  }
	  @keyframeswobble{
	  0%,100%{
	  transform:rotateX(15deg);
	  }
	  50%{
	  transform:rotateX(60deg);
	  }
	  }
	  增加容器沿y轴旋转的动画效果:
	  @keyframeswobble{
	  0%,100%{
	  transform:rotateX(15deg)rotateY(60deg);
	  }
	  50%{
	  transform:rotateX(60deg)rotateY(-60deg);
	  }
	  }
	  增加容器整体旋转的动画效果:
	  @keyframeswobble{
	  0%,100%{
	  transform:rotateX(15deg)rotateY(60deg);
	  }
	  50%{
	  transform:rotateX(60deg)rotateY(-60deg)rotate(180deg);
	  }
	  }
	  打开子元素的动画效果,使子元素的动画效果和容器的动画效果叠加:
	  .spinner::before,
	  .spinner::after{
	  animation:spin1.5sease-in-outinfinitebothreverse;
	  }
	  最后,使子元素在3d空间上运动:
	  .spinner{
	  transform-style:preserve-3d;
	  }
	  大功告成!
	
	
	
	 
     如需转载,请注明文章出处和来源网址:http://www.divcss5.com/css3-style/c55391.shtml








