HTML5實現立方體及透視效果


 

通過對於HTML5的學習,實現一個具有透視效果的立方體盒子:

具體實現方法如下

  • 我們需要先生成6個面,並添加樣式
  • 由於transform變換后會回到原始狀態,因此必須添加3d變換效果
/*讓子元素保留3d變換效果*/
transform-style: preserve-3d;
  • 為了方便觀看,再添加一個旋轉效果
  • 之后只需要將前后面分別平移,左右上下面移動再旋轉就可以實現,比較重要的就是的注意旋轉方向,根據左手定則而定。

3D坐標系

旋轉的方向:(左手法則)

左手握住旋轉軸,豎起拇指指向旋轉軸的正方向,正向就是其余手指卷曲的方向

所有的3d旋轉,對着正方向去看,都是順時針旋轉。

透視效果

 /*添加透視景深效果*/
perspective: 1px;

 通過改變其值,我們可以看到一個從盒子內部視角到外部視角的效果。

/*設置透視的觀察角度*/
perspective-origin: 0px 0px;

 通過設置x點的值,可以實現左右視角觀測立方體,設置y點的值,可以實現上下視角觀測立方體,

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>立體盒子</title>
    <style>
        .box{
            height:200px;
            width: 200px;
            margin: 100px auto;
            position: relative;
            transform: rotate3d(1,1,0,-30deg);
            /*讓子元素保留3d變換效果*/
            transform-style: preserve-3d;
            /*添加透視景深效果*/
            perspective: 1px;
            /*設置透視的觀察角度*/
            perspective-origin: 0px 0px;
        }
        .box > div{
            width: 200px;
            height: 200px;
            position: absolute;
            opacity: 0.6;
        }
        .front{
            background-color: red;
            /*變化完畢后會回到原始狀態*/
            transform: translateZ(100px);
        }
        .back{
            background-color: yellowgreen;
            transform: translateZ(-100px) rotateY(180deg);
        }
        .left{
            background-color: grey;
            /*移動加旋轉*/
            transform: translateX(-100px) rotateY(-90deg);
        }
        .right{
            background-color: magenta;
            transform: translateX(100px) rotateY(90deg);
        }
        .top{
            background-color: deepskyblue;
            transform: translateY(-100px) rotateX(90deg);
        }
        .bottom{
            background-color: peachpuff;
            transform: translateY(100px) rotateX(-90deg);
        }
    </style>
</head>
<body>
<div class="box">
    <div class="front">front</div>
    <div class="back">back</div>
    <div class="left">left</div>
    <div class="right">right</div>
    <div class="top">top</div>
    <div class="bottom">bottom</div>
</div>

</body>
</html>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM