《前端5分鐘》之使用CSS3實現酷炫的3D旋轉透視

2021-01-11 酷扯兒

本文轉載自【微信公眾號:趣談前端,ID:beautifulFront】經微信公眾號授權轉載,如需轉載與原文作者聯繫

你將學到

CSS3 3D 轉換的常用API介紹CSS3 3D 應用場景CSS3 3D 實現一個立方體開始

1.CSS3 3D 轉換的常用API介紹

首先先上一張css 3D的坐標系:

接下來我們來介紹幾個常用的api:

旋轉

rotateX()rotateY()rotateZ()以上幾個api分別代表繞x,y,z軸旋轉,如下例子為繞x軸旋轉的例子:

相關代碼如下:

<style>

.d3-wrap {

position: relative;

width: 300px;

height: 300px;

margin: 120px auto;

/* 規定如何在 3D 空間中呈現被嵌套的元素 */

transform-style: preserve-3d;

transform: rotateX(0) rotateY(45deg);

transform-origin: 150px 150px 150px;

}

.rotateX {

width: 200px;

height: 200px;

background-color: #06c;

transition: transform 2s;

animation: rotateX 6s infinite;

}

@keyframes rotateX {

0% {

transform: rotateX(0);

}

100% {

transform: rotateX(360deg);

}

}

</style>

<div>

<div></div>

</div>

位移(Transform)

translateX(x) 定義 3D 轉化,僅使用用於 X 軸的值translateY(y) 定義 3D 轉化,僅使用用於 Y 軸的值translateZ(z) 定義 3D 轉化,僅使用用於 Z 軸的值

以上幾個api分別代表相對x,y,z軸的位移,如下例子為向z軸位移的例子:

這裡我們需要注意的是為了能看出位移的效果,我們需要在父容器上加如下屬性:

.d3-wrap {

transform-style: preserve-3d;

perspective: 500;

/* 設置元素被查看位置的視圖 */

-webkit-perspective: 500;

}

當為元素定義 perspective 屬性時,其子元素會獲得透視效果,而不是元素本身。

代碼如下:

.d3-wrap {

position: relative;

width: 300px;

height: 300px;

margin: 120px auto;

transform-style: preserve-3d;

perspective: 500;

-webkit-perspective: 500;

transform: rotateX(0) rotateY(45deg);

transform-origin: center center;

}

.transformZ {

width: 200px;

height: 200px;

background-color: #06c;

transition: transform 2s;

animation: transformZ 6s infinite;

}

@keyframes transformZ {

0% {

transform: translateZ(100px);

}

100% {

transform: translateZ(0);

}

}

3D縮放

scaleX(x) 給定一個 X 軸的3D 縮放轉換值scaleY(x) 給定一個 Y 軸的3D 縮放轉換值scaleZ(x) 給定一個 Z 軸的3D 縮放轉換值縮放設置和上面的類似,這裡就不做過多介紹了。

理論上說以上三種常見變換已經夠用了,值得關注的是我們要想讓元素呈現出3D效果,以下不可忽視的API也很重要:

2.CSS3 3D 應用場景

css 3D主要應用在網站的交互和模型效果上,比如:

3D輪播圖3D產品介紹室內3D仿真h5 3D活動頁面,比較典型的就是某年淘寶的年終總結H53D數據可視化成圖3D模型圖

其實如果css 3D用的熟悉了,一些基本的3D模型完全可以用css畫出來。

3.CSS3 3D 實現一個立方體

核心思路就是用6個面去拼接,通過設置rotate和translate來調整相互之間的位置,如下:

具體代碼如下:

.container {

position: relative;

width: 300px;

height: 300px;

margin: 120px auto;

transform-style: preserve-3d;

/* 為了讓其更有立體效果 */

transform: rotateX(-30deg) rotateY(45deg);

transform-origin: 150px 150px 150px;

animation: rotate 6s infinite;

}

.container .page {

position: absolute;

width: 300px;

height: 300px;

text-align: center;

line-height: 300px;

color: #fff;

background-size: cover;

}

.container .page:first-child {

background-image: url(./my.jpeg);

background-color: rgba(0,0,0,.2);

}

.container .page:nth-child(2) {

transform: rotateX(90deg);

transform-origin: 0 0;

transition: transform 10s;

background-color: rgba(179, 15, 64, 0.6);

background-image: url(./my2.jpeg);

}

.container .page:nth-child(3) {

transform: translateZ(300px);

background-color: rgba(22, 160, 137, 0.7);

background-image: url(./my3.jpeg);

}

.container .page:nth-child(4) {

transform: rotateX(-90deg);

transform-origin: -300px 300px;

background-color: rgba(210, 212, 56, 0.2);

background-image: url(./my4.jpeg);

}

