純CSS繪製3D立方體

来源:https://www.cnblogs.com/zhangjinling1993/archive/2019/08/09/3d_box.html
-Advertisement-
Play Games

本篇記錄的是使用CSS3繪製3D立方體,並旋轉起來。 我的思路: 1️⃣ 首先,用div元素畫6個正方形摞在一起放在畫布中間。為了區分,分別給每個div選擇了不同的顏色,並且設置為半透明方便透視。 2️⃣ 將6個div元素分為三組(上下一組、左右一組、前後一組),想象以畫布中心為圓點,使三組分別沿x ...


本篇記錄的是使用CSS3繪製3D立方體,並旋轉起來。

 

我的思路: 1️⃣ 首先,用div元素畫6個正方形摞在一起放在畫布中間。為了區分,分別給每個div選擇了不同的顏色,並且設置為半透明方便透視。 2️⃣ 將6個div元素分為三組(上下一組、左右一組、前後一組),想象以畫布中心為圓點,使三組分別沿x/y/z軸旋轉90度。 3️⃣ 上下一組,一張向上推50%正方形邊長,一張向下推50%正方形邊長;左右同理向左右推50%邊長,前後同理向前後推50%邊長。 4️⃣ 整體旋轉展示。

 


※ Html代碼&CSS樣式佈局:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
<style>
.container {
width: 400px;
height: 400px;
border: 1px solid #cccccc;
}
 

.box {
position: relative;
width: 100px;
height: 100px;
margin: auto;
margin-top: 150px;
transform-style: preserve-3d;
}
 

.box div {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
opacity: .5;
transform-origin: center;
}
 

.box div:nth-of-type(1) {
 
}
 

.box div:nth-of-type(2) {
background-color: yellow;
}
 

.box div:nth-of-type(3) {
background-color: green;
}
 

.box div:nth-of-type(4) {
background-color: blue;
}
 

.box div:nth-of-type(5) {
background-color: black;
}
 

.box div:nth-of-type(6) {
background-color: darkmagenta;
}
</style>
</head>
<body>
 

<div class="container">
<div class="box animate">
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
</div>
</div>
</body>
</html>

  

 

※ CSS3添加6個正方形的動畫效果
.box.animate div {
animation: ease 4s 0s infinite;
}
 

.box.animate div:nth-of-type(1) {
animation-name: box1-move;
}
 

.box.animate div:nth-of-type(2) {
animation-name: box2-move;
}
 

.box.animate div:nth-of-type(3) {
animation-name: box3-move;
}
 

.box.animate div:nth-of-type(4) {
animation-name: box4-move;
}
 

.box.animate div:nth-of-type(5) {
animation-name: box5-move;
}
 

.box.animate div:nth-of-type(6) {
animation-name: box6-move;
}
 

@keyframes box1-move {
0% {
transform: rotatex(0deg);
}
25% {
transform: rotatex(90deg);
}
50% {
transform: rotatex(90deg) translatez(50px);
}
100% {
transform: rotatex(90deg) translatez(50px);
}
}
 

@keyframes box2-move {
0% {
transform: rotatex(0deg);
}
25% {
transform: rotatex(90deg);
}
50% {
transform: rotatex(90deg) translatez(-50px);
}
100% {
transform: rotatex(90deg) translatez(-50px);
}
}
 

@keyframes box3-move {
0% {
transform: rotatex(0deg);
}
25% {
transform: rotatey(90deg);
}
50% {
transform: rotatey(90deg) translatez(50px);
}
100% {
transform: rotatey(90deg) translatez(50px);
}
}
 

@keyframes box4-move {
0% {
transform: rotatex(0deg);
}
25% {
transform: rotatey(90deg);
}
50% {
transform: rotatey(90deg) translatez(-50px);
}
100% {
transform: rotatey(90deg) translatez(-50px);
}
}
 

@keyframes box5-move {
0% {
 

}
25% {
transform: translatez(0px);
}
50% {
transform: translatez(50px);
}
100% {
transform: translatez(50px);
}
}
 

@keyframes box6-move {
0% {
 

}
25% {
transform: translatez(0px);
}
50% {
transform: translatez(-50px);
}
100% {
transform: translatez(-50px);
}
}

  

 

※ 添加整提旋轉動畫
.box.animate {
animation: box-move ease 4s 0s infinite;
}
 

@keyframes box-move {
0% {
transform: rotatex(0deg) rotatey(0deg)
}
50% {
transform: rotatex(45deg) rotatey(45deg)
}
100% {
transform: rotatex(405deg) rotatey(405deg)
}
}

  

 

動畫轉的我有點頭暈
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在 HTML DOM 中, 元素對象代表著一個 HTML 元素。 元素對象 的 子節點可以是, 可以是元素節點,文本節點,註釋節點。 NodeList 對象 代表了節點列表,類似於 HTML元素的子節點集合。 Element對象的屬性和方法 1.元素特性相關屬性 element.id 設置/返回元素 ...
  • 背景 : win10 使用 yarn 全局 安裝 vue/cli 後 yarn global add @vue/cli 提示安裝成功 使用vue create 提示 bash: vue command not found 經過一番搜索。。。。。。原來是 環境變數的問題 首先找到yarn 全局安裝vu ...
  • 計算屬性computed : 1. 支持緩存,只有依賴數據發生改變,才會重新進行計算 2. 不支持非同步,當computed內有非同步操作時無效,無法監聽數據的變化 3.computed 屬性值會預設走緩存,計算屬性是基於它們的響應式依賴進行緩存的,也就是基於data中聲明過的數據通過計算得到的 4. ...
  • 或者重新建一個[] 然後重新push ...
  • 一 概念 什麼是迴流? 迴流也叫重排(reflow),當頁面中的元素髮生影響佈局的變化,比如:改變寬高,修改顯示影藏。頁面需要重新佈局,就會觸發重排。 簡單的說就是,頁面佈局改變,就會觸發重排。 什麼是重繪(repaint)? 頁面中的元素樣式發生改變,比如:背景顏色,背景圖片,字體顏色的樣式改變。 ...
  • ps : 谷歌瀏覽器需要是https的網址,不然會提示不安全, 不能修改通知許可權,無法實現彈框 ...
  • 這裡,我用一個註冊登錄兩組件的切換實例來演示: 切換方式一 這個方式唯一的缺陷就是只能在兩個組件之前切換,當要求需要三個及三個以上的組件切換的時候,這就不行了(原因是 flag 只有 true 和 false 兩個值),這就要要使用 方式二了。 切換方式二 這裡,我們需要學到一個 Vue 官方 提供 ...
  • Document 對象是是window對象的一個屬性,因此可以將document對象作為一個全局對象來訪問。 當瀏覽器載入 HTML 文檔, 它就會成為 Document 對象。 Document對象的 屬性和方法 1.html元素和body對象 document.documentElement 獲 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...