css钟摆制作
CSS钟摆制作方法
使用CSS动画和transform属性可以创建简单的钟摆效果。以下是实现步骤:
HTML结构
<div class="pendulum">
<div class="string"></div>
<div class="weight"></div>
</div>
CSS样式
.pendulum {
position: relative;
width: 200px;
height: 300px;
margin: 50px auto;
}
.string {
position: absolute;
width: 2px;
height: 200px;
background: #333;
left: 50%;
transform-origin: top center;
animation: swing 2s infinite ease-in-out alternate;
}
.weight {
position: absolute;
width: 40px;
height: 40px;
background: #e74c3c;
border-radius: 50%;
bottom: 0;
left: 50%;
transform: translateX(-50%);
}
@keyframes swing {
0% {
transform: rotate(-30deg);
}
100% {
transform: rotate(30deg);
}
}
优化钟摆效果
要使钟摆运动更自然,可以调整动画时间函数和角度:
@keyframes swing {
0%, 100% {
transform: rotate(-20deg);
animation-timing-function: ease-out;
}
50% {
transform: rotate(20deg);
animation-timing-function: ease-in;
}
}
添加物理效果
模拟真实钟摆的重力加速度效果:
.string {
animation: swing 1.5s infinite alternate;
animation-timing-function: cubic-bezier(0.65, 0, 0.35, 1);
}
响应式调整
通过媒体查询使钟摆适应不同屏幕尺寸:
@media (max-width: 600px) {
.pendulum {
height: 200px;
}
.string {
height: 150px;
}
}
高级版本(带支架)
添加钟摆支架的完整版本:
<div class="pendulum-container">
<div class="stand"></div>
<div class="pendulum">
<div class="string"></div>
<div class="weight"></div>
</div>
</div>
.pendulum-container {
position: relative;
width: 200px;
height: 350px;
margin: 0 auto;
}
.stand {
width: 100px;
height: 20px;
background: #333;
position: absolute;
top: 0;
left: 50%;
transform: translateX(-50%);
}






