HTMLCSS:3D金字塔加载动画
效果演示
这段代码通过CSS3的3D变换和动画功能,创建了一个旋转的金字塔加载动画,每个侧面都有不同的颜色渐变,底部还有一个模糊的阴影效果,增加了视觉的立体感。
HTML
<div class="pyramid-loader">
<div class="wrapper">
<span class="side side1"></span>
<span class="side side2"></span>
<span class="side side3"></span>
<span class="side side4"></span>
<span class="shadow"></span>
</div>
</div>
- pyramid-loader 是最外层的容器,用于包含整个金字塔动画。
- wrapper 是金字塔的主体部分,包含四个 span 元素,每个代表金字塔的一个侧面,以及一个 span 元素用于表示阴影效果。
CSS
.pyramid-loader {
position: relative;
width: 300px;
height: 300px;
display: block;
transform-style: preserve-3d;
transform: rotateX(-20deg);
}
.wrapper {
position: relative;
width: 100%;
height: 100%;
transform-style: preserve-3d;
animation: spin 4s linear infinite;
}
@keyframes spin {
100% {
transform: rotateY(360deg);
}
}
.pyramid-loader .wrapper .side {
width: 70px;
height: 70px;
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
margin: auto;
transform-origin: center top;
clip-path: polygon(50% 0%, 0% 100%, 100% 100%);
}
.pyramid-loader .wrapper .side1 {
transform: rotateZ(-30deg) rotateY(90deg);
background: conic-gradient( #2BDEAC, #F028FD, #D8CCE6, #2F2585);
}
.pyramid-loader .wrapper .side2 {
transform: rotateZ(30deg) rotateY(90deg);
background: conic-gradient( #2F2585, #D8CCE6, #F028FD, #2BDEAC);
}
.pyramid-loader .wrapper .side3 {
transform: rotateX(30deg);
background: conic-gradient( #2F2585, #D8CCE6, #F028FD, #2BDEAC);
}
.pyramid-loader .wrapper .side4 {
transform: rotateX(-30deg);
background: conic-gradient( #2BDEAC, #F028FD, #D8CCE6, #2F2585);
}
.pyramid-loader .wrapper .shadow {
width: 60px;
height: 60px;
background: #8B5AD5;
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
margin: auto;
transform: rotateX(90deg) translateZ(-40px);
filter: blur(12px);
}
- .pyramid-loader 设置了容器的位置、大小和3D变换样式,使其能够包含3D元素,并且整体沿X轴旋转-20度。
- .wrapper 设置了内部容器的位置、大小和3D变换样式,并且应用了一个名为spin的动画,这个动画会使容器无限循环地旋转。
- @keyframes spin 定义了一个关键帧动画,使元素绕Y轴旋转360度。
- .side 类定义了金字塔侧面的尺寸、位置和剪裁路径,使其呈现为一个三角形。
- .side1 设置了第一个侧面的旋转角度和背景渐变色。
- .side2 设置了第二个侧面的旋转角度和背景渐变色。
- .side3 设置了第三个侧面的旋转角度和背景渐变色。
- .side4 设置了第四个侧面的旋转角度和背景渐变色。
- .shadow 设置了阴影的尺寸、位置、背景色、旋转角度和模糊效果。