在实际项目开发中,一般都会设计一个动画加载效果,今天这个加载效果非常有趣,可以帮助用户在等待程序加载时,缓解用户着急的情绪。
HTML代码:在本文中,设计了代码的基本结构。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content=
"width=device-width, initial-scale=1.0">
<title>Animated loader</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<div class="pieces"></div>
<div class="one"></div>
<div class="two"></div>
<div class="eye"></div>
<p>GeeksforGeeks loading...</p>
</body>
</html>
CSS代码:在本文中,卡通加载器的设计是使用CSS属性实现的。
通过逐渐从一组样式更改为另一组样式来创建动画。更改以百分比或关键字“ from”和“ to”为单位,分别与0%和100%相同。
我们可以根据需要多次更改CSS样式集。
句法:
@keyframes animationname {keyframes-selector {css-styles;}}
body{
display: flex;
justify-content: center;
align-items: center;
min-height: 100vh;
background: #202020;
}
.pieces{
padding: 10px;
border-radius: 50%;
background: #ffcc00;
position: absolute;
right: 40%;
animation: pieces 1s linear infinite;
}
.one{
position: absolute;
top: 50.5%;
left: 30%;
background: yellowgreen;
border-radius: 0 0 125px 125px;
height: 125px;
width: 250px;
animation: anim1 1s linear infinite;
}
.two{
position: absolute;
top: 36.5%;
left: 30%;
background: yellowgreen;
border-radius: 125px 125px 0 0;
height: 125px;
width: 250px;
animation: anim2 1s linear infinite;
}
.eye{
position: absolute;
right: 60%;
top: 40%;
background: #202020;
padding: 12px;
border-radius: 50%;
animation: eye 1s linear infinite;
}
p{
position: absolute;
font-weight: bold;
text-transform: uppercase;
font-size: 25px;
letter-spacing: 2px;
top: 53%;
right: 30%;
font-family: arial;
color: green;
}
@keyframes anim1{
0%{
transform: rotate(0deg);
}
50%{
transform: rotate(20deg);
}
100%{
transform: rotate(0deg);
}
}
@keyframes anim2{
0%{
transform: rotate(0deg);
}
50%{
transform: rotate(-20deg);
}
100%{
transform: rotate(0deg);
}
}
@keyframes eye{
0%{
top: 40%;
right: 60%;
}
50%{
top: 40.3%;
right: 60.3%;
}
100%{
top: 40%;
right: 60%;
}
}
@keyframes pieces{
0%{
right: 40%;
}
100%{
right: 60%;
}
}
完整代码:这是以上两个代码部分的组合。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content=
"width=device-width, initial-scale=1.0">
<title>Animated loader</title>
<style>
body {
display: flex;
justify-content: center;
align-items: center;
min-height: 100vh;
background: #202020;
}
.pieces {
padding: 10px;
border-radius: 50%;
background: #ffcc00;
position: absolute;
right: 40%;
animation: pieces 1s linear infinite;
}
.one {
position: absolute;
top: 50.5%;
left: 30%;
background: yellowgreen;
border-radius: 0 0 125px 125px;
height: 125px;
width: 250px;
animation: anim1 1s linear infinite;
}
.two {
position: absolute;
top: 36.5%;
left: 30%;
background: yellowgreen;
border-radius: 125px 125px 0 0;
height: 125px;
width: 250px;
animation: anim2 1s linear infinite;
}
.eye {
position: absolute;
right: 60%;
top: 40%;
background: #202020;
padding: 12px;
border-radius: 50%;
animation: eye 1s linear infinite;
}
p {
position: absolute;
font-weight: bold;
text-transform: uppercase;
font-size: 25px;
letter-spacing: 2px;
top: 53%;
right: 30%;
font-family: arial;
color: green;
}
@keyframes anim1 {
0% {
transform: rotate(0deg);
}
50% {
transform: rotate(20deg);
}
100% {
transform: rotate(0deg);
}
}
@keyframes anim2 {
0% {
transform: rotate(0deg);
}
50% {
transform: rotate(-20deg);
}
100% {
transform: rotate(0deg);
}
}
@keyframes eye {
0% {
top: 40%;
right: 60%;
}
50% {
top: 40.3%;
right: 60.3%;
}
100% {
top: 40%;
right: 60%;
}
}
@keyframes pieces {
0% {
right: 40%;
}
100% {
right: 60%;
}
}
</style>
</head>
<body>
<div class="pieces"></div>
<div class="one"></div>
<div class="two"></div>
<div class="eye"></div>
<p>GeeksforGeeks loading...</p>
</body>
</html>
最终效果如下:
本文完~