HTML+CSS生成奔跑的火柴人
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>奔跑的火柴人</title>
<style>
body {
background-color: black;
}
/* 身体结构 */
.cantainer {
width: 300px;
height: 300px;
margin: 50px;
}
.person {
position: absolute;
width: 150px;
height: 160px;
animation: sprint 2s infinite ease-in;
}
.head {
position: absolute;
width: 30px;
height: 30px;
border: 5px solid #fff;
border-radius: 50%;
top: -30px;
left: -6px;
animation: bob 1s infinite alternate;
}
.torso {
width: 0;
height: 60px;
border-left: 5px solid #fff;
position: absolute;
left: 0px;
top: 15px;
}
.person .part {
position: absolute;
left: 0;
top: 75px;
}
.person .part.arm {
width: 40px;
height: 45px;
border-left: 5px solid #fff;
border-bottom: 5px solid #fff;
position: absolute;
top: 15px;
right: 300px;
transform-origin: 0% 0% 0px;
animation: pump 1s infinite ease-in-out;
}
.person .part.arm.one {
transform: rotate3d(0, 0, 1, 80deg);
}
.person .part.arm.two {
transform: rotate3d(0, 0, 1, -80deg);
animation-delay: 0.5s;
}
.person .part.leg {
height: 60px;
width: 60px;
border-right: 5px solid #fff;
border-top: 5px solid #fff;
transform-origin: 0% 0% 0px;
animation: run 1s infinite ease-in;
}
.person .part.leg.one {
transform: rotate3d(0, 0, 1, 100deg);
}
.person .part.leg.two {
transform: rotate3d(0, 0, 1, 10deg);
animation-delay: 0.5s;
}
/* 动作 */
/* 头部动作 */
@keyframes bob {
0% {
transform: rotate3d(0, 0, 1, 5deg);
}
25% {
transform: rotate3d(0, 0, 1, -30deg) skew(15deg, 0deg);
}
50% {
transform: rotate3d(0, 0, 1, 5deg);
}
75% {
transform: rotate3d(0, 0, 1, -30deg) skew(15deg, 0deg);
}
100% {
transform: rotate3d(0, 0, 1, 5deg) skew(-15deg, 0deg);
}
}
/* 胳膊摆动 */
@keyframes pump{
0% {
transform: rotate3d(0, 0, 1, 80deg);
}
50% {
transform: rotate3d(0, 0, 1, -70deg);
}
100% {
transform: rotate3d(0, 0, 1, 80deg);
}
}
/* 退跑起来 */
@keyframes run{
0% {
transform: rotate3d(0, 0, 1, -5deg);
}
50% {
transform: rotate3d(0, 0, 1, 150deg);
}
100% {
transform: rotate3d(0, 0, 1, -5deg);
}
}
/* 人物往前跑起来 */
@keyframes sprint{
0%{
transform: translate(0,0);
}
100%{
transform: translate(1800px,0);
}
}
</style>
</head>
<body>
<!-- 火柴人结构 -->
<div class="cantainer">
<div class="person">
<div class="head"></div>
<div class="part arm one"></div>
<div class="part arm two"></div>
<div class="torso"></div>
<div class="part leg one"></div>
<div class="part leg two"></div>
</div>
</div>
</body>
</html>

浙公网安备 33010602011771号