使用CSS3构建Webpack风格的3D立方体Logo
本文演示如何用CSS3创建类似Webpack logo的3D立方体效果,解决旋转和遮挡问题。 之前的尝试中,使用多个元素构建立方体导致旋转和遮挡效果难以实现。目标是:内嵌立方体部分覆盖外层立方体,并呈现粗边框样式。关键在于巧妙运用CSS3的transform
属性控制立方体旋转和层叠,以及通过边框样式实现视觉上的粗边框效果。
解决方案采用嵌套div元素构建内外两个立方体:外层立方体为Webpack logo主体,内层立方体用于遮挡。 通过精确设置transform
属性,控制立方体旋转角度和位置。
HTML结构:
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
属性和层叠上下文。