div+css实现卡通动漫太空女性宇航员转头微笑动画效果代码
代码语言:html
所属分类:动画
代码描述:div+css实现卡通动漫太空女性宇航员转头微笑动画效果代码
代码标签: div css 卡通 动漫 太空 女性 宇航员 转头 微笑 动画
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html>
<html lang="en" >
<head>
<meta charset="UTF-8">
<style>
body {
width: 100%; height: 100vh;
margin: 0;
}
.scene {
position: relative;
max-width: 100vw; max-height: 100vh;
overflow: hidden;
aspect-ratio: 4 / 3;
margin: auto;
z-index: 1;
background: radial-gradient(ellipse, rgb(222 133 82 / 30%), transparent 48%) -7vh 72vh / 110% 25% no-repeat, radial-gradient(ellipse, rgb(222 133 82 / 30%), transparent 48%) 83vh 52vh / 110% 25% no-repeat, radial-gradient(ellipse, rgb(222 133 82 / 30%), transparent 48%) -320% 30% / 110% 19% no-repeat, radial-gradient(ellipse at 30% 10%, #884f45, #ca845c 20%, transparent 70%) 0 -20% / 90% 49% no-repeat, radial-gradient(ellipse at 30% 40%, rgb(220 164 141 / 60%) 20%, transparent 48%) -20% -10% / 50% 69% no-repeat, linear-gradient(30deg, transparent, rgb(155 93 83 / 70%) 70%, rgb(210 152 133 / 70%)), linear-gradient(10deg, #51131f, #8b2b3c 40%, #72222c);
--noise-3: url("data:image/svg+xml,%3Csvg viewBox='0 0 1024 1024' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noiseFilter'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.25' numOctaves='1' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noiseFilter)'/%3E%3C/svg%3E");
--animation: 4.2s linear infinite;
}
.scene *, .scene::before, .scene::after, .scene *::before, .scene *::after {
position: absolute;
content: '';
transform-origin: top left;
}
.scene::before {
top: 0; left: 0;
width: 100%; height: 100%;
background: radial-gradient(circle, rgb(255 147 7 / 100%), rgba(255 147 7 / 0) 60%) center 32% / 0% 0% no-repeat;
mix-blend-mode: overlay;
z-index: 1;
animation: sceneShine var(--animation);
}
@keyframes sceneShine {
100% { background-position: center 72%;
background-size: 150% 150%;
opacity: 0.4; }
76.0% { background-position: center 72%;
background-size: 150% 150%;
opacity: 0.4; }
48.8% { background-position: center 32%;
background-size: 20% 20%;
opacity: 0; }
00.0% { background-position: center 32%;
background-size: 20% 20%;
opacity: 0; }
}
.scene::after {
top: 0; left: 0;
width: 100%; height: 100%;
background: var(--noise-3) 0 / 20vh repeat;
mix-blend-mode: overlay;
z-index: 1;
}
.person {
bottom: 0; left: 50%;
}
.person::before {
/* left shoulderpad */
top: -43.9vh; left: 9vh;
width: 17.3vh; height: 20vh;
background: linear-gradient(45deg, #3d517e, #33446b);
border-radius: 30% 70% 20% 20% / 17% 80% 20% 20%;
z-index: -1;
animation: leftShoulderpad var(--animation);
}
@keyframes leftShoulderpad {
/* 86 - 74 */
100% { transform: translate(0vh, 0vh) rotate(-6deg); }
86.0% { transform: translate(0vh, 0vh) rotate(-6deg); }
/* 68 */
79.1% { transform: translate(0vh, 0vh) rotate(-4deg); }
/* 60 - 49 */
69.8% { transform: translate(-3vh, -0.8vh) rotate(-4deg); }
57.0% { transform: translate(-3vh, -0.8vh) rotate(-4deg); }
/* 42 - 0 */
48.8% { transform: translate(-3.1vh, 1.2vh) rotate(-4deg); }
00.0% { transform: translate(-3.1vh, 1.2vh) rotate(-4deg); }
}
.person__lefttarm {
top: -21vh; left: -33vh;
width: 16vh; height: 26vh;
background: #e9d3b8;
border-radius: 10vh 10vh 0 0;
transform-origin: top center;
animation: leftArm var(--animation);
}
@keyframes leftArm {
/* 86 - 74 */
100% { transform: translate(0vh, 0vh) rotate(4deg); }
86.0% { transform: translate(0vh, 0vh) rotate(4deg); }
/* 68 */
79.1% { transform: translate(0.9vh, -0.3vh) rotate(4deg); }
/* 60 */
69.8% { transform: translate(5.3vh, 0.3vh) rotate(6deg); }
/* 58 */
67.4% { transform: translate(6.1vh, 1.8vh) rotate(6deg); }
/* 57 - 49 */
66.3% { transform: translate(6.6vh, 2.2vh) rotate(7deg); }
57.0% { transform: translate(6.6vh, 2.2vh) rotate(7deg); }
/* 42 */
48.8% { transform: translate(7.4vh, 2.7vh) rotate(8deg); }
/* 34 */
39.5% { transform: translate(10.5vh, 2.7vh) rotate(12deg); }
/* 32 */
37.2% { transform: translate(12.6vh, 2.7vh) rotate(14deg); }
/* 29 - 10 */
33.7% { transform: translate(12.9vh, 2.7vh) rotate(14deg); }
11.6% { transform: translate(12.9vh, 2.7vh) rotate(14deg); }
/* 3 */
03.5% { transform: translate(11.6vh, 2.6vh) rotate(7deg); }
/* 0 */
00.0% { transform: translate(11.8vh, 2.6vh) rotate(7deg); }
}
.person__lefttarm::before {
top: -3.4vh; left: -1vh;
width: 18.6vh; height: 26vh;
background: radial-gradient(ellipse, #f6413f 32%, transparent calc(32% + 1px)) -36% 71% / 70% 97% no-repeat, linear-gradient(#33446b, #3c5180);
border-radius: 60% 40% 40% 60% / 50% 50% 50% 50%;
animation: leftArmBefore var(--animation);
}
@keyframes leftArmBefore {
/* 86 - 68 */
100% { background-position: -36% 71%, 0 0;
background-size: 70% 97%, 100% 100%;
transform: translate(0vh, 0vh) scale(1, 1); }
79.1% { background-position: -36% 71%, 0 0;
background-size: 70% 97%, 100% 100%;
transform: translate(0vh, 0vh) scale(1, 1); }
/* 60 */
69.8% { background-position: -29% 113%, 0 0;
background-size: 82% 97%, 100% 100%;
transform: translate(0vh, 0vh) scale(1.05, 0.98); }
/* 58 */
67.4% { background-position: -61% 113%, 0 0;
background-size: 89% 97%, 100% 100%;
transform: translate(0vh, 0vh) scale(1.06, 0.98); }
/* 57 - 42 */
66.3% { background-position: -61% 244%, 0 0;
background-size: 90% 97%, 100% 100%;
transform: translate(0vh, 0.1vh) scale(1.07, 0.97); }
48.8% { background-position: -61% 244%, 0 0;
background-size: 90% 97%, 100% 100%;
transform: translate(0vh, 0.1vh) scale(1.07, 0.97); }
/* 34 */
39.5% { background-position: -111% 194%, 0 0;
background-size: 97% 97%, 100% 100%;
transform: translate(0vh, 0.1vh) scale(1.07, 0.97); }
/* 32 - 0 */
37.2% { background-position: -0.7vh 1.1vh, 0 0;
background-size: 101% 97%, 100% 100%;
transform: translate(0vh, 0.1vh) scale(1.07, 0.97); }
00.0% { background-position: -0.7vh 1.1vh, 0 0;
background-size: 101% 97%, 100% 100%;
transform: translate(0vh, 0.1vh) scale(1.07, 0.97); }
}
.person__rightarm {
top: -43vh; left: 8vh;
width: 12.8vh; height: 48.8vh;
background: linear-gradient(-3deg, #dab486 calc(18vh - 1px), #f9413d 18vh, #f9413d 21vh, #e9d3b8 calc(21vh + 1px), #dcb98e);
border-radius: 2vh 9vh 6.5vh 6.5vh;
transform-origin: top center;
z-index: -1;
animation: rightArm var(--animation);
}
@keyframes rightArm {
/* 86 - 74 */
100% { transform: translate(0vh, 0vh) rotate(-19deg); }
86.0% { transform: translate(0vh, 0vh) rotate(-19deg); }
/* 68 */
79.1% { transform: translate(-0.5vh, 0vh) rotate(-20deg); }
/* 60 */
69.8% { transform: translate(-4.3vh, -0.7vh) rotate(-25deg); }
/* 58 */
67.4% { transform: translate(-5.3vh, 0.2vh) rotate(-27deg); }
/* 57 - 49 */
66.3% { transform: translate(-5.8vh, 0.4vh) rotate(-28deg); }
57.0% { transform: translate(-5.8vh, 0.4vh) rotate(-28deg); }
/* 42 */
48.8% { transform: translate(-6.3vh, 1.6vh) rotate(-32deg); }
/* 34 */
39.5% { transform: translate(-8.3vh, 4.3vh) rotate(-55deg); }
/* 32 */
37.2% { transform: translate(-9.2vh, 4.9vh) rotate(-67deg); }
/* 29 - 25 */
33.7% { transform: translate(-9.2vh, 4.9vh) rotate(-68deg); }
29.1% { transform: translate(-9.2vh, 4.9vh) rotate(-68deg); }
/* 23 */
26.7% { transform: translate(-9.2vh, 5.1vh) rotate(-68deg); }
/* 10 - 3 */
11.6% { transform: translate(-9.2vh, 5.2vh) rotate(-66deg); }
03.5% { transform: translate(-9.2vh, 5.2vh) rotate(-66deg); }
/* 0 */
00.0% { transform: translate(-9.8vh, 4vh) rotate(-61deg); }
}
.person__rightarm::before {
top: 36vh; left: 0vh;
width: 12.8vh; height: 55vh;
background: linear-gradient(-139deg, transparent calc(30% - 1px), #3c5180 30%) 0vh 19vh / 5vh 21vh no-repeat, linear-gradient(-174deg, transparent calc(38vh - 1px), #3c5180 38vh), linear-gradient(-173deg, transparent calc(12.3vh - 1px), #3c5180 12.3vh, #3c5180 12.6vh, transparent calc(12.6vh + 1px)), linear-gradient(-173deg, transparent calc(11.3vh - 1px), #3c5180 11.3vh, #3c5180 11.6vh, transparent calc(11.6vh + 1px)), linear-gradient(-173deg, transparent calc(10.3vh - 1px), #3c5180 10.3vh, #3c5180 10.6vh, transparent calc(10.6vh + 1px)), linear-gradient(#dab486 20%, #e9d3b8);
border-radius: 7vh;
transform-origin: 6.4vh 6.4vh;
animation: rightArmBefore var(--animation);
}
@keyframes rightArmBefore {
/* 86 - 74 */
100% { transform: rotate(-40deg); }
86.0% { transform: rotate(-40deg); }
/* 68 */
79.1% { transform: rotate(-41deg); }
/* 60 */
69.8% { transform: rotate(-46deg); }
/* 58 */
67.4% { transform: rotate(-47deg); }
/* 57 - 49 */
66.3% { transform: rotate(-50deg); }
57.0% { transform: rotate(-50deg); }
/* 42 */
48.8% { transform: rotate(-54deg); }
/* 34 */
39.5% { transform: rotate(-73deg); }
/* 32 - 23 */
37.2% { transform: rotate(-70deg); }
26.7% { transform: rotate(-70deg); }
/* 10 - 3 */
11.6% { transform: rotate(-66deg); }
03.5% { transform: rotate(-66deg); }
/* 0 */
00.0% { transform: rotate(-61deg); }
}
.person__body {}
.person__body::before {
top: -30vh; left: -28.7vh;
width: 37vh; height: 49vh;
background: linear-gradient(123deg, #fdf6eb 46.9vh, transparent calc(46.9vh + 1px));
border-radius: 50% 0 0 0;
transform-origin: top center;
animation: bodyBefore var(--animation);
}
@keyframes bodyBefore {
/* 86 - 74 */
100% { transform: translate(0vh, 0vh) rotate(-27deg) scale(1, 1); }
86.0% { transform: translate(0vh, 0vh) rotate(-27deg) scale(1, 1); }
/* 68 */
79.1% { transform: translate(0vh, 0vh) rotate(-27deg) scale(0.98, 1); }
/* 60 */
69.8% { transform: translate(1.1vh, 0vh) rotate(-27deg) scale(0.9, 1); }
/* 58 *.........完整代码请登录后点击上方下载按钮下载查看
















网友评论0