CSS3打造3D效果——perspective transform的深度剖析

來源:互聯網
上載者:User

標籤:

聲明:此篇博文雖是自己手寫,但大量資源取自 張鑫旭 的博文。想看更詳細 更專業的剖析請看張鑫旭的博文。

昨天對css3的transform做了初步的分析和認識,突然看到perspective屬性,調了半天沒看出任何效果,於是開始百度... ...

度了半天發現perspective這玩意是做3D效果的,但為甚我做demo楞沒看出perspective加上去有任何3D。拜讀過 張鑫旭 的博文後才瞭解perspective是透視(學美術,建築的肯定懂,不懂得我也解釋的不專業,個人理解為景深)。既然perspective是透視,從理解上說就應該用在情境樣式上,情境有了透視元素就能做3D特效了。

先來看看perspective的作用

CSS代碼

        .box{            border:solid 1px #000;            box-sizing:content-box;            margin:100px auto;            width:1000px;            height:300px;            /* 重點看這裡 */            perspective:800px;         }        .child{            box-sizing:content-box;            width:300px;            height:300px;            float:left;            margin-left:5px;            background-color:#87D30A;            /* 重點看這裡 */            transform:rotateY(95deg);        }
View Code

HTML代碼

    <div class="box">        <div class="child"></div>        <div class="child"></div>        <div class="child"></div>        <div style="clear:both;"></div>    </div>
View Code

從這個demo看box父元素上有perspective,child子項目Y軸旋轉95度。從效果看可以想象這三個div的透視可以有一個交點,且這個交點看起來在第二個div附近。

接著,嘗試調整perspective的值,從原來的800px調整到4000px,也就是原來的5倍。其他屬性不變,看看效果。

調整了perspective後發現div旋轉幅度變大了,且透視焦點轉移到了第一個div附近。通過這個調整發現,改變perspective的值透視焦點會發生改變。

        .box{            border:solid 1px #000;            box-sizing:content-box;            margin:100px auto;            width:900px;            height:300px;            /* 重點看這裡 */            perspective:800px;            transition:all 1.5s;        }        .box:hover{            /* 重點看這裡 */            perspective:5px;        }        .child{            box-sizing:content-box;            width:300px;            height:300px;            float:left;            background-color:#87D30A;            /* 重點看這裡 */            transform:rotateY(110deg) translateX(150px);        }
View Code

通過這個demo可以證實perspective的值影響透視焦點的位置。

借一張圖

這就是3D世界的座標圖。而perspective在Z軸上,而perspective是設定Z軸的長度。在css3中只有設定了perspective的值元素才會有Z軸,perspective為none元素則沒有Z軸(就是2D元素)。

rotateZ:div圍繞Z軸旋轉,以div中心點為軸心旋轉

rotateX:div圍繞X軸旋轉,以div橫向中軸為軸心前後翻轉

rotateY:div圍繞Y軸旋轉,以div縱向中軸為軸心左右翻轉

rotate的三個值找到了3D座標,接下來找找perspective透視焦點。

(待續... ...)

CSS3打造3D效果——perspective transform的深度剖析

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.