本文演示如何用css3創建類似Webpack logo的3D立方體效果,解決旋轉和遮擋問題。 之前的嘗試中,使用多個元素構建立方體導致旋轉和遮擋效果難以實現。目標是:內嵌立方體部分覆蓋外層立方體,并呈現粗邊框樣式。關鍵在于巧妙運用css3的transform屬性控制立方體旋轉和層疊,以及通過邊框樣式實現視覺上的粗邊框效果。
解決方案采用嵌套div元素構建內外兩個立方體:外層立方體為Webpack logo主體,內層立方體用于遮擋。 通過精確設置transform屬性,控制立方體旋轉角度和位置。
html結構:
立即學習“前端免費學習筆記(深入)”;
<div class="cube outer"> <div class="face front"></div> <div class="face back"></div> <div class="face top"></div> <div class="face bottom"></div> <div class="face left"></div> <div class="face right"></div> <div class="cube inner"> <div class="face front"></div> <div class="face back"></div> <div class="face top"></div> <div class="face bottom"></div> <div class="face left"></div> <div class="face right"></div> </div> </div>
CSS樣式:
body { background: #2b3a42; } :root { --depth: 50px; } .cube { width: 100px; height: 100px; position: relative; transform-style: preserve-3d; transform: translate(-50%, -50%) rotateX(-35deg) rotateY(-135deg) translateZ(var(--depth)); position: absolute; top: 50%; left: 50%; } .face { position: absolute; width: 100px; height: 100px; box-sizing: border-box; z-index: -1; } .front { transform: translateZ(var(--depth)); } .back { transform: rotateY(180deg) translateZ(var(--depth)); } .top { transform: rotateX(90deg) translateZ(var(--depth)); } .bottom { transform: rotateX(-90deg) translateZ(var(--depth)); } .left { transform: rotateY(-90deg) translateZ(var(--depth)); } .right { transform: rotateY(90deg) translateZ(var(--depth)); } .outer > .face { background: #75afcc; border: 1px solid white; } .outer > .back, .outer > .top, .outer > .right { background: none; border-width: 0.5px; border-right-width: 5px; border-bottom-width: 5px; border-left-width: 5px; /*統一調整粗邊框*/ z-index: 100; } .inner { width: 50px; height: 50px; transform: translate(-50%, -50%); } .inner > .face { --depth: 25px; width: 50px; height: 50px; background: #5299c8; }
通過設置外層立方體部分面的background: none,并調整邊框寬度,實現遮擋和粗邊框效果。 內層立方體尺寸和位置可根據需要調整。 transform-style: preserve-3d; 確保子元素在3D空間中正確渲染。 調整rotateX和rotateY值改變立方體視角。 代碼實現了類似Webpack logo的立方體效果,關鍵在于理解CSS3的transform屬性和層疊上下文。
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END