24 carregadores CSS para seu próximo projeto
Cascading Style Sheets (CSS) é um mecanismo para adicionar estilo (cores, fontes, espaçamento) a um documento web. O código CSS pode ser aplicado diretamente nas tags ou ficar contido dentro das tags <style>.
Também é possível, em vez de colocar a formatação dentro do documento, criar um link para um arquivo CSS que contém os estilos. Assim, quando se quiser alterar a aparência dos documentos vinculados a este arquivo CSS, basta modifica-lo.
Para quem curte CSS ou esta aprendendo, resolvemos dar uma forcinha com estilos disponíveis na internet com 24 carregadores CSS para seu próximo projeto.
Somente escolher o seu e clicar:
HTML + The Dots II
HTML
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
.dots-1 {
width:32px;
height:32px;
--c:radial-gradient(circle closest-side,currentColor 90%,#0000);
background:
var(--c) 0 0,
var(--c) 0 100%,
var(--c) 100% 100%;
background-size:12px 12px;
background-repeat: no-repeat;
animation:d1 1s infinite linear;
}
@keyframes d1 {
25% {background-position:100% 0 ,0 100%,100% 100%}
50% {background-position:100% 0 ,0 0 ,100% 100%}
75% {background-position:100% 0 ,0 0 ,0 100%}
100%{background-position:100% 100%,0 0 ,0 100%}
}
.dots-2 {
width:50px;
height:28px;
--c:radial-gradient(farthest-side,currentColor 90%,#0000);
background:
var(--c) 0 50%,
var(--c) 50% 50%,
var(--c) 50% 50%,
var(--c) 100% 50%;
background-size:12px 12px;
background-repeat: no-repeat;
animation:d2 1s infinite linear;
}
@keyframes d2 {
33% {background-position:0 0 ,50% 100%,50% 100%,100% 0}
66% {background-position:50% 0 ,0 100%,100% 100%,50% 0}
100% {background-position:50% 50%,0 50% ,100% 50% ,50% 50%}
}
.dots-3 {
width:50px;
height:28px;
background:
radial-gradient(farthest-side at bottom,currentColor 90%,#0000) 0 calc(50% - 3px),
radial-gradient(farthest-side at top ,currentColor 90%,#0000) 0 calc(50% + 3px),
radial-gradient(farthest-side at bottom,currentColor 90%,#0000) 50% calc(50% - 3px),
radial-gradient(farthest-side at top ,currentColor 90%,#0000) 50% calc(50% + 3px),
radial-gradient(farthest-side at bottom,currentColor 90%,#0000) 100% calc(50% - 3px),
radial-gradient(farthest-side at top ,currentColor 90%,#0000) 100% calc(50% + 3px);
background-size:12px 6px;
background-repeat: no-repeat;
animation:d3 1s infinite linear;
}
@keyframes d3 {
16.67% {background-position:0 0,0 100%,50% calc(50% - 3px),50% calc(50% + 3px),100% calc(50% - 3px),100% calc(50% + 3px)}
33.33% {background-position:0 0,0 100%,50% 0,50% 100%,100% calc(50% - 3px),100% calc(50% + 3px)}
50% {background-position:0 0,0 100%,50% 0,50% 100%,100% 0,100% 100%}
66.67% {background-position:0 calc(50% - 3px),0 calc(50% + 3px),50% 0,50% 100%,100% 0,100% 100%}
83.33% {background-position:0 calc(50% - 3px),0 calc(50% + 3px),50% calc(50% - 3px),50% calc(50% + 3px),100% 0,100% 100%}
}
.dots-4 {
width:50px;
height:28px;
background:
radial-gradient(farthest-side,currentColor 90%,#0000) 0 50%/12px 12px,
radial-gradient(farthest-side at bottom,currentColor 90%,#0000) 50% calc(50% - 3px)/12px 6px,
radial-gradient(farthest-side at top ,currentColor 90%,#0000) 50% calc(50% + 3px)/12px 6px,
radial-gradient(farthest-side at bottom,currentColor 90%,#0000) 100% calc(50% - 3px)/12px 6px,
radial-gradient(farthest-side at top ,currentColor 90%,#0000) 100% calc(50% + 3px)/12px 6px;
background-repeat: no-repeat;
animation:d4 1s infinite;
}
@keyframes d4 {
25% {background-position:0 50%,50% 0,50% 100%,100% 0,100% 100%}
50% {background-position:100% 50%,0 0,0 100%,50% 0,50% 100%}
75%,
100% {background-position:100% 50%,0 calc(50% - 3px),0 calc(50% + 3px),50% calc(50% - 3px),50% calc(50% + 3px)}
}
.dots-5 {
width:50px;
height:12px;
background:
radial-gradient(farthest-side,currentColor 90%,#0000) left,
radial-gradient(farthest-side,currentColor 90%,#0000) right;
background-size: 12px 12px;
background-repeat: no-repeat;
position: relative;
animation: d5-0 1s infinite linear;
}
.dots-5::before {
content:"";
position: absolute;
background:currentColor;
border-radius: 50%;
inset:0 calc(50% - 6px);
transform-origin: -13px 50%;
animation: d5-1 0.5s infinite linear;
}
@keyframes d5-0 {
0%,49.99% {transform:scale(1)}
50%,100% {transform:scale(-1)}
}
@keyframes d5-1 {
80%,100% {transform:rotate(1turn)}
}
.dots-6 {
width:30px;
height:27.6px;
--c:radial-gradient(farthest-side,currentColor 90%,#0000);
background:
var(--c) 50% 0,
var(--c) 0 100%,
var(--c) 100% 100%;
background-size: 12px 12px;
background-repeat: no-repeat;
position: relative;
animation: d6 1s infinite;
}
@keyframes d6{
50%,100% {background-position: 100% 100%,50% 0,0 100%}
}
.dots-7 {
width:12px;
height:12px;
border-radius: 50%;
clip-path: inset(-25px -100px);
box-shadow: 19px -40px,38px -40px,57px -40px;
transform: translateX(-38px);
animation: d7 1s infinite;
}
@keyframes d7{
16.67% {box-shadow: 19px 0px,38px -40px,57px -40px}
33.33% {box-shadow: 19px 0px,38px 0px,57px -40px}
45%,55%{box-shadow: 19px 0px,38px 0px,57px 0px}
66.67% {box-shadow: 19px 40px,38px 0px,57px 0px}
83.33% {box-shadow: 19px 40px,38px 40px,57px 0px}
100% {box-shadow: 19px 40px,38px 40px,57px 40px}
}
.dots-8 {
width:12px;
height:12px;
border-radius: 50%;
background: currentColor;
box-shadow: -19px 0px,19px 0px;
animation: d8 1s infinite;
}
@keyframes d8{
25% {box-shadow: -19px -19px, 19px 19px}
50% {box-shadow: 0px -19px, 0px 19px}
75% {box-shadow: 19px -19px,-19px 19px}
100% {box-shadow: 19px 0px,-19px 0px}
}
.dots-9 {
width:12px;
height:12px;
border-radius: 50%;
clip-path: inset(-45px);
box-shadow: -60px 15px,-60px 15px,-60px 15px;
transform: translateY(-15px);
animation: d9 1s infinite linear;
}
@keyframes d9{
16.67% {box-shadow:-60px 15px,-60px 15px,19px 15px}
33.33% {box-shadow:-60px 15px, 0px 15px,19px 15px}
40%,60%{box-shadow:-19px 15px, 0px 15px,19px 15px}
66.67% {box-shadow:-19px 15px, 0px 15px,60px 15px}
83.33% {box-shadow:-19px 15px, 60px 15px,60px 15px}
100% {box-shadow: 60px 15px, 60px 15px,60px 15px}
}
.dots-10 {
width:76px;
height:12px;
display: flex;
}
.dots-10:before,
.dots-10:after {
content:"";
flex:1;
background:
radial-gradient(farthest-side ,currentColor 90%,#0000) center/12px 100%,
radial-gradient(farthest-side at right,currentColor 90%,#0000) right /6px 100%;
background-repeat: no-repeat;
transform:scale(var(--s,1)) translate(0px) rotate(0);
animation:d10 2s infinite;
}
.dots-10:after {
--s:-1;
}
@keyframes d10 {
25% {transform:scale(var(--s,1)) translate(-10px) rotate(0);}
50% {transform:scale(var(--s,1)) translate(-10px) rotate(1turn);}
75%,100% {transform:scale(var(--s,1)) translate(0px) rotate(1turn);}
}
/**/
body {
display: grid;
grid-template-columns: repeat(auto-fit,minmax(250px,1fr));
grid-auto-rows: 130px;
place-items:center;
}
* {
box-sizing: border-box;
}
HTML + The Flipping
HTML
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
.flipping-1 {
width: 40px;
height: 40px;
background:#000;
transform:perspective(150px) rotateX(0);
animation: f1 1s infinite;
}
@keyframes f1 {
100% {transform:perspective(150px) rotateX(180deg)}
}
.flipping-2 {
width: 40px;
height: 40px;
transform:perspective(150px) rotateX(0);
animation:
f1-1 2s infinite linear,
f1-2 1s infinite linear alternate;
}
@keyframes f1-1 {
100% {transform:perspective(150px) rotateX(360deg)}
}
@keyframes f1-2 {
0%,49.9% {background:#ffa516}
50%,100% {background:#f03355}
}
.flipping-3 {
width: 40px;
height: 40px;
transform:perspective(150px) rotateX(0) rotateY(0);
animation:
f3-1 2s infinite linear,
f3-2 3s infinite linear -.5s;
}
@keyframes f3-1 {
50% {transform:perspective(150px) rotateX(180deg) rotateY(0)}
100% {transform:perspective(150px) rotateX(180deg) rotateY(180deg)}
}
@keyframes f3-2 {
0%,33% {background:#ffa516}
33.1%,66% {background:#f03355}
66.1%,100% {background:#25b09b}
}
.flipping-4 {
width: 60px;
height: 60px;
animation: f4-0 2s infinite linear;
}
.flipping-4::before {
content:"";
display:block;
width:50%;
height:50%;
transform:perspective(150px) rotateX(0deg);
transform-origin: bottom;
animation:
f4-1 0.5s infinite linear alternate,
f4-2 0.5s infinite linear alternate;
}
@keyframes f4-0 {
0%,24.99% {transform:scale(1 , 1) rotate(0deg)}
25%,49.99% {transform:scale(1 ,-1) rotate(90deg)}
50%,74.99% {transform:scale(-1,-1) rotate(0deg)}
75%,100% {transform:scale(-1, 1) rotate(90deg)}
}
@keyframes f4-1 {
100% {transform:perspective(150px) rotateX(180deg)}
}
@keyframes f4-2 {
0%,49.9% {background:#ffa516}
50%,100% {background:#f03355}
}
.flipping-5 {
width: 60px;
height: 60px;
animation: f5-0 1s infinite linear;
}
.flipping-5::before,
.flipping-5::after {
content:"";
position: absolute;
inset:0 50% 50% 0;
transform:scale(var(--s,1)) perspective(150px) rotateX(0deg);
transform-origin: bottom right;
animation:
f5-1 0.5s infinite linear alternate,
f5-2 0.5s infinite linear alternate;
}
.flipping-5::after {
--s:-1,-1;
}
@keyframes f5-0 {
0%,49.99% {transform:scale(1, 1) rotate(0deg)}
50%,100% {transform:scale(1,-1) rotate(90deg)}
}
@keyframes f5-1 {
100% {transform:scale(var(--s,1)) perspective(150px) rotateX(180deg)}
}
@keyframes f5-2 {
0%,49.9% {background:#25b09b}
50%,100% {background:#514b82}
}
.flipping-6 {
width: 60px;
height: 60px;
color: #25b09b;
background:
linear-gradient(currentColor 0 0),
linear-gradient(currentColor 0 0),
linear-gradient(currentColor 0 0);
background-size: 50.1% 50.1%;
background-repeat: no-repeat;
animation:
f6-0 1.5s infinite linear alternate,
f6-0-0 3s infinite linear;
}
.flipping-6::before {
content:"";
display:block;
width:50%;
height:50%;
background:currentColor;
transform:perspective(150px) rotateY(0deg) rotateX(0deg);
transform-origin: bottom right;
animation: f6-1 1.5s infinite linear alternate;
}
@keyframes f6-0 {
0% ,32.99% {background-position: 0 100%,100% 100%,100% 0}
33%,65.99% {background-position: 100% 100%,100% 100%,100% 0}
66%,100% {background-position: 100% 0 ,100% 0 ,100% 0}
}
@keyframes f6-0-0 {
0%,49.99% {transform: scaleX(1) rotate(0deg)}
50%,100% {transform: scaleX(-1) rotate(-90deg)}
}
@keyframes f6-1 {
16.5%{transform:perspective(150px) rotateX(-90deg) rotateY(0deg) rotateX(0deg);filter:grayscale(0.8)}
33% {transform:perspective(150px) rotateX(-180deg) rotateY(0deg) rotateX(0deg)}
66% {transform:perspective(150px) rotateX(-180deg) rotateY(-180deg) rotateX(0deg)}
100% {transform:perspective(150px) rotateX(-180deg) rotateY(-180deg) rotateX(-180deg);filter:grayscale(0.8)}
}
.flipping-7 {
width: 60px;
height: 60px;
color: #ffa516;
background:
linear-gradient(currentColor 0 0) 100% 0,
linear-gradient(currentColor 0 0) 0 100%;
background-size: 50.1% 50.1%;
background-repeat: no-repeat;
animation: f7-0 1s infinite linear;
}
.flipping-7::before,
.flipping-7::after {
content:"";
position: absolute;
inset:0 50% 50% 0;
background:currentColor;
transform:scale(var(--s,1)) perspective(150px) rotateY(0deg);
transform-origin: bottom right;
animation: f7-1 .5s infinite linear alternate;
}
.flipping-7::after {
--s:-1,-1;
}
@keyframes f7-0 {
0%,49.99% {transform: scaleX(1) rotate(0deg)}
50%,100% {transform: scaleX(-1) rotate(-90deg)}
}
@keyframes f7-1 {
49.99% {transform:scale(var(--s,1)) perspective(150px) rotateX(-90deg) ;filter:grayscale(0)}
50% {transform:scale(var(--s,1)) perspective(150px) rotateX(-90deg) ;filter:grayscale(0.8)}
100% {transform:scale(var(--s,1)) perspective(150px) rotateX(-180deg);filter:grayscale(0.8)}
}
.flipping-8 {
width: 60px;
height: 60px;
display: flex;
animation: f8-0 2s infinite linear;
}
.flipping-8::before,
.flipping-8::after {
content:"";
flex:1;
animation:
f8-1 1s infinite linear alternate,
f8-2 2s infinite linear -.5s;
}
.flipping-8::after {
--s:-1,-1;
}
@keyframes f8-0 {
0%,49.99% {transform: scaleX(1) rotate(0deg)}
50%,100% {transform: scaleX(-1) rotate(-90deg)}
}
@keyframes f8-1 {
0%,
5% {transform:scale(var(--s,1)) translate(0px) perspective(150px) rotateY(0deg) }
33% {transform:scale(var(--s,1)) translate(-10px) perspective(150px) rotateX(0deg) }
66% {transform:scale(var(--s,1)) translate(-10px) perspective(150px) rotateX(-180deg)}
95%,
100% {transform:scale(var(--s,1)) translate(0px) perspective(150px) rotateX(-180deg)}
}
@keyframes f8-2 {
0%,49.99% {background:#f03355}
50%,100% {background:#ffa516}
}
.flipping-9 {
width: 60px;
height: 60px;
color: #ffa516;
border-radius: 50%;
background:
linear-gradient(currentColor 0 0),
linear-gradient(currentColor 0 0),
linear-gradient(currentColor 0 0);
background-size: 50.1% 50.1%;
background-repeat: no-repeat;
animation:
f9-0 1.5s infinite linear alternate,
f9-0-0 3s infinite linear alternate;
}
.flipping-9::before {
content:"";
display:block;
width:50%;
height:50%;
background:currentColor;
border-top-left-radius: 100px;
transform:perspective(150px) rotateY(0deg) rotateX(0deg);
transform-origin: bottom right;
animation: f9-1 1.5s infinite linear alternate;
}
@keyframes f9-0 {
0% ,32.99% {background-position: 0 100%,100% 100%,100% 0}
33%,65.99% {background-position: 100% 100%,100% 100%,100% 0}
66%,100% {background-position: 100% 0 ,100% 0 ,100% 0}
}
@keyframes f9-0-0 {
0%,49.99% {transform: scaleX(1) rotate(0deg)}
50%,100% {transform: scaleX(-1) rotate(-90deg)}
}
@keyframes f9-1 {
16.5%{transform:perspective(150px) rotateX(-90deg) rotateY(0deg) rotateX(0deg);filter:grayscale(0.8)}
33% {transform:perspective(150px) rotateX(-180deg) rotateY(0deg) rotateX(0deg)}
66% {transform:perspective(150px) rotateX(-180deg) rotateY(-180deg) rotateX(0deg)}
100% {transform:perspective(150px) rotateX(-180deg) rotateY(-180deg) rotateX(-180deg);filter:grayscale(0.8)}
}
.flipping-10 {
width: 60px;
height: 60px;
display: flex;
animation: f10-0 2s infinite linear;
}
.flipping-10::before,
.flipping-10::after {
content:"";
flex:1;
animation:
f10-1 1s infinite linear alternate,
f10-2 2s infinite linear -.5s;
}
.flipping-10::after {
--s:-1,-1;
}
@keyframes f10-0 {
0%,49.99% {transform: scaleX(1) rotate(0deg)}
50%,100% {transform: scaleX(-1) rotate(-90deg)}
}
@keyframes f10-1 {
0%,
5% {transform:scale(var(--s,1)) translate(0px) perspective(150px) rotateY(0deg) }
33% {transform:scale(var(--s,1)) translate(-10px) perspective(150px) rotateX(0deg) }
66% {transform:scale(var(--s,1)) translate(-10px) perspective(150px) rotateX(-180deg)}
95%,
100% {transform:scale(var(--s,1)) translate(0px) perspective(150px) rotateX(-180deg)}
}
@keyframes f10-2 {
0%,49.99% {background:#514b82;border-radius: 0}
50%,100% {background:#25b09b;border-radius: 100px 0 0 100px}
}
/**/
body {
display: grid;
grid-template-columns: repeat(auto-fit,minmax(250px,1fr));
grid-auto-rows: 130px;
place-items:center;
}
* {
box-sizing: border-box;
}
HTML + CSS de The Shapes II
HTML
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
.shapes-1 { width: 40px; height: 40px; color: #25b09b; display: grid; } .shapes-1::before, .shapes-1::after { content: ""; grid-area: 1/1; background:currentColor; clip-path: polygon(0 0,50% 50%, 0 100%); animation: sp1 2s infinite; } .shapes-1::after { animation-delay: -1.5s; --s:90deg; } @keyframes sp1 { 0%,12.5% {transform:rotate(var(--s,0deg)) rotate(0deg)} 37.5%,62.5% {transform:rotate(var(--s,0deg)) rotate(-180deg)} 87.5%,100% {transform:rotate(var(--s,0deg)) rotate(-360deg)} } .shapes-2 { width: 40px; height: 40px; color: #514b82; background:repeating-conic-gradient(from -47deg,#0000 0deg, currentColor 1deg 91deg,#0000 94deg 180deg); display: flex; animation: sp2-0 2s infinite linear; } .shapes-2::before, .shapes-2::after { content: ""; flex: 1; background:currentColor; clip-path: polygon(0 0,100% 50%, 0 100%); animation: sp2 1s infinite alternate; transform-origin: bottom left; } .shapes-2::after { clip-path: polygon(100% 0,100% 100%,0 50%); transform-origin: top right; } @keyframes sp2-0 { 0%,49.9% {transform:scaleX( 1)} 50%,100% {transform:scaleX(-1)} } @keyframes sp2 { 0%, 20% {transform:rotate(0deg)} 80%,100% {transform:rotate(-270deg)} } .shapes-3 { width: 40px; height: 40px; color: orange; display: grid; } .shapes-3::before, .shapes-3::after { content: ""; grid-area: 1/1; background:currentColor; clip-path: polygon(0 0,101% 0, 0 100%); animation: sp3 2s infinite; } .shapes-3::after { --s:-1,-1; } @keyframes sp3 { 0%, 10% {transform:scale(var(--s,1)) translate(0,0) rotate(0deg)} 33% {transform:scale(var(--s,1)) translate(20px,-20px) rotate(0deg)} 66% {transform:scale(var(--s,1)) translate(20px,-20px) rotate(180deg)} 90%, 100% {transform:scale(var(--s,1)) translate(0px,0px) rotate(180deg)} } .shapes-4 { width: 40px; height: 40px; color:#f03355; background: conic-gradient(currentColor 0 270deg,#0000 0); border-radius: 50%; animation: sp4-0 4s infinite linear; } .shapes-4::before { content: ""; display: block; height: 50%; width: 50%; border-top-left-radius: 100px; background: currentColor; animation: sp4 0.5s infinite alternate; } @keyframes sp4-0 { 0%,24.99% {transform: rotate(0deg)} 25%,49.99% {transform: rotate(90deg)} 50%,74.99% {transform: rotate(180deg)} 75%,100% {transform: rotate(270deg)} } @keyframes sp4 { 100% {transform: translate(-10px,-10px)} } .shapes-5 { width: 40px; height: 40px; display: flex; transform-origin:50% 125%; animation: sp5-0 1.5s infinite linear; } .shapes-5:before, .shapes-5:after { content:""; flex:1; background:orange; animation: inherit; transform-origin: bottom left; animation-name: sp5-1; } .shapes-5:before { transform-origin: bottom right; --s:-1; } @keyframes sp5-0 { 0%,10% {transform:translateY(0) scaleY(1)} 49.99% {transform:translateY(-75%) scaleY(1)} 50% {transform:translateY(-75%) scaleY(-1)} 90%,100% {transform:translateY(-150%) scaleY(-1)} } @keyframes sp5-1 { 10%,90% {transform: rotate(0deg)} 50% {transform: rotate(calc(var(--s,1)*90deg))} } .shapes-6 { width: 40px; height: 40px; color:#25b09b; position: relative; background: linear-gradient(currentColor 0 0) center/100% 10px, linear-gradient(currentColor 0 0) center/10px 100%; background-repeat: no-repeat; } .shapes-6:before { content:''; position: absolute; inset:0; background: linear-gradient(currentColor 0 0) 0 0, linear-gradient(currentColor 0 0) 100% 0, linear-gradient(currentColor 0 0) 0 100%, linear-gradient(currentColor 0 0) 100% 100%; background-size:15.5px 15.5px; background-repeat: no-repeat; animation: sp6 1.5s infinite cubic-bezier(0.3,1,0,1); } @keyframes sp6 { 33% {inset:-10px;transform: rotate(0deg)} 66% {inset:-10px;transform: rotate(90deg)} 100% {inset:0 ;transform: rotate(90deg)} } .shapes-7 { width: 40px; height: 60px; color: #514b82; position: relative; } .shapes-7::before, .shapes-7::after { content: ""; position: absolute; inset:0; background:currentColor; clip-path: polygon(0 0,100% 0, 100% 67%,50% 67%,50% 34%,0 34%); animation: sp7 2s infinite; } .shapes-7::after { --s:-1,-1; } @keyframes sp7 { 0%, 10% {transform:scale(var(--s,1)) translate(0,0) rotate(0deg)} 33% {transform:scale(var(--s,1)) translate(0,-20px) rotate(0deg)} 66% {transform:scale(var(--s,1)) translate(10px,-20px) rotate(-90deg)} 90%, 100% {transform:scale(var(--s,1)) translate(10px,-10px) rotate(-90deg)} } .shapes-8 { width: 40px; height: 40px; color:#f03355; position: relative; background: radial-gradient(10px,currentColor 94%,#0000); } .shapes-8:before { content:''; position: absolute; inset:0; border-radius: 50%; background: radial-gradient(9px at bottom right,#0000 94%,currentColor) top left, radial-gradient(9px at bottom left ,#0000 94%,currentColor) top right, radial-gradient(9px at top right,#0000 94%,currentColor) bottom left, radial-gradient(9px at top left ,#0000 94%,currentColor) bottom right; background-size:20px 20px; background-repeat: no-repeat; animation: sp8 1.5s infinite cubic-bezier(0.3,1,0,1); } @keyframes sp8 { 33% {inset:-10px;transform: rotate(0deg)} 66% {inset:-10px;transform: rotate(90deg)} 100% {inset:0 ;transform: rotate(90deg)} } .shapes-9 { width: 40px; height: 20px; background: orange; position: relative; animation: sp9-0 1.5s infinite linear; } .shapes-9:before, .shapes-9:after { content:""; position: absolute; background: inherit; bottom: 100%; width: 50%; height: 100%; animation: inherit; animation-name: sp9-1; } .shapes-9:before { left:0; --s:-1,1; } .shapes-9:after { right:0; } @keyframes sp9-0 { 0%,30% {transform:translateY(0) scaleY(1)} 49.99% {transform:translateY(-50%) scaleY(1)} 50% {transform:translateY(-50%) scaleY(-1)} 70%,100% {transform:translateY(-100%) scaleY(-1)} } @keyframes sp9-1 { 0%,10%,90%,100% {transform: scale(var(--s,1)) translate(0)} 30%,70% {transform: scale(var(--s,1)) translate(20px)} 50% {transform: scale(var(--s,1)) translate(20px,20px)} } .shapes-10 { width: 40px; height: 40px; display: flex; transform-origin: 0% 150%; animation: sp10-0 2s infinite linear; } .shapes-10:before, .shapes-10:after { content:""; flex:1; background:#f03355; animation: sp10-1 1s infinite linear alternate; border-radius: 100px 0 0 100px; transform-origin: 100% 100%; } .shapes-10:after { border-radius: 0 100px 100px 0; transform-origin: 0% 100%; --s:-1; } @keyframes sp10-0 { 0%,10% {transform:translateY(0) scaleY(1)} 49.99% {transform:translateY(-100%) scaleY(1)} 50% {transform:translateY(-100%) scaleY(-1)} 90%,100% {transform:translateY(-200%) scaleY(-1)} } @keyframes sp10-1 { 0%,20% {transform:rotate(0deg) translate(0,0) rotate(0deg)} 50% {transform:rotate(calc(var(--s,1)*-90deg)) translate(0,0) rotate(0deg)} 100% {transform:rotate(calc(var(--s,1)*-90deg)) translate(0,-20px) rotate(calc(var(--s,1)*-90deg))} } /**/ body { display: grid; grid-template-columns: repeat(auto-fit,minmax(250px,1fr)); grid-auto-rows: 130px; place-items:center; } * { box-sizing: border-box; }
Sobre o Autor