Html
    Css
    Js

    
                        
* {
	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);
}

                        
↑上面代码改变,会自动显示代码结果 jQuery调用版本:1.11.3
 立即下载

隐藏的小恶魔

更新时间:2022-08-05 13:53:42

0