运用 transform-origin 属性 更简单、真实
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>能量守恒---摆动的小球</title>
<style type="text/css">
* {
margin:0px;
padding:0px;
}
.box {
width:1000px;
height:500px;
border:1px solid #fff;
margin:30px auto;
}
.support {
width:655px;
height:450px;
margin:15px auto;
position:relative;
padding:0px 100px;
background:#000;
border-top:20px solid #dcdcdc;
border-radius:15px;
overflow:hidden;
}
.support > div {
display:block;
width:130px;
height:400px;
float:left;
position:relative;
transform-origin:50% 0%;
-moz-transform-origin:50% 0%;
-ms-transform-origin:50% 0%;
-o-transform-origin:50% 0%;
-webkit-transform-origin:50% 0%;
}
/* 连接点 */
.support > div .spot {
width:16px;
height:16px;
border-radius:100%;
background:#dcdcdc;
box-shadow:0 0 8px 1px rgba(120,120,120,1) inset,
0 0 12px 0 rgba(236,236,236,1);
position:absolute;
top:-8px;
left:57px;
z-index:5;
}
/* 线 */
.support > div .linellae {
width:0px;
height:280px;
border-left:2px solid #dcdcdc;
margin:0px auto;
position:relative;
z-index:3;
}
/* 球 */
.support > div .ball {
width:128px;
height:128px;
background:#dcdcdc;
border-radius:100%;
position:absolute;
bottom:0px;
left:0px;
z-index:2;
box-shadow:0 10px 75px 5px rgba(0,0,0,1) inset,
0 5px 35px 0 rgba(236,236,236,1);
}
/* 第一个 */
.support .first {
animation:firstall 1.2s linear infinite;
-moz-animation:firstall 1.2s linear infinite;
-webkit-animation:firstall 1.2s linear infinite;
-o-animation:firstall 1.2s linear infinite;
}
@keyframes firstall {
0% {transform:rotate(0deg);-ms-transform:rotate(0deg);-moz-transform:rotate(0deg);-webkit-transform:rotate(0deg);-o-transform:rotate(0deg);}
25% {transform:rotate(15deg);-ms-transform:rotate(15deg);-moz-transform:rotate(15deg);-webkit-transform:rotate(15deg);-o-transform:rotate(15deg);}
50% {transform:rotate(0deg);-ms-transform:rotate(0deg);-moz-transform:rotate(0deg);-webkit-transform:rotate(0deg);-o-transform:rotate(0deg);}
100% {transform:rotate(0deg);-ms-transform:rotate(0deg);-moz-transform:rotate(0deg);-webkit-transform:rotate(0deg);-o-transform:rotate(0deg);}
}
/* 最后一个 */
.support .last {
animation:lastall 1.2s linear infinite;
-moz-animation:lastall 1.2s linear infinite;
-webkit-animation:lastall 1.2s linear infinite;
-o-animation:lastall 1.2s linear infinite;
}
@keyframes lastall {
0% {transform:rotate(0deg);-ms-transform:rotate(0deg);-moz-transform:rotate(0deg);-webkit-transform:rotate(0deg);-o-transform:rotate(0deg);}
50% {transform:rotate(0deg);-ms-transform:rotate(0deg);-moz-transform:rotate(0deg);-webkit-transform:rotate(0deg);-o-transform:rotate(0deg);}
75% {transform:rotate(-15deg);-ms-transform:rotate(-15deg);-moz-transform:rotate(-15deg);-webkit-transform:rotate(-15deg);-o-transform:rotate(-15deg);}
100% {transform:rotate(0deg);-ms-transform:rotate(0deg);-moz-transform:rotate(0deg);-webkit-transform:rotate(0deg);-o-transform:rotate(0deg);}
}
/* 中间三个 */
.support .other {
animation:otherall 1.2s linear 0.6s infinite;
-moz-animation:otherall 1.2s linear 0.6s infinite;
-webkit-animation:otherall 1.2s linear 0.6s infinite;
-o-animation:otherall 1.2s linear 0.6s infinite;
}
@keyframes otherall {
0% {transform:rotate(0deg);-ms-transform:rotate(0deg);-moz-transform:rotate(0deg);-webkit-transform:rotate(0deg);-o-transform:rotate(0deg);}
25% {transform:rotate(-2deg);-ms-transform:rotate(-2deg);-moz-transform:rotate(-2deg);-webkit-transform:rotate(-2deg);-o-transform:rotate(-2deg);}
50% {transform:rotate(0deg);-ms-transform:rotate(0deg);-moz-transform:rotate(0deg);-webkit-transform:rotate(0deg);-o-transform:rotate(0deg);}
75% {transform:rotate(2deg);-ms-transform:rotate(2deg);-moz-transform:rotate(2deg);-webkit-transform:rotate(2deg);-o-transform:rotate(2deg);}
100% {transform:rotate(0deg);-ms-transform:rotate(0deg);-moz-transform:rotate(0deg);-webkit-transform:rotate(0deg);-o-transform:rotate(0deg);}
}
</style>
</head>
<body>
<div class="box">
<div class="support">
<!-- 第一个 -->
<div class="first">
<div class="spot"></div><!-- 连接点 -->
<div class="linellae"></div><!-- 线 -->
<div class="ball"></div><!-- 球 -->
</div>
<!-- 中间三个 -->
<div class="other">
<div class="spot"></div>
<div class="linellae"></div>
<div class="ball"></div>
</div>
<div class="other">
<div class="spot"></div>
<div class="linellae"></div>
<div class="ball"></div>
</div>
<div class="other">
<div class="spot"></div>
<div class="linellae"></div>
<div class="ball"></div>
</div>
<!-- 最后一个 -->
<div class="last">
<div class="spot"></div>
<div class="linellae"></div>
<div class="ball"></div>
</div>
</div>
</div>
</body>
</html>
欢迎分享本文,转载请保留出处:前端ABC » 能量守恒–摆动的小球
前端ABC