.container .page:nth-child(5) {

transform: rotateY(-90deg);

transform-origin: 0 0;

background-color: rgba(201, 23, 23, 0.6);

background-image: url(./my5.jpeg);

}

.container .page:nth-child(6) {

transform: rotateY(-90deg) translateZ(-300px);

transform-origin: 0 300px;

background-color: rgba(16, 149, 182, 0.2);

background-image: url(./my6.jpeg);

}

html結構

<div>

<div>A</div>

<div>B</div>

<div>C</div>

<div>D</div>

<div>E</div>

<div>F</div>

</div>

擴展

我們可以基於上面介紹的,給父元素添加動畫或者拖拽效果,這樣就可以做成更有交互性的3D方塊了,比如置骰子遊戲,vr場景,3D相冊等等,具體實現我會抽空依次總結出來~

相關焦點

  • 前端工程師必備的css3動畫技巧
    本文轉載自【微信公眾號:趣談前端,ID:beautifulFront】經微信公眾號授權轉載,如需轉載與原文作者聯繫本文是筆者之前文章用css3實現驚豔面試官的背景即背景動畫(高級附源碼)的續篇也是介紹css3技巧的文章,因為css這塊知識難點不是很多,更多的在於去熟悉css3的新特性和基礎理論知識。
  • H5和CSS3裡面3D動畫的運用
    現在的H5真是越來越強大 , 2D已經滿足不了網絡的需求 ,越來越多的網站為了享受視覺體驗都開始使用3D效果來做網頁了那麼CSS3給我們提供了哪些3D的屬性效果呢 ?像圖片上的效果應該怎麼來實現呢?,想要看到,可以使用下面的 視距 屬性設置那我們就必須開啟透視了(perspective)通過改變z軸的值 ,讓我們的眼睛來看出不同的視覺效果(3)視距 perspertive(透視)在2D平面產生近大遠小視覺立體,但是效果是二維的 ,如果想要在網頁產生
  • 前端工程師必備的css3動畫技巧(附源碼)
    我們將學到正文1.box-shadow的高級應用利用css3的新特性可以幫助我們實現各種意想不到的特效,接下來的幾個案例我們來使用css3的box-shdow來實現,馬上開始吧!實現水波動畫想想我們如果不用css3,是怎麼實現水波擴散的動畫呢?
  • 前端頁面如何實現2d3d動態效果詳解
    transform屬性向元素應用 2D 或 3D 轉換該屬性允許我們對元素進行旋轉縮放移動或傾斜。translate(x,y)rotate(45deg)旋轉scale(x軸倍數,y軸倍數)縮放skew(x軸deg,y軸deg)傾斜translateX() 只橫向移動 水平方向 如往反方向移動寫負值旋轉格式transform: rotate();旋轉太生硬 加過渡transform
  • 《前端5分鐘》之使用純css實現網站換膚和焦點圖切換動畫
    本文轉載自【微信公眾號:趣談前端,ID:beautifulFront】經微信公眾號授權轉載,如需轉載與原文作者聯繫今天我們來繼續復盤一些工作中常用的css技巧和知識,以便我們可以更加優雅的用css實現富有動感的網站.
  • 2020年軍隊文職考試專業科目:【Web前端基礎知識】CSS3 3D 變換
    下面是為大家準備的計算機知識:【Web前端基礎知識】CSS3 3D 變換。什麼是3d的場景呢? 3d場景是如何實現的呢?它有和2d有哪些區別和聯繫呢,接下來下邊和大家一起來看看,2d場景,在屏幕上水平和垂直的交叉線x軸和y軸,3d場景,在垂直於屏幕的方法,相對於3d多出個z軸,Z軸:靠近屏幕的方向是正向,遠離屏幕的方向是反向。
  • DIV CSS3和html5 CSS3有什麼區別
    首先,不管是DIV+CSS3還是html5+CSS3,他們都是我們對網頁開發布局方式的統稱,但是DIV+CSS3作為網頁的基礎開發這句話其實並不嚴謹,因為而div只是HTML的一個比較重要的元素而已,而標準的叫法應是HTML+CSS,我們要比較的其實是html+css3和html5
  • Web前端:CSS3——3種隱藏元素方法的區別
    Web前端教程 CSS3規範的一個新特點是被分為若干個相互獨立的模塊。一方面分成若干較小的模塊較利於規範及時更新和發布,及時調整模塊的內容,這些模塊獨立實現和發布,也為日後CSS的擴展奠定了基礎。另外一方面,由於受支持設備和瀏覽器廠商的限制,沒備或者廠商可以有選擇的支持一部分模塊,支持css3的一個子集,這樣有利於CSS3的推廣。
  • 前端—— CSS3動畫
    雖說IE9以及更早版本的IE瀏覽器都不支持css3動畫,但是IE6-8瀏覽器已是江河日下,使用谷歌瀏覽器、火狐瀏覽器、IE10+瀏覽器以及移動端瀏覽器等這些支持css3動畫的瀏覽器的人數越來越多,所以如果很簡單的就能讓一部分人獲得更好的用戶體驗,那何樂而不為呢。
  • PPT的3D旋轉效果如何更好的使用?
    PPT的3D旋轉效果如何來更好的使用?其實這種3d旋轉效果感覺比較花哨,建議大家不要太頻繁的使用,但是適當的使用還可以增加這個幻燈片的質感,一起來看看操作了。1.首先我們插入圖片,點擊格式,找到圖片效果。
  • css3動畫怎麼實現旋轉效果
    華清遠見成都中心高端IT就業培訓專家伴隨HTML5而來的CSS3讓前端小夥伴們可以用簡單的CSS樣式即可寫出動畫效果來,而在這之前,一提到動畫我們可能會想到JavaScript,Flash,等。原理有點像使用Adobe公司的Flash軟體來製作動畫。比如定義好一個物體的開始位置及狀態,0秒的時候一個紅色50X50的矩形處於畫面中央,再將畫面定位於時間軸上3秒處,將矩形設為100X100黃色。再右鍵添加補間動畫。這樣一個簡單的動畫便完成了。像關於位移,顏色漸變,甚至旋轉,3D效果等的動畫,現在都可以用CSS來做了。
  • 關於使用CSS3實現元素樣式過渡的解決方案
    1 問題描述在Web前端開發的學習中,從最初的HTML超文本標記語言到CSS層疊樣式表再到JavaScript直譯式腳本語言,我們會對網頁製作產生各種各樣的疑問。例如,我們通常認為,在網頁製作中實現圖像變換是通過Flash動畫或JavaScript實現,其實使用CSS3也可以實現這一需求。
  • 推薦9款使用CSS3實現的超酷動畫效果
    本周極客社區推薦9款使用CSS3實現的超酷前端動畫效果。希望對大家有所幫助!CSS實現的電路板效果金屬質感強烈,規則順序的電路板排序應該是可以非常之廣泛使用的,它看起來更像是分子結構。點擊下方連接,可以查看到原始碼。
  • 《前端5分鐘》之使用解釋器模式實現獲取元素Xpath路徑的算法
    本文轉載自【微信公眾號:趣談前端,ID:beautifulFront】經微信公眾號授權轉載,如需轉載與原文作者聯繫前端領域裡基於javascript的設計模式和算法有很多,在很多複雜應用中也扮演著很重要的角色,接下來就介紹一下javascript設計模式中的解釋器模式,並用它來實現一個獲取元素Xpath路徑的算法
  • 變型不再依賴js,css3就能搞定,前端大神必須知道
    css3中的Transform是用來對元素進行變形;Transition:是控制元素變型的時間。該屬性允許我們對元素進行旋轉、縮放、移動或傾斜。一.CSS3 2D 轉換通過 CSS3 轉換,我們能夠對元素進行移動、縮放、轉動、拉長或扭曲。
  • 前端開發者如何利用 CSS 實現酷炫的變色方案?
    該函數與已有的box-shadow box-shadow屬性很相似,不同之處在於,通過濾鏡,一些瀏覽器為了更好的性能會提供硬體加速。因此RGB轉換後就是:200x1.76,100x0.2,50x-0.5。
  • 因為CSS3,動畫將一切皆有可能
    熱火朝天的css3無疑吸引了很多前端開發者的眼球,然而在css3中的動畫屬性則是新功能中的主打招牌,說到css3的動畫屬性不得不讓人想起這三個屬性:Transform﹑Transition﹑Animation。
  • 用css3實現背景即背景動畫(高級附源碼)
    本文轉載自【微信公眾號:趣談前端,ID:beautifulFront】經微信公眾號授權轉載,如需轉載與原文作者聯繫我們傳統的前端更多的是用javascript實現各種複雜動畫,自從有了Css3 transition和animation以來,前端開發在動畫這一塊有了更高的自由度和格局,對動畫的開發也越來越容易。
  • 前端書籍和學習資源推薦
    1、前端知識體系:2、技術資訊類W3Cfuns : 前端網(W3Cfuns)——國內最大的前端站,比較全大前端:大前端_關注前端開發和wordpress主題的博客——沒有W3Cfuns那麼雜,有些wodpress的主題,「前端導航」也比較好用W3Cplus