CSS3中的3D效果

相对于2D多了一个Z轴,垂直于屏幕

transform属性

transform:向元素应用2D或者3D转换,在3D效果下可结合translate平移,rotate()旋转,skew()扭曲,scale()缩放

transform-origin:被转换元素的中心位置,默认在中心

transform-style:开启3D模式的属性

  flat:子元素不保留3D位置

  preserve-3d:子元素保留3D位置,开启3D模式

perspective:视点

  none:没有3D空间

  取值越小,3D效果越明显,0或者无穷大等价于none

perspective-origin:视点的位置

backface-visibility:设置当前元素不面向屏幕是否可见

  visible:默认值,可见

  hidden:不可见

总的来说3D效果实现纸面上看起来很简单,但需要自己去体会,以下是旋转立方体代码,可以自己尝试写一写,感受一下各个属性:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>CSS3实现旋转立方体</title>
        <style type="text/css">
            *{
        margin: 0;
        padding: 0;
       } ul li{
        list-style: none;
       } .box{ width: 400px; height: 400px; border: 2px #FF0000 solid; margin: 100px auto; perspective: 1200px;/*视点远近*/ } .box ul{ width: 300px; height: 300px; border: 1px #00f solid; margin: 50px auto; position: relative; transform-style: preserve-3d; /*开启3D模式*/ animation: move 2.5s infinite linear; /*animation动画*/
/*旋转的焦点位置,整个正方体围绕哪个焦点旋转,现在是围绕正方体内部中心点 */ transform-origin: center center 150px; } .box ul li{ width: 300px; height: 300px; font-size: 30px; color: aliceblue; text-align: center; line-height: 300px; position: absolute; }
       /*调整元素的位置,拼成正方体*/ .box ul li:nth-of-type(1){
          background-color: red;opacity:0.4;
        } .box ul li:nth-of-type(2){
          background-color: blue;opacity:0.4;
          transform: translateX(300px)rotateY(-90deg);
          transform-origin: left ;
       } .box ul li:nth-of-type(3){
          background-color: yellow;
          opacity:0.4;
          transform: translateX(-300px)rotateY(90deg);
          transform-origin: right;
        } .box ul li:nth-of-type(4){
          background-color: green;
          opacity:0.4;
          transform: translateY(-300px)rotateX(-90deg);
          transform-origin: bottom;
        } .box ul li:nth-of-type(5){
          background-color: yellowgreen;  
          opacity:0.4;
          transform: translateY(300px)rotateX(90deg);
          transform-origin: top;} .box ul li:nth-of-type(6){
          background-color: purple;
          opacity:0.4;
          transform: translateZ(300px);
        }
       /*旋转动画*/ @keyframes move{ from{transform: rotateY(0deg);} to{transform: rotateY(360deg);} } </style> </head> <body> <div class="box"> <ul> <li>1</li> <li>2</li> <li>3</li> <li>4</li> <li>5</li> <li>6</li> </ul> </div> </body> </html>
上一篇:OpenCV+Tensorflow 人工智能图像处理(八)——矩阵运算


下一篇:快速用梯度下降法实现一个Logistic Regression 分类器