用css製作旋轉的立方體

来源:https://www.cnblogs.com/cloudwise/archive/2022/04/18/16160682.html
-Advertisement-
Play Games

作者:安小軒 原文鏈接:https://juejin.cn/post/7086272341994536974 實現一個旋轉的立方體,只需要用css的基本屬性就可以實現。我們一起看看吧~ 一:transform 基本屬性 transform可以實現元素的2D或3D轉換,可以對元素進行旋轉,縮放,移動, ...


作者:安小軒

原文鏈接:https://juejin.cn/post/7086272341994536974

實現一個旋轉的立方體,只需要用css的基本屬性就可以實現。我們一起看看吧~

一:transform 基本屬性

transform可以實現元素的2D或3D轉換,可以對元素進行旋轉,縮放,移動,傾斜等。

基本屬性有:

1. 移動 可以整個設置設置屬性(translate),也可以單個設置某個方向的轉換

  • translate(x,y) 2D 轉換
  • translate3d(x,y,z) 定義 3D 轉換
  • translateX(x) X 軸轉換
  • translateY(y) Y 軸轉換
  • translateZ(z) Z 軸轉換

2. 縮放 可以整個設置設置屬性(scale),也可以單個設置某個方向的縮放

  • scale(x[,y]?) 2D 縮放轉換
  • scale3d(x,y,z) 3D 縮放轉換
  • scaleX(x) 設置 X 軸的值來定義縮放轉換
  • scaleY(y) 設置 Y 軸的值來定義縮放轉換
  • scaleZ(z) 設置 Z 軸的值來定義 3D 縮放轉換

3. 旋轉 可以整個設置設置屬性(rotate),也可以單個設置某個方向的旋轉

  • rotate(angle) 2D 旋轉
  • rotate3d(x,y,z,angle) 3D 旋轉
  • rotateX(angle) 沿著 X 軸的 3D 旋轉
  • rotateY(angle) 沿著 Y 軸的 3D 旋轉
  • rotateZ(angle) 沿著 Z 軸的 3D 旋轉

4. 傾斜 可以整個設置設置屬性(skew),也可以單個設置某個方向的傾斜

  • skew(x-angle,y-angle) 沿著 X 和 Y 軸的 2D 傾斜轉換
  • skewX(angle) 沿著 X 軸的 2D 傾斜轉換
  • skewY(angle) 沿著 Y 軸的 2D 傾斜轉換

5. 設置3d的透視

  • perspective(n) 為 3D 轉換元素定義透視視圖

二:旋轉的立方體

需求分析:繪製6個面,將面進行旋轉,移動組成一個立方體,加入動畫效果,使其旋轉起來。

1. 繪製立方體的6個面

<div class="cube">

    <main>

        <div class="front"></div>

        <div class="back"></div>

        <div class="left"></div>

        <div class="right"></div>

        <div class="top"></div>

        <div class="bottom"></div>

    </main>

</div>

複製代碼
.cube div{

    width: 300px;

    height: 300px;

    position: absolute;

}

.front {

    background: rgba(100, 0, 100, 0.6);

}



.back {

    background: rgba(0, 100, 100, 0.5);

}

.left {

    background: rgba(100, 1000, 100, 0.5);

}

.right {

    background: rgba(1000, 100, 100, 0.5);

}

.top {

    background: rgba(1000, 0, 0, 0.5);

}

.bottom {

    background: rgba(0, 0, 1000, 0.5);

}

複製代碼

如圖,所有面都疊在一起,此時需要設置transform屬性改變每個面的位置,使得其達到3d立方體效果。

2. 將6個面進行縮放旋轉

需要設置外層div在z軸上負向移動150px

transform: translateZ(-150px)

複製代碼

同時要設置3d效果。這樣正面就不會被後面覆蓋

transform-style: preserve-3d;

複製代碼

設置正面,z軸正向移動150px

transform: translateZ(150px);

複製代碼

設置背面,z軸負向移動150px

transform: translateZ(150px);

複製代碼

設置左面,先y軸負向移動150px,再x軸旋轉90°

transform: translateY(-150px) rotateX(90deg);

複製代碼

設置右面,先y軸正向移動150px,再x軸旋轉90°

transform: translateY(150px) rotateX(90deg);

複製代碼

設置上面,先x軸負向移動150px,再y軸旋轉90°

transform: translateX(-150px) rotateY(90deg);

複製代碼

設置下麵,先x軸正向移動150px,再y軸旋轉90°

transform: translateX(150px) rotateY(90deg);

複製代碼

3.立方體加上動畫效果

main {

    animation: rotate 3s linear infinite;

}



@keyframes rotate {

    from {

        transform: rotateX(0) rotateY(0);

    }

     to {

        transform: rotateX(360deg) rotateY(360deg);

    }

}

複製代碼

三:旋轉的立方體的全部代碼

.cube {

    width: 300px;

    height: 300px;

    perspective: 900px;

}

