* {
margin:0;
padding:0;
box-sizing:border-box;
}
:root {
--duration:10s;
}
body {
display:grid;
place-content:center;
height:100vh;
background:#222;
overflow:hidden;
}
.dots-container {
/* position:relative;
*/
width:50vmin;
aspect-ratio:1/.4;
/* background:#667;
*/
display:flex;
align-items:center;
justify-content:space-around;
animation:displaying-animation var(--duration) linear infinite;
}
.dot {
position:relative;
height:50%;
aspect-ratio:1;
}
.dot:not(:nth-child(2)) {
border-radius:50%;
background:#ddd;
}
.dot:nth-child(1) {
animation:simple-dot-1-anim var(--duration) linear infinite;
}
.dot:nth-child(2)/* the evil one */ {
animation:evil-dot-anim var(--duration) linear infinite;
}
.dot:nth-child(3) {
animation:simple-dot-3-anim var(--duration) linear infinite;
}
.face {
position:absolute;
height:100%;
width:100%;
background:#ddd;
border-radius:50%;
animation:face var(--duration) linear infinite;
}
.eyes {
position:absolute;
width:100%;
height:60%;
display:flex;
align-items:flex-end;
justify-content:space-evenly;
}
.eyes::after,.eyes::before {
content:"";
width:30%;
background:#667;
aspect-ratio:.75;
border-radius:50%;
}
.eyes::before {
--eye-Y-rot:0;
animation:angry-eyes var(--duration) linear infinite;
}
.eyes::after {
--eye-Y-rot:180deg;
animation:angry-eyes var(--duration) linear infinite;
}
.mouth {
position:absolute;
top:60%;
left:27.5%;
width:45%;
aspect-ratio:1.25;
opacity:0;
background:#222;
border-radius:100%;
transform:translateY(-30%);
animation:mouth-displayed var(--duration) linear infinite;
/* transform:translate(125%,75%) rotate(-30deg) scaleY(1);
*/
/* animation:mouth var(--duration) linear infinite;
*/
}
.mouth::after {
content:"";
position:absolute;
height:100%;
width:100%;
border-radius:100%;
background:orangered;
transform:scale(1.15) translateY(0);
animation:mouth-smile var(--duration) linear infinite;
}
.horns {
position:absolute;
width:80%;
height:80%;
border-radius:50%;
left:10%;
background:#edc;
animation:horns var(--duration) linear infinite;
}
.horns::after {
content:"";
position:absolute;
height:100%;
width:100%;
top:-25%;
border-radius:50%;
background:#222;
transform:scaleX(.85);
}
@keyframes displaying-animation {
0%,1% {
transform:scale(0);
}
5%,100% {
transform:scale(1);
}
}@keyframes angry-eyes {
0%,24%,65%,69.99% {
transform:rotateY(0)
translate(0)
scaleY(0);
border-radius:50%;
background:#667;
}
25%,30%,55%,64% {
transform:rotateY(0)
translate(0)
scaleY(1);
}
32.5%,40% {
transform:rotateY(0)
translate(-25%)
scaleY(1);
}
45%,52.5% {
transform:rotateY(0)
translate(25%)
scaleY(1);
}
70% {
transform:rotateY(var(--eye-Y-rot))
translate(0)
scaleY(0);
border-radius:20% 80% 50% 50% / 50% 80% 20% 50%;
background:crimson;
}
71%,100% {
transform:rotateY(var(--eye-Y-rot))
translate(0)
scaleY(.9);
border-radius:20% 80% 50% 50% / 50% 80% 20% 50%;
background:#222;
}
}@keyframes face {
0%,70% {
background:#ddd;
}
72.5%,92.5% {
background:orangered;
}
98.5%,100% {
background:#222;
}
}@keyframes mouth-displayed {
0%,72.5%,92.5% {
opacity:0;
}
75%,90% {
opacity:1;
}
}@keyframes mouth-smile {
0%,72.5% {
transform:scale(1.15) translateY(0);
}
75%,100% {
transform:scale(1.15) translateY(-15%);
}
}@keyframes horns {
0%,70%,92.5% {
transform:scale(0) translateY(0);
}
75%,90% {
transform:scale(1.1) translateY(-30%);
}
}@keyframes simple-dot-1-anim {
0% {
transform:translate(0,0);
}
10%,20%,30%,40%,50%,60%,70%,80%,90% {
transform:translate(0,0);
}
5%,15%,25%,35%,45%,55%,65%,75%,85% {
transform:translate(0,-75%);
}
95%,100% {
transform:translate(-50vw,0);
}
}@keyframes simple-dot-3-anim {
0% {
transform:translate(0,0);
}
5%,15%,25%,35%,45%,55%,65%,75%,85% {
transform:translate(0,0);
}
10%,20%,30%,40%,50%,60%,70%,80% {
transform:translate(0,-75%);
}
90%,100% {
transform:translate(50vw,0);
}
}@keyframes evil-dot-anim {
2.5%,12.5%,22.5%,78% {
transform:translate(0,0) scale(1);
}
7.5%,17.5% {
transform:translate(0,-75%) scale(1);
}
80%,82% {
transform:translate(-25%,0) scale(1);
}
85%,87% {
transform:translate(66%,0) scale(1);
}
90% {
transform:translate(-66%,0) scale(1);
}
95% {
transform:translate(0,0) scale(1);
}
100% {
transform:translate(0,0) scale(50);
}
}/* ===> SIGNATURE <=== */
.link {
position:fixed;
z-index:10;
left:calc(2.5vmin - 0.75rem);
bottom:calc(2.5vmin - 0.75rem);
font-size:1.5rem;
font-family:arial,sans-serif;
color:whitesmoke;
display:flex;
align-items:center;
justify-content:center;
cursor:pointer;
}
.my-name {
position:relative;
}
.before,.after {
overflow:hidden;
width:0px;
transition:width 0.5s;
transform-origin:right;
}
.before-text {
display:inline-block;
width:auto;
text-align:right;
}
.after-text {
display:flex;
align-items:center;
width:auto;
height:3rem;
transform-origin:top center;
}
.link:hover .before {
width:2.5rem;
}
.link:hover .after {
width:4rem;
}
.link:hover .spin {
display:inline-block;
transition:0.5s transform 0.5s ease-in-out;
transform:rotate(360deg);
}
更新时间:2022-08-05 13:53:42