main {

    width: 100%;

    height: 100%;

    transform: translateZ(-150px);

    transform-style: preserve-3d;

    animation: rotate 3s linear infinite;

}

@keyframes rotate {

    from {

        transform: rotateX(0) rotateY(0);

    }

    to {

        transform: rotateX(360deg) rotateY(360deg);

    }

}

.cube div{

    width: 100%;

    height: 100%;

    position: absolute;

}

.front {

    background: rgba(100, 0, 100, 0.6);

    transform: translateZ(150px);

}



.back {

    background: rgba(0, 100, 100, 0.5);

    transform: translateZ(-150px);

}

.left {

    background: rgba(100, 1000, 100, 0.5);

    transform: rotateY(90deg) translateZ(150px) ;

}

.right {

    background: rgba(1000, 100, 100, 0.5);

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

}

.top {

    background: rgba(1000, 0, 0, 0.5);

    transform: rotateX(90deg) translateZ(-150px);

}

.bottom {

    background: rgba(0, 0, 1000, 0.5);

    transform: rotateX(90deg) translateZ(150px);

}

複製代碼

代碼看起來是不是很簡單,只需要利用css的transform的基本屬性就可以實現了。還可以給每個面設置背景圖片,這樣就可以炫一把了,再加上前面的雪花效果,那就更酷了,快動手試試吧~

寫在最後

近年來,在AIOps領域快速發展的背景下,IT工具、平臺能力、解決方案、AI場景及可用數據集的迫切需求在各行業迸發。基於此,雲智慧在2021年8月發佈了AIOps社區, 旨在樹起一面開源旗幟,為各行業客戶、用戶、研究者和開發者們構建活躍的用戶及開發者社區,共同貢獻及解決行業難題、促進該領域技術發展。

社區先後 開源 了數據可視化編排平臺-FlyFish、運維管理平臺 OMP 、雲服務管理平臺-摩爾平臺、 Hours 演算法等產品。

可視化編排平臺-FlyFish:

項目介紹:https://www.cloudwise.ai/flyFish.html

Github地址: https://github.com/CloudWise-OpenSource/FlyFish

Gitee地址: https://gitee.com/CloudWise/fly-fish

行業案例:https://www.bilibili.com/video/BV1z44y1n77Y/

部分大屏案例:


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 鏡像下載、功能變數名稱解析、時間同步請點擊 阿裡雲開源鏡像站 環境需求 環境配置 ①配置靜態地址、主機名 vi /etc/sysconfig/network-scripts/ifcfg-eth0 BOOTPROTO=static IPADDR=192.168.153.70 NETMASK=255.255.2 ...
  • 針對MIPS指令集本身的講解,主要是它上層的彙編表示和下層的機器表示,以及它的訪存方式、操作數等等。同時也對MIPS指令集日落西山表示感慨。 ...
  • 安裝軟體 pacman -S (軟體名):安裝軟體,若有多個軟體包,空格分隔 pacman -S --needed (軟體名):安裝軟體,若存在,不重新安裝最新的軟體 pacman -Sy (軟體名):安裝軟體前,先從遠程倉庫下載軟體包資料庫 pacman -Sv (軟體名):輸出操作信息後安裝 p ...
  • MySQL 的 GRANT和REVOKE 命令 GRANT - 授權 將指定 操作對象 的指定 操作許可權 授予指定的 用戶; 發出該 GRANT語句的可以是資料庫管理員,也可以是該資料庫對象的創建者; 查詢 查看用戶自己許可權 SHOW GRANTS; 查看其他用戶許可權 SHOW GRANTS FOR ...
  • 我們設計了一款分散式菜單應用,不需要個人去關註公眾號或下載小程式,服務員會提供幾個點單的平板,連接店鋪網路,區域網內通信,這樣大家點單、查看訂單詳情等都不受網路限制。 ...
  • 核酸檢測結果包含個人隱私數據且數據量較大,如何在雲端讓核酸檢測人員實現海量數據的安全存儲/查詢成為了核酸檢測數據存儲的首要難題。華為AppGallery Connect提供了認證服務和雲資料庫服務兩大Serverless服務,可分別實現用戶認證登錄、數據寫入/查詢等基本端雲協同功能,可完美解決核酸檢 ...
  • 近日,華為HMS Core手語服務攜手吉林大學、長春大學特教學院聯合打造暖心課堂,在直播網課中加入AI手語翻譯,於人文中融入科技,知識中融入溫暖。 手語翻譯:同學們大家好 HMS Core手語服務通過AI賦能教育,儘可能地為聽障人群提供更多優質的教學資源,讓他們能夠享受到更加公平、更高質量的公共教育 ...
  • 近期在做 epub.js 引擎解析電子書小項目,在閱讀界面通過電子書 rendition 對象的 touch 事件進行手勢翻頁功能時(圖1), 圖1 滑動頁面出現上下和左右方向上的空白部分以及會有回彈的效果(圖2), 圖2 剛開始感覺還挺好看的但後面越感覺越不對,這樣的用戶體驗個人感覺還不如固定視窗 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...