├── .github
├── gifts
│ ├── Dia1.gif
│ ├── Dia10.gif
│ ├── Dia11.gif
│ ├── Dia12.gif
│ ├── Dia13.gif
│ ├── Dia14.gif
│ ├── Dia15.gif
│ ├── Dia16.gif
│ ├── Dia17.gif
│ ├── Dia18.gif
│ ├── Dia19.gif
│ ├── Dia2.gif
│ ├── Dia20.gif
│ ├── Dia21.gif
│ ├── Dia22.gif
│ ├── Dia23.gif
│ ├── Dia24.gif
│ ├── Dia25.gif
│ ├── Dia26.gif
│ ├── Dia27.gif
│ ├── Dia28.gif
│ ├── Dia29.gif
│ ├── Dia3.gif
│ ├── Dia30.gif
│ ├── Dia4.gif
│ ├── Dia5.gif
│ ├── Dia6.gif
│ ├── Dia7.gif
│ ├── Dia8.gif
│ └── Dia9.gif
└── img_github.png
├── .vscode
└── settings.json
├── Dia1
├── README.md
├── index.html
└── style.css
├── Dia10
├── README.md
├── icons
│ ├── computer-line.svg
│ ├── cup-line.svg
│ └── fries-line.svg
├── index.html
└── style.css
├── Dia11
├── README.md
├── index.html
└── style.css
├── Dia12
├── README.md
├── index.html
└── style.css
├── Dia13
├── README.md
├── index.html
└── style.css
├── Dia14
├── README.md
├── index.html
└── style.css
├── Dia15
├── README.md
├── icons
│ ├── sea-blue-sky.png
│ └── ship-boat-illustration-vector.png
├── index.html
└── style.css
├── Dia16
├── README.md
├── index.html
└── style.css
├── Dia17
├── README.md
├── index.html
└── style.css
├── Dia18
├── README.md
├── index.html
└── style.css
├── Dia19
├── README.md
├── index.html
└── style.css
├── Dia2
├── README.md
├── index.html
└── style.css
├── Dia20
├── README.md
├── index.html
└── style.css
├── Dia21
├── README.md
├── index.html
└── style.css
├── Dia22
├── README.md
├── index.html
└── style.css
├── Dia23
├── README.md
├── index.html
└── style.css
├── Dia24
├── README.md
├── index.html
└── style.css
├── Dia25
├── README.md
├── index.html
└── style.css
├── Dia26
├── README.md
├── index.html
└── style.css
├── Dia27
├── README.md
├── index.html
└── style.css
├── Dia28
├── README.md
├── index.html
└── style.css
├── Dia29
├── README.md
├── index.html
└── style.css
├── Dia3
├── README.md
├── index.html
└── style.css
├── Dia30
├── README.md
├── index.html
└── style.css
├── Dia4
├── README.md
├── index.html
└── style.css
├── Dia5
├── README.md
├── index.html
└── style.css
├── Dia6
├── README.md
├── index.html
└── style.css
├── Dia7
├── README.md
├── index.html
└── style.css
├── Dia8
├── README.md
├── index.html
└── style.css
├── Dia9
├── README.md
├── index.html
└── style.css
└── README.md
/.github/gifts/Dia1.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polyanetuag/30DiasDeCSS/6612f0b88f6e7a80e611219e1eb191e6ffafe75d/.github/gifts/Dia1.gif
--------------------------------------------------------------------------------
/.github/gifts/Dia10.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polyanetuag/30DiasDeCSS/6612f0b88f6e7a80e611219e1eb191e6ffafe75d/.github/gifts/Dia10.gif
--------------------------------------------------------------------------------
/.github/gifts/Dia11.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polyanetuag/30DiasDeCSS/6612f0b88f6e7a80e611219e1eb191e6ffafe75d/.github/gifts/Dia11.gif
--------------------------------------------------------------------------------
/.github/gifts/Dia12.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polyanetuag/30DiasDeCSS/6612f0b88f6e7a80e611219e1eb191e6ffafe75d/.github/gifts/Dia12.gif
--------------------------------------------------------------------------------
/.github/gifts/Dia13.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polyanetuag/30DiasDeCSS/6612f0b88f6e7a80e611219e1eb191e6ffafe75d/.github/gifts/Dia13.gif
--------------------------------------------------------------------------------
/.github/gifts/Dia14.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polyanetuag/30DiasDeCSS/6612f0b88f6e7a80e611219e1eb191e6ffafe75d/.github/gifts/Dia14.gif
--------------------------------------------------------------------------------
/.github/gifts/Dia15.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polyanetuag/30DiasDeCSS/6612f0b88f6e7a80e611219e1eb191e6ffafe75d/.github/gifts/Dia15.gif
--------------------------------------------------------------------------------
/.github/gifts/Dia16.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polyanetuag/30DiasDeCSS/6612f0b88f6e7a80e611219e1eb191e6ffafe75d/.github/gifts/Dia16.gif
--------------------------------------------------------------------------------
/.github/gifts/Dia17.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polyanetuag/30DiasDeCSS/6612f0b88f6e7a80e611219e1eb191e6ffafe75d/.github/gifts/Dia17.gif
--------------------------------------------------------------------------------
/.github/gifts/Dia18.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polyanetuag/30DiasDeCSS/6612f0b88f6e7a80e611219e1eb191e6ffafe75d/.github/gifts/Dia18.gif
--------------------------------------------------------------------------------
/.github/gifts/Dia19.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polyanetuag/30DiasDeCSS/6612f0b88f6e7a80e611219e1eb191e6ffafe75d/.github/gifts/Dia19.gif
--------------------------------------------------------------------------------
/.github/gifts/Dia2.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polyanetuag/30DiasDeCSS/6612f0b88f6e7a80e611219e1eb191e6ffafe75d/.github/gifts/Dia2.gif
--------------------------------------------------------------------------------
/.github/gifts/Dia20.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polyanetuag/30DiasDeCSS/6612f0b88f6e7a80e611219e1eb191e6ffafe75d/.github/gifts/Dia20.gif
--------------------------------------------------------------------------------
/.github/gifts/Dia21.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polyanetuag/30DiasDeCSS/6612f0b88f6e7a80e611219e1eb191e6ffafe75d/.github/gifts/Dia21.gif
--------------------------------------------------------------------------------
/.github/gifts/Dia22.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polyanetuag/30DiasDeCSS/6612f0b88f6e7a80e611219e1eb191e6ffafe75d/.github/gifts/Dia22.gif
--------------------------------------------------------------------------------
/.github/gifts/Dia23.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polyanetuag/30DiasDeCSS/6612f0b88f6e7a80e611219e1eb191e6ffafe75d/.github/gifts/Dia23.gif
--------------------------------------------------------------------------------
/.github/gifts/Dia24.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polyanetuag/30DiasDeCSS/6612f0b88f6e7a80e611219e1eb191e6ffafe75d/.github/gifts/Dia24.gif
--------------------------------------------------------------------------------
/.github/gifts/Dia25.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polyanetuag/30DiasDeCSS/6612f0b88f6e7a80e611219e1eb191e6ffafe75d/.github/gifts/Dia25.gif
--------------------------------------------------------------------------------
/.github/gifts/Dia26.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polyanetuag/30DiasDeCSS/6612f0b88f6e7a80e611219e1eb191e6ffafe75d/.github/gifts/Dia26.gif
--------------------------------------------------------------------------------
/.github/gifts/Dia27.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polyanetuag/30DiasDeCSS/6612f0b88f6e7a80e611219e1eb191e6ffafe75d/.github/gifts/Dia27.gif
--------------------------------------------------------------------------------
/.github/gifts/Dia28.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polyanetuag/30DiasDeCSS/6612f0b88f6e7a80e611219e1eb191e6ffafe75d/.github/gifts/Dia28.gif
--------------------------------------------------------------------------------
/.github/gifts/Dia29.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polyanetuag/30DiasDeCSS/6612f0b88f6e7a80e611219e1eb191e6ffafe75d/.github/gifts/Dia29.gif
--------------------------------------------------------------------------------
/.github/gifts/Dia3.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polyanetuag/30DiasDeCSS/6612f0b88f6e7a80e611219e1eb191e6ffafe75d/.github/gifts/Dia3.gif
--------------------------------------------------------------------------------
/.github/gifts/Dia30.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polyanetuag/30DiasDeCSS/6612f0b88f6e7a80e611219e1eb191e6ffafe75d/.github/gifts/Dia30.gif
--------------------------------------------------------------------------------
/.github/gifts/Dia4.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polyanetuag/30DiasDeCSS/6612f0b88f6e7a80e611219e1eb191e6ffafe75d/.github/gifts/Dia4.gif
--------------------------------------------------------------------------------
/.github/gifts/Dia5.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polyanetuag/30DiasDeCSS/6612f0b88f6e7a80e611219e1eb191e6ffafe75d/.github/gifts/Dia5.gif
--------------------------------------------------------------------------------
/.github/gifts/Dia6.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polyanetuag/30DiasDeCSS/6612f0b88f6e7a80e611219e1eb191e6ffafe75d/.github/gifts/Dia6.gif
--------------------------------------------------------------------------------
/.github/gifts/Dia7.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polyanetuag/30DiasDeCSS/6612f0b88f6e7a80e611219e1eb191e6ffafe75d/.github/gifts/Dia7.gif
--------------------------------------------------------------------------------
/.github/gifts/Dia8.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polyanetuag/30DiasDeCSS/6612f0b88f6e7a80e611219e1eb191e6ffafe75d/.github/gifts/Dia8.gif
--------------------------------------------------------------------------------
/.github/gifts/Dia9.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polyanetuag/30DiasDeCSS/6612f0b88f6e7a80e611219e1eb191e6ffafe75d/.github/gifts/Dia9.gif
--------------------------------------------------------------------------------
/.github/img_github.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polyanetuag/30DiasDeCSS/6612f0b88f6e7a80e611219e1eb191e6ffafe75d/.github/img_github.png
--------------------------------------------------------------------------------
/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "liveServer.settings.port": 5501
3 | }
--------------------------------------------------------------------------------
/Dia1/README.md:
--------------------------------------------------------------------------------
1 |
2 |
Ícone de mídia social em camadas
3 |
4 |
5 |
6 | O Desafio 1/30 foi desenvolver ícones que, ao passar o mouse, criasse um efeito "sanfona".
7 |
8 | Para essas camadas, foram utilizadas cinco camadas (span) e propriedades como o transform(translate) e :hover.
9 |
10 | ---
11 | Desenvolvido com ❤ por Polyane Tuag
--------------------------------------------------------------------------------
/Dia1/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Ícone de mídia social em camadas
7 |
8 |
9 |
10 |
11 |
12 |
13 |
69 |
70 |
71 |
72 |
73 |
--------------------------------------------------------------------------------
/Dia1/style.css:
--------------------------------------------------------------------------------
1 | body {
2 | margin: 0;
3 | padding: 0;
4 | height: 100vh;
5 | display: flex;
6 | align-items: center;
7 | justify-content: center;
8 | background-color: #F5F5F5;
9 | }
10 |
11 | ul {
12 | position: relative;
13 | margin: 0;
14 | padding: 0;
15 | display: flex;
16 | }
17 |
18 | ul li {
19 | position: relative;
20 | list-style: none;
21 | width: 60px;
22 | height: 60px;
23 | margin: 0 30px;
24 | transform: rotate(-30deg) skew(25deg);
25 | background: #ccc;
26 | }
27 |
28 | ul li span {
29 | position: absolute;
30 | top: 0;
31 | left: 0;
32 | width: 100%;
33 | height: 100%;
34 | background: #000;
35 | transition: 0.5s;
36 | display: flex !important;
37 | align-items: center;
38 | justify-content: center;
39 | color: #fff;
40 | font-size: 30px !important;
41 | }
42 |
43 |
44 | ul li:hover span {
45 | box-shadow: -1px 1px 1px rgba(0, 0, 0.1);
46 | }
47 |
48 | ul li:hover span:nth-child(6) {
49 | transform: translate(50px, -50px);
50 | opacity: 1;
51 | }
52 |
53 | ul li:hover span:nth-child(5) {
54 | transform: translate(40px, -40px);
55 | opacity: 1;
56 | }
57 |
58 | ul li:hover span:nth-child(4) {
59 | transform: translate(30px, -30px);
60 | opacity: 0.8;
61 | }
62 |
63 | ul li:hover span:nth-child(3) {
64 | transform: translate(20px, -20px);
65 | opacity: 0.6;
66 | }
67 |
68 | ul li:hover span:nth-child(2) {
69 | transform: translate(10px, -10px);
70 | opacity: 0.4;
71 | }
72 |
73 | ul li:hover span:nth-child(1) {
74 | transform: translate(0, 0);
75 | opacity: 2;
76 | }
77 |
78 | /*---CORES---*/
79 |
80 | ul li:nth-child(1) span {
81 | background: #3b5998;
82 | }
83 |
84 | ul li:nth-child(2) span {
85 | background: #00acee;
86 | }
87 |
88 | ul li:nth-child(3) span {
89 | background: #db4a39;
90 | }
91 |
92 | ul li:nth-child(4) span {
93 | background: #0e76a8;
94 | }
95 |
96 | ul li:nth-child(5) span {
97 | background: #d6249f;
98 | background: radial-gradient(circle at 30% 107%, #fdf497 0%, #fdf497 5%, #fd5949 45%,#d6249f 60%,#285AEB 90%);
99 | }
100 |
101 | ul li:nth-child(6) span {
102 | background: #24292e;
103 | }
--------------------------------------------------------------------------------
/Dia10/README.md:
--------------------------------------------------------------------------------
1 | Animação Texto Alternando
2 |
3 |
4 |
5 | Desafio 10/30
6 |
7 | Para o desafio 10, foi utilizado um span para o texto e um pseudo-elements(before) para inserir os icones.
8 |
9 |
10 | ---
11 | Desenvolvido com ❤ por Polyane Tuag
--------------------------------------------------------------------------------
/Dia10/icons/computer-line.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Dia10/icons/cup-line.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Dia10/icons/fries-line.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/Dia10/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Animação texto alternando
7 |
8 |
9 |
10 |
11 |
12 |
13 | I love
14 |
15 |
16 |
--------------------------------------------------------------------------------
/Dia10/style.css:
--------------------------------------------------------------------------------
1 | body {
2 | margin: 0;
3 | padding: 0;
4 | }
5 |
6 | .alignment {
7 | display: flex;
8 | align-items: center;
9 | justify-content: center;
10 | }
11 |
12 | .container {
13 | height: 100vh;
14 | background: rgb(6, 44, 18);
15 | }
16 |
17 | .text {
18 | font-family: 'Fredericka the Great', cursive;
19 | font-size: 60px;
20 | color: white;
21 | position: relative;
22 | }
23 |
24 | .text::before {
25 | content: "";
26 | position: absolute;
27 | width: 70px ;
28 | height: 70px;
29 | background-repeat: no-repeat;
30 | left: 170px;
31 | top: 5px;
32 | animation: icons 3s linear infinite;
33 | }
34 |
35 | @keyframes icons {
36 | 0%, 49% {
37 | background-image: url(icons/computer-line.svg);
38 | }
39 | 50%, 74% {
40 | background-image: url(icons/cup-line.svg);
41 | }
42 | 75%, 99% {
43 | background-image: url(icons/fries-line.svg);
44 | }
45 | }
--------------------------------------------------------------------------------
/Dia11/README.md:
--------------------------------------------------------------------------------
1 | Botão com Efeito Hover
2 |
3 |
4 |
5 | Desafio 11/30
6 |
7 | Para estilizar o botão, além do hover, usei um box-sizing e fui manipulando suas bordas(top, left e bottom) para criar o efeito de uma seta.
8 |
9 |
10 |
11 | ---
12 | Desenvolvido com ❤ por Polyane Tuag
--------------------------------------------------------------------------------
/Dia11/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Botão com efeito hover
7 |
8 |
9 |
10 |
11 |
12 |
13 | Desafio 30 Dias CSS
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/Dia11/style.css:
--------------------------------------------------------------------------------
1 | @import url('https://fonts.googleapis.com/css2?family=Open+Sans:ital@1&display=swap');
2 |
3 | body {
4 | margin: 0;
5 | padding: 0;
6 | }
7 |
8 | .container {
9 | height: 100vh;
10 | display: flex;
11 | align-items: center;
12 | justify-content: center;
13 | background: #FFE4E1;
14 | }
15 |
16 | .button {
17 | background: none;
18 | position: relative;
19 | width: 200px;
20 | height: 50px;
21 | font-family: 'Open Sans', sans-serif;
22 | font-size: 16px;
23 | cursor: pointer;
24 | border: 2px solid #FF1493;
25 | border-radius: 2px;
26 | overflow: hidden;
27 | }
28 |
29 |
30 | .text {
31 | position: absolute;
32 | color: #FF1493;
33 | top: -3px;
34 | right: 27px;
35 | transition: ease-in;
36 |
37 | }
38 | .wallpaper {
39 | position: absolute;
40 | background: none;
41 | width: 300px;
42 | height: 200px;
43 | top: -75px;
44 | right: 200px;
45 | transition: 1s;
46 |
47 | box-sizing: border-box;
48 | border-top: 100px solid transparent;
49 | border-left: 300px solid #FF1493;
50 | border-bottom: 100px solid transparent;
51 | }
52 |
53 | .button:hover .wallpaper {
54 | transition: 1s;
55 | transform: translateX(300px);
56 | }
57 |
58 | .button:hover .text {
59 | color: white;
60 | }
61 |
--------------------------------------------------------------------------------
/Dia12/README.md:
--------------------------------------------------------------------------------
1 | Efeito de Preenchimento ao passar o mouse
2 |
3 |
4 |
5 | Desafio 12/30
6 |
7 | Para criar o efeito, utilizei um pseudo-elemento before, juntamente com o hover, e um transition para suavizar o movimento.
8 |
9 |
10 |
11 | ---
12 | Desenvolvido com ❤ por Polyane Tuag
--------------------------------------------------------------------------------
/Dia12/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Efeito de Preenchimento ao passar o mouse
7 |
8 |
9 |
10 | #30diasCSS
11 |
12 |
13 |
--------------------------------------------------------------------------------
/Dia12/style.css:
--------------------------------------------------------------------------------
1 |
2 | body {
3 | margin: 0;
4 | padding: 0;
5 | height: 100vh;
6 | background: #008B8B;
7 | }
8 |
9 | .alignment {
10 | display: flex;
11 | align-items: center;
12 | justify-content: center;
13 | }
14 |
15 | .text {
16 | position: relative;
17 | color: #00CDCD;
18 | font-size: 40px;
19 | font-family: Cambria, Cochin, Georgia, Times, 'Times New Roman', serif;
20 | cursor: context-menu;
21 | }
22 |
23 | .text::before {
24 | content:"#30diasCSS";
25 | position: absolute;
26 | overflow: hidden;
27 | top: 0%;
28 | left: 0%;
29 | color: white;
30 | height: 0%;
31 | transition: 1.2s;
32 | }
33 |
34 | .text:hover::before {
35 | height: 100%;
36 | }
37 |
--------------------------------------------------------------------------------
/Dia13/README.md:
--------------------------------------------------------------------------------
1 | Loading com efeito
2 |
3 |
4 |
5 | Desafio 13/30
6 |
7 | Simulando o efeito de ondas, utilizei as propriedades:
8 | Animation
9 | Transform: translate (na posição Y) e
10 | Transition
11 |
12 |
13 |
14 | ---
15 | Desenvolvido com ❤ por Polyane Tuag
--------------------------------------------------------------------------------
/Dia13/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Loading com efeito
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 | L
15 | O
16 | A
17 | D
18 | I
19 | N
20 | G
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/Dia13/style.css:
--------------------------------------------------------------------------------
1 | body {
2 | margin: 0;
3 | padding: 0;
4 | }
5 |
6 | .container {
7 | height: 100vh;
8 | display: flex;
9 | align-items: center;
10 | justify-content: center;
11 | background: #fffdfa;
12 |
13 | }
14 |
15 | .effects {
16 | display: flex;
17 | font-size: 40px;
18 | font-family: 'Nunito', sans-serif;
19 | width: 300px;
20 | justify-content: space-evenly;
21 | }
22 |
23 | .alignment {
24 | animation: letter 1.05s alternate-reverse infinite;
25 | display: block;
26 | justify-content: center;
27 |
28 | background:linear-gradient(90deg, rgba(2,0,36,1) 0%, rgba(88,130,242,0.9500175070028011) 30%, rgba(221,92,243,1) 50%, rgba(154,95,243,1) 71%, rgba(249,135,250,1) 100%);
29 | background-size: contain;
30 | -webkit-background-clip: text;
31 | -webkit-text-fill-color: transparent;
32 |
33 | }
34 |
35 | .two {
36 | animation-delay: .3s;
37 | }
38 |
39 | .three {
40 | animation-delay: .6s;
41 | }
42 | .four {
43 | animation-delay: .9s;
44 | }
45 | .five {
46 | animation-delay: 1.2s;
47 | }
48 | .six {
49 | animation-delay: 1.5s;
50 | }
51 | .seven {
52 | animation-delay: 1.8s;
53 | }
54 |
55 |
56 | @keyframes letter {
57 | from {
58 | transform: translateY(30px);
59 | transition: .5s;
60 | }
61 | to {
62 | transform: translateY(0px);
63 | transition: .5s;
64 | }
65 | }
66 |
67 |
--------------------------------------------------------------------------------
/Dia14/README.md:
--------------------------------------------------------------------------------
1 | Fundo de texto animado
2 |
3 |
4 |
5 | Desafio 14/30
6 |
7 | Para este desafio, utilizei as seguintes propriedades:
8 | - background-clip
9 | - text-fill-color
10 | - background-image e
11 | - animation
12 |
13 | ---
14 | Desenvolvido com ❤ por Polyane Tuag
--------------------------------------------------------------------------------
/Dia14/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Fundo de texto animado
7 |
8 |
9 |
10 |
11 |
15 |
16 |
--------------------------------------------------------------------------------
/Dia14/style.css:
--------------------------------------------------------------------------------
1 | body {
2 | margin: 0;
3 | padding: 0;
4 | }
5 |
6 | .container {
7 | height: 100vh;
8 | display: flex;
9 | align-items: center;
10 | justify-content: center;
11 | text-align-last: center;
12 | background: radial-gradient(#CFCFCF,#B5B5B5,#9C9C9C, #828282,#696969, #4F4F4F, #363636, #1C1C1C , #000000 );
13 | }
14 |
15 | .text {
16 | font-size: 100px;
17 | font-family: 'Lato', sans-serif;
18 | animation: code 5s linear infinite;
19 | height: 300px;
20 |
21 | background-size: 50%;
22 | -webkit-background-clip: text;
23 | -webkit-text-fill-color: transparent;
24 | background-image: url(https://storage.needpix.com/rsynced_images/matrix-1461373324WTC.jpg);
25 | }
26 |
27 | @keyframes code {
28 | 0% {
29 | background-position-y: 0%;
30 | }
31 | 100% {
32 | background-position-y: 100%;
33 | }
34 | }
35 |
36 |
--------------------------------------------------------------------------------
/Dia15/README.md:
--------------------------------------------------------------------------------
1 | Efeito Flutuante
2 |
3 |
4 |
5 | Desafio 15/30
6 |
7 | Para criar o efeito de flutuar, utilizei a propriedade keyframes com rotate e translate.
8 |
9 | E para o movimento do mar,também utilizei a propriedade animation e keyframes, com background-position no sentido x.
10 |
11 | ---
12 | Desenvolvido com ❤ por Polyane Tuag
--------------------------------------------------------------------------------
/Dia15/icons/sea-blue-sky.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polyanetuag/30DiasDeCSS/6612f0b88f6e7a80e611219e1eb191e6ffafe75d/Dia15/icons/sea-blue-sky.png
--------------------------------------------------------------------------------
/Dia15/icons/ship-boat-illustration-vector.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/polyanetuag/30DiasDeCSS/6612f0b88f6e7a80e611219e1eb191e6ffafe75d/Dia15/icons/ship-boat-illustration-vector.png
--------------------------------------------------------------------------------
/Dia15/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Efeito Flutuar
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/Dia15/style.css:
--------------------------------------------------------------------------------
1 | body {
2 | margin: 0;
3 | padding: 0;
4 | height: 100vh;
5 | display: flex;
6 | align-items: center;
7 | justify-content: center;
8 | }
9 |
10 | .container {
11 | display: flex;
12 | align-items: center;
13 | justify-content: center;
14 | position: relative;
15 | overflow: hidden;
16 | height: 500px;
17 | width: 800px;
18 | }
19 |
20 | .sky {
21 | position: absolute;
22 | height: 500px;
23 | width: 800px;
24 | top: 0px;
25 | background: linear-gradient(#00FFFF, #98F5FF, White, #AFEEEE, #ADD8E6, #87CEFA, #1E90FF, #0000FF);
26 |
27 | }
28 |
29 | .sea {
30 | position: absolute;
31 | height: 1200px;
32 | width: 1200px;
33 | top: 0px;
34 |
35 | background-image: url(icons/sea-blue-sky.png);
36 | background-repeat: no-repeat;
37 | background-size: 100%;
38 |
39 | transition: 1s;
40 | animation: sea 5s linear infinite;
41 | }
42 |
43 | .boat img {
44 | position: relative;
45 | height: 200px;
46 | width: 200px;
47 | top: 10px;
48 |
49 | transition: 1s;
50 | animation: float 2s linear infinite;
51 | }
52 |
53 | @keyframes float {
54 | 0% {
55 | transform:rotate(2deg);
56 | }
57 | 50% {
58 | transform: translateY(2px);
59 | }
60 | 100% {
61 | transform:rotate(2deg);
62 | }
63 | }
64 |
65 | @keyframes sea {
66 | 0% { background-position-x: 0px; }
67 | 100%{ background-position-x: 200px; }
68 | }
69 |
70 |
71 |
72 |
73 |
--------------------------------------------------------------------------------
/Dia16/README.md:
--------------------------------------------------------------------------------
1 | Botão com Efeito Checked
2 |
3 |
4 |
5 | Desafio 16/30
6 |
7 | Para este desafio, utilizei as propriedades:
8 | - transform-style
9 | - transform-origin
10 | - transform rotate/translate
11 |
12 | ---
13 | Desenvolvido com ❤ por Polyane Tuag
--------------------------------------------------------------------------------
/Dia16/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Botão com Efeito
7 |
8 |
9 |
10 |
11 | Desafio 16
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/Dia16/style.css:
--------------------------------------------------------------------------------
1 |
2 |
3 | .buttons {
4 | text-align: center;
5 | height: 100vh;
6 | display: flex;
7 | align-items: center;
8 | justify-content: center;
9 |
10 | background: black;
11 |
12 | }
13 |
14 | .effect {
15 | border: none;
16 | color: #F8F8FF;
17 | padding: 20px;
18 | margin: 10px;
19 | font-size: 24px;
20 | line-height: 24px;
21 | border-radius: 10px;
22 | position: relative;
23 | box-sizing: border-box;
24 | cursor: pointer;
25 | transition: all 400ms ease;
26 |
27 | }
28 |
29 | .spin {
30 | background: linear-gradient(#DAA520, #FFC125, #FFD700);
31 | transform-style: preserve-3d;
32 | }
33 |
34 | .spin::after {
35 | top: -100%;
36 | left: 0px;
37 | width: 100%;
38 | padding: 20px;
39 | position: absolute;
40 | background: linear-gradient(#228B22,#32CD32, #7FFF00 );
41 | border-radius: 10px;
42 | box-sizing: border-box;
43 | content: "Feito ✔" ;
44 |
45 | transform-origin: left bottom;
46 | transform: rotateX(90deg);
47 |
48 | }
49 |
50 | .spin:hover {
51 | transform-origin: center bottom;
52 | transform: rotateX(-90deg) translateY(100%);
53 | }
--------------------------------------------------------------------------------
/Dia17/README.md:
--------------------------------------------------------------------------------
1 | Loader Animado - Efeito Flip
2 |
3 |
4 |
5 | Desafio 17/30
6 |
7 | Neste desafio, utilizei a propriedade transform rotate (somente na posição Y), com animation e keyframes.
8 |
9 |
10 |
11 | ---
12 | Desenvolvido com ❤ por Polyane Tuag
--------------------------------------------------------------------------------
/Dia17/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Loader animado
7 |
8 |
9 |
10 | ❤
11 |
12 |
13 |
--------------------------------------------------------------------------------
/Dia17/style.css:
--------------------------------------------------------------------------------
1 | body {
2 | margin: 0;
3 | padding: 0;
4 | height: 100vh;
5 | background: #1C1C1C ;
6 | }
7 |
8 | .alignment {
9 | display: flex;
10 | align-items: center;
11 | justify-content: center;
12 | }
13 |
14 | .load {
15 | height: 50px;
16 | width: 50px;
17 | color: white;
18 | background: linear-gradient(127deg, rgba(250,4,4,1) 5%, rgba(252,52,3,1) 11%, rgba(255,149,0,1) 18%, rgba(249,238,4,1) 26%, rgba(223,249,4,1) 35%, rgba(120,249,4,1) 42%, rgba(4,249,172,1) 45%, rgba(4,239,249,1) 56%, rgba(38,144,255,1) 65%, rgba(4,9,249,1) 72%, rgba(204,18,244,1) 85%, rgba(245,24,240,1) 89%, rgba(245,24,177,1) 96%);
19 |
20 | border-radius: 10px;
21 |
22 | animation: load 1s alternate infinite;
23 | transition: 2s;
24 | }
25 |
26 | @keyframes load {
27 | 0%{
28 | transform: rotateX(0deg)
29 | rotateY(0deg);
30 | }
31 | 100% {
32 | transform: rotateX(0deg)
33 | rotateY(180deg);
34 | box-shadow: 0px 0px 10px -2px rgba(235, 232, 232, 0.856);
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/Dia18/README.md:
--------------------------------------------------------------------------------
1 | Texto com Efeito Esfumaçado
2 |
3 |
4 |
5 | Desafio 18/30
6 |
7 | Para esse efeito, utilizei:
8 | - filter (blur) - para o efeito de "fumaça"
9 | - transform rotate (x,y) - para movimentar o texto
10 |
11 |
12 | ---
13 | Desenvolvido com ❤ por Polyane Tuag
--------------------------------------------------------------------------------
/Dia18/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Texto com Efeito Fumaça
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 | D
15 | E
16 | S
17 | A
18 | F
19 | I
20 | O
21 | -1
22 | 8
23 |
24 |
25 |
--------------------------------------------------------------------------------
/Dia18/style.css:
--------------------------------------------------------------------------------
1 | body {
2 | margin: 0;
3 | padding: 0;
4 | }
5 |
6 | .container {
7 | display: flex;
8 | align-items: center;
9 | justify-content: center;
10 | height: 100vh;
11 | background: black;
12 | }
13 |
14 | .text {
15 | font-size: 60px;
16 | font-family: 'Butcherman', cursive;
17 | letter-spacing: 15px;
18 |
19 | background: -webkit-linear-gradient(0deg, rgba(0,0,0,1) 0%, rgba(48,4,4,1) 4%, rgba(85,7,7,1) 22%, rgba(245,16,16,1) 55%, rgba(255,0,0,1) 97%);
20 | -webkit-background-clip: text;
21 | -webkit-text-fill-color: transparent;
22 |
23 | transition: 1s;
24 | animation: fog 4s alternate infinite;
25 | }
26 |
27 | @keyframes fog {
28 | from {
29 | transform: rotateX(60deg) translateY(60px);
30 | opacity: 0;
31 | filter: blur(15px);
32 | }
33 | to {
34 | transform:skew(10deg);
35 | }
36 | }
37 |
38 | .text span:nth-child(0) {
39 | transition-delay: 0s;
40 | }
41 | .text span:nth-child(1) {
42 | transition-delay: 0.3s;
43 | }
44 | .text span:nth-child(2) {
45 | transition-delay: 0.6s;
46 | }
47 | .text span:nth-child(3) {
48 | transition-delay: 0.9s;
49 | }
50 | .text span:nth-child(4) {
51 | transition-delay: 1.2s;
52 | }
53 | .text span:nth-child(5) {
54 | transition-delay: 1.5s;
55 | }
56 | .text span:nth-child(6) {
57 | transition-delay: 1.8s;
58 | }
59 | .text span:nth-child(7) {
60 | transition-delay: 2.1s;
61 | }
62 | .text span:nth-child(8) {
63 | transition-delay: 2.3s;
64 | }
65 | .text span:nth-child(9) {
66 | transition-delay: 2.6s;
67 | }
68 |
--------------------------------------------------------------------------------
/Dia19/README.md:
--------------------------------------------------------------------------------
1 | Background Animado - Caixas Flutuantes
2 |
3 |
4 |
5 | Desafio 19/30
6 |
7 | Para esse efeito, utilizei:
8 | - transform translate (y)
9 | - transform rotate (x,y)
10 | - opacity
11 | - nth-child()
12 |
13 |
14 | ---
15 | Desenvolvido com ❤ por Polyane Tuag
--------------------------------------------------------------------------------
/Dia19/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Background Animado - Caixas Flutuantes
7 |
8 |
9 |
10 |
11 |
12 |
13 |
Desafio 19
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/Dia19/style.css:
--------------------------------------------------------------------------------
1 | * {
2 | margin: 0;
3 | padding: 0;
4 | border: 0;
5 | }
6 |
7 | body {
8 | display: flex;
9 | align-items: center;
10 | justify-content: center;
11 | }
12 |
13 | .group-animate{
14 | height: 100vh;
15 | background: linear-gradient(to bottom, #fcc5e4 0%, #fda34b 15%, #ff7882 35%, #c8699e 52%, #7046aa 71%, #0c1db8 87%, #020f75 100%);
16 | width: 100%;
17 |
18 | display: flex;
19 | align-items: center;
20 | justify-content: center;
21 | }
22 |
23 | .text {
24 | font-size: 50px;
25 | font-family: Nunito, sans-serif;
26 | color: white;
27 | width: 300px;
28 | }
29 |
30 | .animate-box{
31 | position: absolute;
32 | top: -180px;
33 | left: 0px;
34 | width: 100%;
35 | height: 100%;
36 | overflow: hidden;
37 | }
38 |
39 | .animate-box li {
40 | position: absolute;
41 | display: block;
42 | border-radius: 5px;
43 | list-style: none;
44 | width: 30px;
45 | height: 30px;
46 | background: rgba(255, 255, 255, 0.2);
47 | animation: floating 15s linear infinite;
48 |
49 | }
50 |
51 | .animate-box li:nth-child(1) {
52 | left: 80%;
53 | height: 20px;
54 | width: 20px;
55 | animation-delay: 0s;
56 | }
57 |
58 | .animate-box li:nth-child(2) {
59 | left: 60%;
60 | height: 60px;
61 | width: 60px;
62 | animation-delay: 3s;
63 | animation-duration: 9s;
64 |
65 | }
66 |
67 | .animate-box li:nth-child(3) {
68 | left: 60%;
69 | height: 30px;
70 | width: 30px;
71 | animation-delay: 5s;
72 | }
73 |
74 | .animate-box li:nth-child(4) {
75 | left: 70%;
76 | height: 45px;
77 | width: 45px;
78 | animation-delay: 3s;
79 | animation-duration: 10s;
80 | }
81 |
82 | .animate-box li:nth-child(5) {
83 | left: 40%;
84 | height:40px;
85 | width: 40px;
86 | animation-delay: 8s;
87 | }
88 |
89 | .animate-box li:nth-child(6) {
90 | left: 30%;
91 | height: 50px;
92 | width: 50px;
93 | animation-delay: 6s;
94 | }
95 |
96 | .animate-box li:nth-child(7) {
97 | left: 15%;
98 | height: 100px;
99 | width: 100px;
100 | animation-delay: 4s;
101 | }
102 |
103 | .animate-box li:nth-child(8) {
104 | left: 85%;
105 | height: 90px;
106 | width: 90px;
107 | animation-delay: 0s;
108 | }
109 |
110 | .animate-box li:nth-child(9) {
111 | left: 10%;
112 | height: 50px;
113 | width: 50px;
114 | animation-delay: 8s;
115 | }
116 |
117 | .animate-box li:nth-child(10) {
118 | left: 15%;
119 | height: 60px;
120 | width: 60px;
121 | animation-delay: 10s;
122 | }
123 |
124 | @keyframes floating {
125 | 0% {
126 | transform: translateY(0) rotate(0deg);
127 | opacity: 1;
128 | }
129 | 50% {
130 | opacity: 1;
131 | }
132 | 75% {
133 | opacity: 0;
134 | }
135 | 100% {
136 | transform: translateY(800px) rotate(360deg);
137 | }
138 | }
--------------------------------------------------------------------------------
/Dia2/README.md:
--------------------------------------------------------------------------------
1 | Loading
2 |
3 |
4 |
5 | Desafio 2/30
6 |
7 | Para esse exercício, utilizou-se (para o anel), as propriedades:
8 | - transform: translate
9 | - animation
10 | - transform: translate (@keyframes)
11 |
12 |
13 | ---
14 | Desenvolvido com ❤ por Polyane Tuag
15 |
--------------------------------------------------------------------------------
/Dia2/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Loading
7 |
8 |
9 |
10 |
11 |
12 |
16 |
17 |
--------------------------------------------------------------------------------
/Dia2/style.css:
--------------------------------------------------------------------------------
1 | body {
2 | margin: 0;
3 | padding: 0;
4 | font-family: 'Playfair Display', serif;
5 | }
6 | html {
7 |
8 | background: rgb(20, 20, 20) !important;
9 | }
10 |
11 | .center {
12 | position: absolute;
13 | top: 50%;
14 | left: 50%;
15 | transform: translate(-50%, -50%); /**/
16 | }
17 |
18 | .ring {
19 | width: 200px;
20 | height: 200px;
21 | border-radius: 50%;
22 | box-shadow: 0 4px 0 #FFA500;
23 | background: transparent;
24 | animation: animate 1.4s linear infinite;
25 | }
26 |
27 | .text {
28 | width: 200px;
29 | height: 200px;
30 | border-radius: 50%;
31 | color: #FFFACD;
32 | position: absolute;
33 | top: 0;
34 | left: 0;
35 | text-align: center;
36 | line-height: 200px;
37 | font-size: 22px;
38 | background: transparent;
39 | box-shadow: 0 0 5px #FF8C00;
40 | }
41 |
42 | @keyframes animate {
43 | 0% {
44 | transform: rotate(0deg);
45 | }
46 | 100% {
47 | transform: rotate(360deg);
48 | }
49 | }
--------------------------------------------------------------------------------
/Dia20/README.md:
--------------------------------------------------------------------------------
1 | Botão com Efeito Ajuda/Informação
2 |
3 |
4 |
5 | Desafio 20/30
6 |
7 | Para este desafio, utilizei a propriedade clip-path. Tal propriedade, faz um "recorte" sobre o elemento que será mostrado, fazendo com que o restante fique oculto.
8 |
9 |
10 | ---
11 | Desenvolvido com ❤ por Polyane Tuag
--------------------------------------------------------------------------------
/Dia20/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Botão com Efeito Ajuda/Informação
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
💡
18 |
19 |
#30diasCSS
20 |
21 | A proposta é realizar a cada dia, durante 30 dias, um desafio focado em CSS, a fim de melhorar suas habilidades de codificação (HTML e CSS).
22 |
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/Dia20/style.css:
--------------------------------------------------------------------------------
1 | * {
2 | margin: 0px;
3 | padding: 0;
4 | box-sizing: border-box;
5 |
6 | }
7 |
8 | body {
9 | height: 100vh;
10 | font-family: 'Nunito', sans-serif;
11 | display: grid;
12 | place-content: center;
13 | align-items: center;
14 |
15 | background: #FFFAFA;
16 | }
17 |
18 | .container {
19 | height: 350px;
20 | width: 400px;
21 | border-radius: 8px;
22 | }
23 |
24 | .info {
25 | position: relative;
26 | padding: 30px;
27 |
28 | clip-path: circle(8% at 92.5% 17%);
29 | transition: all ease-in-out .3s;
30 | background-color: #FEE140;
31 | background-image: linear-gradient(60deg, #FEE140 0%, #FA709A 100%);
32 |
33 | }
34 |
35 | .icon {
36 | position: absolute;
37 | top: 20px;
38 | right: 20px;
39 | font-size: 20px;
40 | transition: ease-out .3s;
41 | cursor: pointer;
42 | }
43 |
44 | .title {
45 | margin: 0;
46 | font-size: 20px;
47 | line-height: 60px;
48 | color: rgb(72, 70, 70);
49 | font-weight: 800;
50 | }
51 |
52 | .text {
53 | margin: 0;
54 | font-size: 15px;
55 | line-height: 22px;
56 | color: rgb(39, 39, 39);
57 | }
58 |
59 | .info:hover {
60 | clip-path: circle(85%);
61 | border-radius: 10px;
62 | box-shadow: 0px 3px 9px rgba(0,0,0,0.3),
63 | 0px 3px 18px rgba(0,0,0,0.8);
64 | }
65 |
66 | .info:hover .icon {
67 | opacity: 0;
68 | }
--------------------------------------------------------------------------------
/Dia21/README.md:
--------------------------------------------------------------------------------
1 | Efeito Loading
2 |
3 |
4 |
5 | Desafio 21/30
6 |
7 | Para o efeito nas esferas, utilizei as propriedades scale (Variando suas escalas) e translateY (altura do salto).
8 |
9 |
10 | ---
11 | Desenvolvido com ❤ por Polyane Tuag
--------------------------------------------------------------------------------
/Dia21/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Efeito Loading
7 |
8 |
9 |
10 |
11 |
12 |
Loading
13 |
14 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/Dia21/style.css:
--------------------------------------------------------------------------------
1 | * {
2 | margin: 0;
3 | padding: 0;
4 | }
5 |
6 | body {
7 | height: 100vh;
8 | display: flex;
9 | align-items: center;
10 | justify-content: center;
11 | }
12 |
13 | .container {
14 | position: relative;
15 | height: 100px;
16 | width: 400px;
17 | }
18 |
19 | .text {
20 | font-size: 40px;
21 | font-family: monospace;
22 | display: flex;
23 | align-items: center;
24 | justify-content: center;
25 |
26 | animation: shine 1.5s linear infinite;
27 | }
28 |
29 | .balls {
30 | position: absolute;
31 | width: 400px;
32 | height: 100px;
33 | }
34 |
35 | .ball {
36 | position: absolute;
37 | width: 20px;
38 | height: 20px;
39 | border-radius: 50%;
40 | background-image: linear-gradient(to right, #43e97b 0%, #38f9d7 100%);
41 | top: -70px;
42 | left: 155px;
43 |
44 | animation: bounce 1s ease infinite;
45 | }
46 |
47 | .ball:nth-last-child(1) {
48 | top: -110px;
49 | margin:40px;
50 | animation-delay: .2s;
51 | }
52 |
53 | .ball:nth-last-child(2) {
54 | top: -150px;
55 | margin:80px;
56 | animation-delay: .3s;
57 | }
58 |
59 | @keyframes shine {
60 | 0% { opacity: 1;}
61 | 50% {opacity: .6;}
62 | 100% { opacity: 1;}
63 | }
64 |
65 | @keyframes bounce {
66 | 0% {transform: scale(1,1) translateY(0)}
67 | 5% {transform: scale(1.1,0.9) translateY(0)}
68 | 50% {transform: scale(0.9,1.1) translateY(-40px)}
69 | 75% {transform: scale(0.9,1.1) translateY(-40)}
70 | 100% {transform: scale(1,1) translateY(0)}
71 | }
72 |
73 |
--------------------------------------------------------------------------------
/Dia22/README.md:
--------------------------------------------------------------------------------
1 | Menu Hamburguer
2 |
3 |
4 |
5 | Desafio 22/30
6 |
7 | Para criar as "linhas" do menu, utilizei os pseudo-elements before e after, e para movê-las, usei transform rotate(45deg) e translate(y).
8 |
9 |
10 | ---
11 | Desenvolvido com ❤ por Polyane Tuag
--------------------------------------------------------------------------------
/Dia22/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Menu Hamburguer
7 |
8 |
9 |
10 |
11 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/Dia22/style.css:
--------------------------------------------------------------------------------
1 | * {
2 | margin: 0;
3 | padding: 0;
4 | }
5 |
6 | .container {
7 | height: 100vh;
8 | background: black;
9 | display: flex;
10 | }
11 |
12 | .menu {
13 | width: 60px;
14 | height: 60px;
15 | margin: 100px auto;
16 | position: relative;
17 | }
18 |
19 | .menu label {
20 | position: absolute;
21 | width: 100%;
22 | height: 100%;
23 | background-color: #00DBDE;
24 | background-image: linear-gradient(90deg, #00DBDE 0%, #FC00FF 100%);
25 | cursor: pointer;
26 | border-radius: 2px;
27 | border: 1px solid #ccc;
28 | transition: all .3s ease-out;
29 | }
30 |
31 | #check {
32 | position: absolute;
33 | z-index: 1;
34 | display: none;
35 | }
36 |
37 | .line {
38 | position: absolute;
39 | width: 40px;
40 | height: 4px;
41 | top: 29px;
42 | left: 11px;
43 | background: white;
44 | border-radius: 2px;
45 | transition: all .3s ease-out;
46 | }
47 |
48 | .line::before {
49 | content: '';
50 | position: absolute;
51 | width: 40px;
52 | height: 4px;
53 | bottom: 12px;
54 | background: white;
55 | border-radius: 2px;
56 | transition: all .3s ease-out;
57 | }
58 |
59 | .line::after {
60 | content: '';
61 | position: absolute;
62 | width: 40px;
63 | height: 4px;
64 | top: 12px;
65 | background: white;
66 | border-radius: 2px;
67 | transition: all .3s ease-out;
68 | }
69 |
70 | #check:checked ~ .line {
71 | background: transparent;
72 | }
73 |
74 | #check:checked ~ .line::after {
75 | transform: translate(0px, -10px) rotate(-45deg);
76 | }
77 |
78 | #check:checked ~ .line::before {
79 | transform: translate(0px, 14px) rotate(45deg);
80 | }
81 |
82 | #check:checked ~ label {
83 | border-radius: 50%;
84 | }
--------------------------------------------------------------------------------
/Dia23/README.md:
--------------------------------------------------------------------------------
1 | Botão Efeito Liquid Fill
2 |
3 |
4 |
5 | Desafio 23/30
6 |
7 | Utlizando a mesma base do exercício anterior, utilizei um input (tipo checkbox) para "ativar" e o pseudo-elemento before para o elemento, criando assim o efeito de preenchimento.
8 |
9 |
10 | ---
11 | Desenvolvido com ❤ por Polyane Tuag
--------------------------------------------------------------------------------
/Dia23/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Botão Efeito Liquid Fill
7 |
8 |
9 |
10 |
11 |
12 |
13 | Click here
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/Dia23/style.css:
--------------------------------------------------------------------------------
1 | body {
2 | margin: 0;
3 | padding: 0;
4 | box-sizing: content-box;
5 | }
6 |
7 | .container {
8 | display: flex;
9 | align-items: center;
10 | justify-content: center;
11 | height: 100vh;
12 | background: rgb(41,41,42);
13 | background: radial-gradient(circle, rgba(41,41,42,1) 0%, rgba(17,15,15,1) 48%, rgba(24,24,24,1) 100%);
14 | }
15 |
16 | .box {
17 | position: relative;
18 | height: 80px;
19 | width: 80px;
20 | background: transparent;
21 | border: 2px solid white;
22 | border-radius: 3px;
23 | overflow: hidden;
24 | }
25 |
26 | #check {
27 | position: absolute;
28 | display: none;
29 | }
30 |
31 | .box label {
32 | position: absolute;
33 | width: 100%;
34 | height: 100%;
35 | left: 0;
36 | font-size: 14px;
37 | margin-top: 28px;
38 | text-align: center;
39 | line-height: 24px;
40 | color: white;
41 | z-index: 1;
42 | cursor: pointer;
43 | }
44 |
45 | .box label::before {
46 | content: '';
47 | position: absolute;
48 | width: 140px;
49 | height: 140px;
50 | background: rgb(9,9,170);
51 | background: linear-gradient(59deg, rgba(9,9,170,1) 0%, rgba(0,212,255,1) 100%);
52 | left: 40px;
53 | top: 85%;
54 | transform: translate(-50%);
55 | border-radius: 45px;
56 | transition: all 3s ease-in-out;
57 | z-index: -1;
58 | }
59 |
60 | #check:checked ~ label::before {
61 | top: 30px;
62 | transform: translate(-60%, -60%) rotate(360deg);
63 | }
64 |
--------------------------------------------------------------------------------
/Dia24/README.md:
--------------------------------------------------------------------------------
1 | Flor Spinner
2 |
3 |
4 |
5 | Desafio 24/30
6 |
7 | Para dar forma a flor, utilizei 8 spans (com :nth-child), delineando sua forma com border-radius e alguns com transform rotate.
8 | E para animar, usei as propriedades scale e rotate, dispostas em quatro etapas.
9 |
10 | ---
11 | Desenvolvido com ❤ por Polyane Tuag
--------------------------------------------------------------------------------
/Dia24/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Spinner
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/Dia24/style.css:
--------------------------------------------------------------------------------
1 | body {
2 | height: 100vh;
3 | background: white;
4 | margin: 0;
5 | display: flex;
6 | align-items: center;
7 | justify-content: center;
8 | }
9 |
10 | .spinner {
11 | position: relative;
12 | height: 10px;
13 | width: 10px;
14 | background: rgb(255,134,0);
15 | background: radial-gradient(circle, rgba(255,134,0,1) 0%, rgba(253,63,2,1) 47%, rgba(252,9,3,1) 88%);
16 | border-radius: 50%;
17 | box-shadow: 0px 2px 19px 0px rgba(153,153,147,1);
18 |
19 | animation: spin 3s linear infinite;
20 | }
21 |
22 | .spinner span {
23 | position: absolute;
24 | display: block;
25 | height: 10px;
26 | width: 10px;
27 | background: rgb(255,237,0);
28 | background: radial-gradient(circle, rgba(255,237,0,1) 0%, rgba(254,151,1,1) 34%, rgba(252,9,3,1) 100%);
29 | border: .5px solid red;
30 | }
31 |
32 | .spinner span:nth-child(1) {
33 | margin-top: 10px;
34 | margin-left: -10px;
35 | border-radius: 900px 50px;
36 | }
37 | .spinner span:nth-child(2) {
38 | margin-top: -10px;
39 | margin-left: -10px;
40 | border-radius: 50px 900px;
41 | }
42 | .spinner span:nth-child(3) {
43 | margin-top: -10px;
44 | margin-left: 10px;
45 | border-radius: 900px 50px;
46 | }
47 | .spinner span:nth-child(4) {
48 | margin-top: 9.3px;
49 | margin-left: 9px;
50 | border-radius: 50px 900px;
51 | }
52 | .spinner span:nth-child(5) {
53 | margin-top: -14px;
54 | margin-left: -0.3px;
55 | border-radius: 50px 900px;
56 | transform: rotate(45deg);
57 | }
58 | .spinner span:nth-child(6) {
59 | margin-top: 13px;
60 | margin-left: -0.3px;
61 | border-radius: 50px 900px;
62 | transform: rotate(45deg);
63 | }
64 | .spinner span:nth-child(7) {
65 | margin-top: 0px;
66 | margin-left: -14px;
67 | border-radius: 50px 900px;
68 | transform: rotate(137deg);
69 | }
70 | .spinner span:nth-child(8) {
71 | margin-top: 0px;
72 | margin-left: 13px;
73 | border-radius: 50px 900px;
74 | transform: rotate(135deg);
75 | }
76 |
77 | @keyframes spin {
78 | 0% {
79 | transform: scale(.9) rotate(360deg);
80 | }
81 | 50% {
82 | transform: scale(1.2) rotate(80deg);
83 | }
84 | 75% {
85 | transform: scale(1.2);
86 | }
87 | 100% {
88 | transform: scale(.9) rotate(-360deg);
89 | }
90 | }
--------------------------------------------------------------------------------
/Dia25/README.md:
--------------------------------------------------------------------------------
1 | Checkbox Animado - Efeito Neon
2 |
3 |
4 |
5 | Desafio 25/30
6 |
7 | Utilizei input(tipo checkbox) para dar forma ao botão e para as tecnologias, span.
8 | Para personalizar o botão, usei as propriedades before e nth-child para cada div, com sua respectiva tecnologia.
9 |
10 |
11 | ---
12 | Desenvolvido com ❤ por Polyane Tuag
--------------------------------------------------------------------------------
/Dia25/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Checkbox Animado - Efeito Neon
7 |
8 |
9 |
10 |
11 |
61 |
62 |
--------------------------------------------------------------------------------
/Dia25/style.css:
--------------------------------------------------------------------------------
1 | body {
2 | margin: 0;
3 | padding: 0;
4 | height: 100vh;
5 | background:rgb(28, 26, 26);
6 | display: flex;
7 | align-items: center;
8 | justify-content: center;
9 | font-family: 'Lato', sans-serif;
10 | }
11 |
12 | .container {
13 | max-width: 600px;
14 | margin: 0 auto;
15 | display: flex;
16 | flex-wrap: wrap;
17 | }
18 |
19 | .container div {
20 | margin: 10px;
21 | }
22 |
23 | .container div label {
24 | cursor: pointer;
25 | }
26 |
27 | .container div label #checkbox {
28 | display: none;
29 | }
30 |
31 | .container div label span {
32 | position: relative;
33 | display: inline-block;
34 | background:#424242;
35 | padding: 15px 30px;
36 | color: rgb(100, 100, 100);
37 | text-shadow: 0 2px 4px rgba(0,0,0,.5);
38 | border-radius: 30px;
39 | font-size: 22px;
40 | transition: .5s;
41 | user-select: none;
42 | overflow: hidden;
43 | }
44 |
45 | .container div label span::before {
46 | content: '';
47 | position: absolute;
48 | top: 0;
49 | left: 0;
50 | width: 100%;
51 | height: 50%;
52 | background: rgba(255, 255, 255, .1);
53 | }
54 |
55 | .container div:nth-child(1) label #checkbox:checked ~ span{
56 | background: #64DAFA;
57 | color: #fff;
58 | box-shadow: 0 2px 20px #64DAFA;
59 | }
60 |
61 | .container div:nth-child(2) label #checkbox:checked ~ span{
62 | background: #00BB7C;
63 | color: #fff;
64 | box-shadow: 0 2px 20px #00BB7C;
65 | }
66 |
67 | .container div:nth-child(3) label #checkbox:checked ~ span{
68 | background: #F7DD00;
69 | color: #fff;
70 | box-shadow: 0 2px 20px #F7DD00;
71 | }
72 |
73 | .container div:nth-child(4) label #checkbox:checked ~ span{
74 | background: #5D71B6;
75 | color: #fff;
76 | box-shadow: 0 2px 20px #5D71B6;
77 | }
78 |
79 | .container div:nth-child(5) label #checkbox:checked ~ span{
80 | background: #ED2F31;
81 | color: #fff;
82 | box-shadow: 0 2px 20px #ED2F31;
83 | }
84 |
85 | .container div:nth-child(6) label #checkbox:checked ~ span{
86 | background: rgb(255,134,0);
87 | background: linear-gradient(0deg, rgba(255,134,0,1) 44%, rgba(1,114,182,1) 76%);
88 | color: #fff;
89 | box-shadow: 0 2px 20px rgb(255,134,0);
90 | }
91 |
92 | .container div:nth-child(7) label #checkbox:checked ~ span{
93 | background: #693BB0;
94 | color: #fff;
95 | box-shadow: 0 2px 20px #693BB0;
96 | }
97 |
98 | .container div:nth-child(8) label #checkbox:checked ~ span{
99 | background: #F43925;
100 | color: #fff;
101 | box-shadow: 0 2px 20px #F43925;
102 | }
--------------------------------------------------------------------------------
/Dia26/README.md:
--------------------------------------------------------------------------------
1 | Loading Diamante
2 |
3 |
4 |
5 | Desafio 26/30 Para fazer o formato de diamante, utilizei uma div e 4 spans (com nth-child).
6 |
7 | ### Também usei as propriedades:
8 | - transform (skew)
9 | - z-index
10 | - border (style, width e color)
11 |
12 | ---
13 | Desenvolvido com ❤ por Polyane Tuag
--------------------------------------------------------------------------------
/Dia26/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Loading Diamante
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/Dia26/style.css:
--------------------------------------------------------------------------------
1 | body {
2 | margin: 0;
3 | padding: 0;
4 | height: 100vh;
5 | background: black;
6 | overflow: hidden;
7 | }
8 |
9 | .container {
10 | height: 100%;
11 | display: flex;
12 | align-items: center;
13 | justify-content: center;
14 | }
15 |
16 | .diamond {
17 | position: relative;
18 | transform: translate(-50%, -50%);
19 | width: 160px;
20 |
21 | animation: diamond 2s ease-in-out infinite;
22 | transition: .5s;
23 | }
24 |
25 |
26 | .face:nth-child(1) {
27 | position: absolute;
28 | top: 0;
29 | left: 0;
30 | display: block;
31 | width: 50px;
32 | height: 50px;
33 | background-color: #00DBDE;
34 | background-image: linear-gradient(90deg, #FC00FF 0%, #00DBDE 100%);
35 | transform: skew(-30deg);
36 | z-index: 2;
37 | }
38 |
39 | .face:nth-child(1)::before {
40 | content: '';
41 | position: absolute;
42 | top: 100%;
43 | left: 60px;
44 | width: 0;
45 | height: 0;
46 | border-style: solid;
47 | border-width: 108px 0 12px 50px;
48 | border-color: #e906ed transparent transparent transparent;
49 | transform: skew(45deg);
50 | }
51 |
52 | .face:nth-child(2) {
53 | position: absolute;
54 | top: 0;
55 | left: 35px;
56 | display: block;
57 | width: 90px;
58 | height: 50px;
59 | background-color: #00DBDE;
60 | background-image: linear-gradient(90deg, #00DBDE 0%, #FC00FF 50%);
61 | z-index: 1;
62 | }
63 |
64 | .face:nth-child(2)::before {
65 | content: '';
66 | position: absolute;
67 | top: 100%;
68 | left: -10px;
69 | width: 0;
70 | height: 0;
71 | border-top: 108px solid;
72 | border-left: 55px solid transparent;
73 | border-right: 55px solid transparent;
74 | color: #33AFDF;
75 | }
76 |
77 | .face:nth-child(3) {
78 | position: absolute;
79 | top: 0;
80 | right: 0;
81 | display: block;
82 | width: 50px;
83 | height: 50px;
84 | background-color: #00DBDE;
85 | background-image: linear-gradient(90deg, #00DBDE 0%, #FC00FF 100%);
86 | transform: skew(30deg);
87 | z-index: 2;
88 | }
89 |
90 | .face:nth-child(3)::before {
91 | content: '';
92 | position: absolute;
93 | top: 100%;
94 | left: -108px;
95 | width: 0;
96 | height: 0;
97 | border-style: solid;
98 | border-width: 108px 50px 110px 0;
99 | border-color: #e906ed transparent transparent transparent;
100 | transform: skew(-45deg);
101 | }
102 |
103 | .face:nth-child(4) {
104 | position: absolute;
105 | top: -5px;
106 | left: 15px;
107 | display: block;
108 | width: 130px;
109 | height: 10px;
110 | border-radius: 50%;
111 | background-color: #33AFDF;
112 | z-index: 4;
113 | }
114 |
115 | @keyframes diamond {
116 | 0% {transform: translateY(0px);}
117 | 50% {transform: translateY(10px); opacity: .8;}
118 | 100% {transform: translateY(0px);}
119 | }
--------------------------------------------------------------------------------
/Dia27/README.md:
--------------------------------------------------------------------------------
1 | Efeito Fade em Textos
2 |
3 |
4 |
5 | Desafio 27/30
6 |
7 | Para o efeito, utilizei a propriedade before, com backgound (linear-gradiente) do transparente ao branco.
8 |
9 | E como não utilizei JavaScript (o que ficaria melhor), acabei redirecionando para a página da documentação Mozilla.
10 |
11 |
12 |
13 | ---
14 | Desenvolvido com ❤ por Polyane Tuag
--------------------------------------------------------------------------------
/Dia27/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Efeito Fade em Textos
7 |
8 |
9 |
10 |
11 |
CSS - MDN web docs moz://a
12 |
13 | CSS (Cascading Style Sheets ou Folhas de Estilo em Cascata) é uma linguagem de estilo usada para descrever a apresentação de um documento escrito em HTML ou em XML (incluindo várias linguagens em XML como SVG, MathML ou XHTML). O CSS descreve como elementos são mostrados na tela, no papel, na fala ou em outras mídias. CSS é uma das principais linguagens da open web e é padronizada em navegadores web de acordo com as especificação da W3C.
14 |
15 |
16 |
17 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/Dia27/style.css:
--------------------------------------------------------------------------------
1 | * {
2 | margin: 0;
3 | padding: 0;
4 | box-sizing: content-box;
5 | }
6 |
7 | body {
8 | height: 100vh;
9 | display: flex;
10 | align-items: center;
11 | justify-content: center;
12 | }
13 |
14 | .container {
15 | position: relative;
16 | height: 310px;
17 | width: 260px;
18 | padding: 10px 25px;
19 | overflow: hidden;
20 | z-index: -1;
21 | background-image: linear-gradient(to top, #d5d4d0 0%, #d5d4d0 1%, #eeeeec 31%, #efeeec 75%, #e9e9e7 100%);
22 | border-radius: 5px;
23 | }
24 |
25 | .container::before {
26 | content: '';
27 | position: absolute;
28 | left: 0;
29 | top: 0;
30 | width: 100%;
31 | height: 100%;
32 | background: linear-gradient(to bottom,transparent 150px,white);
33 | }
34 |
35 | .container h2 {
36 | margin-bottom: 15px;
37 | text-align: center;
38 | }
39 |
40 | .container p {
41 | font-size: 16px;
42 | font-family: Georgia, 'Times New Roman', Times, serif;
43 | text-align: justify;
44 | }
45 |
46 | .more a {
47 | display: inline-block;
48 | margin-top: 270px;
49 | margin-left: -210px;
50 | padding: 10px 15px;
51 | font-size: 18px;
52 | background-image: linear-gradient(15deg, #13547a 0%, #80d0c7 100%);
53 | color: whitesmoke;
54 | border-radius: 10px;
55 | text-decoration: none;
56 | transition: .6s;
57 | }
58 |
59 | .more a:hover {
60 | transition: .6s;
61 | transform: scale(1.1);
62 | opacity: .8;
63 | }
64 |
--------------------------------------------------------------------------------
/Dia28/README.md:
--------------------------------------------------------------------------------
1 | Transição de Cores no Background
2 |
3 |
4 |
5 | Desafio 28/30
6 |
7 | Para fazer a mudança de cores, utilizei um animation tanto para o background quanto para o texto
8 |
9 |
10 |
11 | ---
12 | Desenvolvido com ❤ por Polyane Tuag
--------------------------------------------------------------------------------
/Dia28/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Transição de Cores no Background
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
#30diasCSS
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/Dia28/style.css:
--------------------------------------------------------------------------------
1 | * {
2 | margin: 0;
3 | padding: 0;
4 | }
5 |
6 | body {
7 | height: 100vh;
8 | display: flex;
9 | align-items: center;
10 | justify-content: center;
11 | }
12 |
13 | .container {
14 | width: 600px;
15 | height: 400px;
16 | background: yellow;
17 | animation: changedColor 10s infinite;
18 | transition: .5s;
19 | border: 5px dashed;
20 | border-radius: 4px;
21 | }
22 |
23 | .container h2 {
24 | text-align: center;
25 | margin-top: 30%;
26 | font-size: 40px;
27 | font-family: 'Montserrat', sans-serif;
28 | color: white;
29 | text-shadow: 2px 2px 3px black;
30 | animation: text 5s linear infinite;
31 | }
32 |
33 | @keyframes changedColor {
34 | 0% { background-color:#08fffc }
35 |
36 | 25% { background-color: #3a84fa }
37 |
38 | 50% { background-color: #cd0bf7 }
39 |
40 | 75% { background-color: #e95454 }
41 |
42 | 100% { background-color: #08fffc }
43 | }
44 |
45 | @keyframes text {
46 | 0% { transform: scale(.7);}
47 | 50% { transform: scale(.9);}
48 | 100% { transform: scale(.7);}
49 | }
--------------------------------------------------------------------------------
/Dia29/README.md:
--------------------------------------------------------------------------------
1 | Efeito Texto Gradiente
2 |
3 |
4 |
5 | Desafio 29/30
6 |
7 | Para dar o efeito de degradê ao texto, utilizei um background linear gradient e as propriedades background-clip e text-fill-color.
8 |
9 |
10 |
11 | ---
12 | Desenvolvido com ❤ por Polyane Tuag
--------------------------------------------------------------------------------
/Dia29/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Efeito Texto Gradiente
7 |
8 |
9 |
10 |
11 |
12 |
No, CSS!
13 |
14 |
15 |
--------------------------------------------------------------------------------
/Dia29/style.css:
--------------------------------------------------------------------------------
1 | * {
2 | margin: 0;
3 | padding: 0;
4 | box-sizing: border-box;
5 | }
6 | .layout {
7 | height: 100vh;
8 | background: linear-gradient(to right, #40e0d0, #ff8c00, #ff0080);
9 | display: flex;
10 | align-items: center;
11 | justify-content: center;
12 |
13 | }
14 |
15 | .container {
16 | width: 90%;
17 | max-width: 400px;
18 | height: 500px;
19 | margin: 0 auto;
20 | padding: 30px;
21 | background: black;
22 | justify-content: center;
23 | border-radius: 5px;
24 | animation: pulse 2s linear infinite;
25 | }
26 |
27 | .container img {
28 | margin-left: -5px;
29 | width: 350px;
30 | height: 350px;
31 | border-radius: 5px;
32 |
33 | }
34 |
35 | .text{
36 | display: block;
37 | font-size: 68px;
38 | font-family: 'Verdana', cursive;
39 | background: linear-gradient(to right, #40e0d0, #ff8c00, #ff0080);
40 | -webkit-background-clip: text;
41 | -webkit-text-fill-color: transparent;
42 | display: flex;
43 | align-items: center;
44 | justify-content: center;
45 | }
46 |
47 | @keyframes pulse {
48 | 30% {
49 | transform: scale(1.2);
50 | opacity: 0.9;
51 | box-shadow: black 3px 9px 5px;
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/Dia3/README.md:
--------------------------------------------------------------------------------
1 | Mudança de cor de texto quando entra em outra div
2 |
3 |
4 |
5 | O Desafio 3/30 possui o efeito de deslocamento e ao passar do meio, mudar sua cor.
6 |
7 | Assim, foi necessário criar duas divs, ambas com 9 elementos iguais, para quando uma passar pelo meio e sumir, a outra comece, dando continuidade.
8 |
9 | Foi utilizado a propriedade animation com transform (translate).
10 |
11 |
12 | ---
13 | Desenvolvido com ❤ por Polyane Tuag
14 |
--------------------------------------------------------------------------------
/Dia3/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Mudança de cor de texto quando entra em outra div
7 |
8 |
9 |
10 |
11 |
12 |
13 | DESAFIO
14 | 30
15 | DIAS
16 | CSS
17 | -
18 | DESAFIO
19 | 30
20 | DIAS
21 | CSS
22 |
23 |
24 |
25 | DESAFIO
26 | 30
27 | DIAS
28 | CSS
29 | -
30 | DESAFIO
31 | 30
32 | DIAS
33 | CSS
34 |
35 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/Dia3/style.css:
--------------------------------------------------------------------------------
1 | body {
2 | margin: 0;
3 | padding: 0;
4 | }
5 |
6 | section {
7 | width: 100%;
8 | height: 100%;
9 | background: #EE82EE;
10 | box-sizing: border-box;
11 | overflow: hidden;
12 | position: absolute;
13 | }
14 |
15 | .wrapper {
16 | height: 100%;
17 | width: 50%;
18 | background: #C71585;
19 | overflow:hidden;
20 | color: #fafaf8;
21 | position: absolute;
22 | top: 0;
23 | left: 0;
24 | border-right: 2px solid #262626;
25 | }
26 |
27 | .slide {
28 | position: absolute;
29 | top: 50%;
30 | white-space:nowrap;
31 | font-size: 14em;
32 | line-height: 220px;
33 | overflow: hidden;
34 | font-family: 'Anton', sans-serif;
35 | animation: animate 25s linear infinite;
36 | }
37 |
38 | @keyframes animate {
39 | 0% {
40 | transform: translate(0, -50%);
41 | }
42 | 100% {
43 | transform: translate(-50%, -50%);
44 | }
45 | }
--------------------------------------------------------------------------------
/Dia30/README.md:
--------------------------------------------------------------------------------
1 | Efeito Partículas
2 |
3 |
4 |
5 | Desafio 30/30
6 |
7 | Neste exercício, utilizei a propriedade canvas e um h1 e todo o efeito foi realizado através do JavaScript.
8 |
9 |
10 |
11 | ---
12 | Desenvolvido com ❤ por Polyane Tuag
--------------------------------------------------------------------------------
/Dia30/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Efeito Partículas
7 |
8 |
9 |
10 |
11 | #30DiasCss Finalizado!!!
12 |
13 |
14 |
157 |
158 |
159 |
160 |
--------------------------------------------------------------------------------
/Dia30/style.css:
--------------------------------------------------------------------------------
1 | .layout {
2 | margin: 0;
3 | padding: 0;
4 | height: 100vh;
5 | width: 100%;
6 | cursor: pointer;
7 | }
8 |
9 | #canvas {
10 | border: 1px solid;
11 | }
12 |
13 | .title {
14 | display: inline-block;
15 | position: absolute;
16 | padding: 20px;
17 | top: 50%;
18 | left: 50%;
19 | user-select: none;
20 | transform: translate(-50%,-50%);
21 | color: rgba(255,255,255,.68);
22 | /* border: .075em solid rgba(255,255,255,.1); */
23 | }
24 |
--------------------------------------------------------------------------------
/Dia4/README.md:
--------------------------------------------------------------------------------
1 | Botão com efeito
2 |
3 |
4 |
5 | Desafio 4/30
6 | Para aplicar esse efeito, utiliza-se a propriedade hover, juntamente com um after e before (para criar a animação)
7 |
8 |
9 | ---
10 | Desenvolvido com ❤ por Polyane Tuag
--------------------------------------------------------------------------------
/Dia4/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Botão com efeito
7 |
8 |
9 |
10 |
11 |
12 |
13 | DESAFIO 30 DIAS CSS
14 |
15 |
16 |
--------------------------------------------------------------------------------
/Dia4/style.css:
--------------------------------------------------------------------------------
1 | * {
2 | margin: 0;
3 | padding: 0;
4 | font-family: 'Balsamiq Sans', cursive;
5 | }
6 |
7 | .conteiner {
8 | display: flex;
9 | height: 100vh;
10 | background:#87CEFF;
11 | align-items: center;
12 | justify-content: center;
13 | }
14 |
15 | .botao {
16 | background: none;
17 | color: #0000CD;
18 | height: 100px;
19 | font-size: 18px;
20 | border:4px solid ;
21 | padding: 20px;
22 | cursor: pointer;
23 | border-radius: 5px;
24 | position: relative;
25 | text-decoration: underline rgb(251, 247, 247);
26 | text-underline-position: under;
27 | }
28 |
29 |
30 | .botao::before , .botao::after {
31 | content: "";
32 | position: absolute;
33 | width: 30px;
34 | height: 4px;
35 | background:#87CEFF;
36 | transform: skew(-70deg);
37 | transition: 1s ease-in-out;
38 | }
39 |
40 | .botao::before {
41 | top: -4px;
42 | left: 10%;
43 | }
44 |
45 | .botao::after {
46 | bottom: -4px;
47 | right: 10%;
48 | }
49 |
50 | .botao:hover::before {
51 | left: 80%;
52 | }
53 |
54 | .botao:hover::after {
55 | right: 80%;
56 | }
57 |
--------------------------------------------------------------------------------
/Dia5/README.md:
--------------------------------------------------------------------------------
1 | Efeito Pulsar
2 |
3 |
4 |
5 | Desafio 5/30
6 | Para criar o efeito de "pulsar", foi utilizado animation e @keyframes, com a propriedade transform(scale) - para aumentar o pulso.
7 |
8 |
9 |
10 | ---
11 | Desenvolvido com ❤ por Polyane Tuag
--------------------------------------------------------------------------------
/Dia5/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Efeito Pulsar
7 |
8 |
9 |
10 |
11 |
14 |
15 |
--------------------------------------------------------------------------------
/Dia5/style.css:
--------------------------------------------------------------------------------
1 | * {
2 | margin: 0;
3 | padding: 0;
4 | }
5 |
6 | body {
7 | background: #1C1C1C;
8 | }
9 |
10 | .alignment {
11 | display: flex;
12 | align-items: center;
13 | justify-content: center;
14 |
15 | }
16 |
17 | .container {
18 | height: 100vh;
19 |
20 |
21 | }
22 |
23 | .pulse {
24 | width:80px;
25 | height: 80px;
26 | background: radial-gradient(#FF00FF,#EE00EE,#CD00CD, #8B008B);
27 | font-family: 'Amatic SC', cursive;
28 | font-size: 30px;
29 | border-radius: 50%;
30 | color: #363636;
31 | animation: pulsar 1.3s infinite;
32 | }
33 |
34 |
35 |
36 | @keyframes pulsar {
37 | 30% {
38 | transform: scale(1.2);
39 | opacity: 0.7;
40 | box-shadow: white 0em 0em 0.6em;
41 | }
42 | }
--------------------------------------------------------------------------------
/Dia6/README.md:
--------------------------------------------------------------------------------
1 | Efeito Lightning Text
2 |
3 |
4 |
5 | Para o Desafio 6/30 , foi necessário criar um span para cada elemento e aplicar um animation delay com timers diferentes.
6 |
7 |
8 |
9 |
10 | ---
11 | Desenvolvido com ❤ por Polyane Tuag
--------------------------------------------------------------------------------
/Dia6/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Efeito Lightning Text
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 | #
16 | 3
17 | 0
18 | D
19 | I
20 | A
21 | S
22 | C
23 | S
24 | S
25 |
26 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/Dia6/style.css:
--------------------------------------------------------------------------------
1 | * {
2 | margin: 0;
3 | padding: 0;
4 | }
5 |
6 | body {
7 | background: black;
8 | }
9 |
10 | .alignment {
11 | display: flex;
12 | align-items: center;
13 | justify-content: center;
14 |
15 | }
16 | .container {
17 | height: 100vh;
18 | }
19 |
20 | .span-container {
21 | width: 200px;
22 | height: 200px;
23 | font-family: 'Acme', sans-serif;
24 | font-size: 50px;
25 | }
26 | .elements span {
27 | letter-spacing: 3px;
28 | color: var(--color-green-dark);
29 | --color-green-dark: #023f02;
30 | --color-green-light:#3FFF00;
31 | animation: light 2s steps(5, jump-start) infinite;
32 | }
33 |
34 | #one {
35 | animation-delay: 0s;
36 | }
37 | #two {
38 | animation-delay: .2s;
39 | }
40 | #three {
41 | animation-delay: .4s;
42 | }
43 | #four {
44 | animation-delay: .6s;
45 | }
46 | #five {
47 | animation-delay: .8s;
48 | }
49 | #six {
50 | animation-delay: 1s;
51 | }
52 | #seven {
53 | animation-delay: 1.2s;
54 | }
55 | #eight {
56 | animation-delay: 1.4s;
57 | }
58 | #nine {
59 | animation-delay: 1.6s;
60 | }
61 | #ten {
62 | animation-delay: 1.8s;
63 | }
64 |
65 | @keyframes light {
66 | 0% {
67 | color:var(--color-green-dark);
68 | text-shadow: none;
69 | }
70 | 90% {
71 | color:var(--color-green-dark);
72 | text-shadow: none;
73 | }
74 | 100% {
75 | color: var(--color-green-light);
76 | text-shadow: 0 0 5px yellowgreen;
77 | }
78 | }
--------------------------------------------------------------------------------
/Dia7/README.md:
--------------------------------------------------------------------------------
1 |
2 | Preloader Animado
3 |
4 |
5 |
6 | O Desafio 7/30 consistiu na criação de um preloader com esse efeito "blocado".
7 |
8 | Desse modo, o dividi em 12 etapas com timers diferentes (Um movimento e duas paradas), utilizando as propriedades de animation CSS.
9 |
10 | O código ficou extenso (possível refatoração), porém bem explicativo e atendeu à resolução do exercício.
11 |
12 |
13 |
14 | ---
15 | Desenvolvido com ❤ por Polyane Tuag
--------------------------------------------------------------------------------
/Dia7/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Preloader Animado
7 |
8 |
9 |
10 |
17 |
18 |
--------------------------------------------------------------------------------
/Dia7/style.css:
--------------------------------------------------------------------------------
1 | body {
2 | margin: 0;
3 | padding: 0;
4 | }
5 |
6 | .alignment {
7 | display: flex;
8 | align-items: center;
9 | justify-content: center;
10 | }
11 |
12 | .container {
13 | height: 100vh;
14 | background: linear-gradient(red,orangered,orange, gold);
15 | }
16 |
17 | .square {
18 | width: 120px;
19 | height: 120px;
20 | position: relative;
21 |
22 | }
23 |
24 | .box {
25 | height: 25px;
26 | width: 25px;
27 | background: white;
28 | border-radius: 3px;
29 | position: absolute;
30 | margin: 5px;
31 |
32 | animation: 3s ease-in-out infinite;
33 | }
34 |
35 | #square-one {
36 | top: 20px;
37 | right: 60px;
38 |
39 | animation-name: block-1;
40 | }
41 | #square-two {
42 | top: 50px;
43 | right: 60px;
44 |
45 | animation-name: block-2;
46 | animation-delay: .2s;
47 | }
48 | #square-three {
49 | top: 50px;
50 | right: 30px;
51 |
52 | animation-name: block-3;
53 | animation-delay: .3s;
54 |
55 | }
56 |
57 | @keyframes block-1 {
58 | 0% {
59 | top: 20px;
60 | right: 60px;
61 | }
62 | 8% {
63 | top: 20px ;
64 | right: 30px;
65 | }
66 | 16% {
67 | top: 20px ;
68 | right: 30px;
69 | }
70 | 24% {
71 | top: 20px ;
72 | right: 30px;
73 | }
74 | 32% {
75 | top: 50px ;
76 | right: 30px;
77 | }
78 | 40% {
79 | top: 50px ;
80 | right: 30px;
81 | }
82 | 48% {
83 | top: 50px ;
84 | right: 30px;
85 | }
86 | 56% {
87 | top: 50px ;
88 | right: 60px;
89 | }
90 | 64% {
91 | top: 50px;
92 | right: 60px ;
93 | }
94 | 72% {
95 | top: 50px;
96 | right: 60px ;
97 | }
98 | 80% {
99 | top: 20px;
100 | right: 60px;
101 | }
102 | 88% {
103 | top: 20px;
104 | right: 60px;
105 | }
106 | 96% {
107 | top: 20px;
108 | right: 60px;
109 | }
110 | }
111 |
112 |
113 | @keyframes block-2 {
114 | 0% {
115 | top:50px;
116 | right: 60px;
117 | }
118 | 8% {
119 | top: 20px;
120 | right: 60px;
121 | }
122 | 16% {
123 | top: 20px;
124 | right: 60px;
125 | }
126 | 24% {
127 | top: 20px;
128 | right: 60px;
129 | }
130 | 32% {
131 | top: 20px;
132 | right: 30px;
133 | }
134 | 40% {
135 | top: 20px;
136 | right: 30px;
137 | }
138 | 48% {
139 | top: 20px;
140 | right: 30px;
141 | }
142 | 56% {
143 | top: 50px ;
144 | right: 30px;
145 | }
146 | 64% {
147 | top: 50px ;
148 | right: 30px;
149 | }
150 | 72% {
151 | top: 50px;
152 | right: 30px;
153 | }
154 | 80% {
155 | top:50px;
156 | right: 60px;
157 | }
158 | 88% {
159 | top:50px;
160 | right: 60px;
161 | }
162 | 96% {
163 | top: 50px;
164 | right: 60px;
165 | }
166 | }
167 |
168 |
169 | @keyframes block-3 {
170 | 0% {
171 | top: 50px;
172 | right: 30px;
173 | }
174 | 8% {
175 | top: 50px;
176 | right: 60px;
177 | }
178 | 16% {
179 | top: 50px;
180 | right: 60px;
181 | }
182 | 24% {
183 | top: 50px;
184 | right: 60px;
185 | }
186 | 32% {
187 | top: 20px;
188 | right: 60px;
189 | }
190 | 40% {
191 | top: 20px;
192 | right: 60px;
193 | }
194 | 48% {
195 | top: 20px;
196 | right: 60px;
197 | }
198 | 56% {
199 | top: 20px;
200 | right: 30px;
201 | }
202 | 64% {
203 | top: 20px;
204 | right: 30px;
205 | }
206 | 72% {
207 | top: 20px;
208 | right: 30px;
209 | }
210 | 80% {
211 | top: 50px;
212 | right: 30px;
213 | }
214 | 88% {
215 | top: 50px;
216 | right: 30px;
217 | }
218 | 96% {
219 | top: 50px;
220 | right: 30px;
221 | }
222 | }
--------------------------------------------------------------------------------
/Dia8/README.md:
--------------------------------------------------------------------------------
1 |
2 | Coração Batendo
3 |
4 |
5 |
6 | Desafio 8/30
7 | Para criar o coração, utilizei as propriedades animation e after/before, com rotação à 45deg.
8 |
9 | Nesse caso, o keyframes(para a simulação das batidas), foi aplicado tanto para o coração quanto para o background.
10 |
11 |
12 |
13 | ---
14 | Desenvolvido com ❤ por Polyane Tuag
--------------------------------------------------------------------------------
/Dia8/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Coração batendo
7 |
8 |
9 |
10 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/Dia8/style.css:
--------------------------------------------------------------------------------
1 | body {
2 | margin: 0;
3 | padding: 0;
4 | }
5 |
6 | .alignment {
7 | display: flex;
8 | align-items: center;
9 | justify-content: center;
10 | }
11 |
12 | .container {
13 | height: 100vh;
14 | animation: wallpaper 1.2s linear infinite;
15 | }
16 |
17 | .heart {
18 | position: absolute;
19 | width: 80px;
20 | height: 80px;
21 | background:linear-gradient(#FF0000,#EE0000, #CD0000);
22 | transform: rotate(-45deg);
23 | animation: beat 1.5s linear infinite;
24 |
25 | }
26 |
27 | .heart::after {
28 | content: "";
29 | position: absolute;
30 | background: inherit;
31 | border-radius: 50%;
32 | width: 80px;
33 | height: 80px;
34 | top:0px;
35 | left: 40px;
36 | }
37 |
38 | .heart::before {
39 | content: "";
40 | position: absolute;
41 | background:linear-gradient(#EE0000,#FF0000, #CD0000);
42 | transform: rotate(184deg);
43 | border-radius: 50%;
44 | width: 80px;
45 | height: 80px;
46 | top:-40px;
47 | left: 0px;
48 | }
49 |
50 | @keyframes wallpaper {
51 | 0% {
52 | background: black;
53 | }
54 | 50% {
55 | background: rgb(14, 13, 13);
56 | }
57 | 100% {
58 | background: black;
59 | }
60 | }
61 |
62 | @keyframes beat{
63 | 0% {
64 | transform: scale(1) rotate(-45deg);
65 | }
66 | 35% {
67 | transform: scale(1.5) rotate(-45deg);
68 | }
69 | 70% {
70 | transform: scale(1) rotate(-45deg);
71 | }
72 | 85% {
73 | transform: scale(1.5) rotate(-45deg);
74 | }
75 | 100% {
76 | transform: scale(1) rotate(-45deg);
77 | }
78 | }
--------------------------------------------------------------------------------
/Dia9/README.md:
--------------------------------------------------------------------------------
1 | Pêndulo de Newton
2 |
3 |
4 |
5 | Desafio 9/30
6 |
7 | Para fazer as bolas, criei cinco divs com a mesma classe e utilizei :before(pseudo-element) para posicioná-las.
8 |
9 | As animações foram divididas em quatro tempos, em diferentes posições.
10 |
11 | Uma propriedade interessante é o transform-origin, que foi usado para "grudar" as linhas no suporte, movimentando somente a parte de baixo.
12 |
13 |
14 | ---
15 | Desenvolvido com ❤ por Polyane Tuag
--------------------------------------------------------------------------------
/Dia9/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Pêndulo de Newton
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/Dia9/style.css:
--------------------------------------------------------------------------------
1 | body {
2 | margin: 0;
3 | padding: 0;
4 | height: 100vh;
5 | background: black;
6 | }
7 | .alignment {
8 | display: flex;
9 | align-items: center;
10 | justify-content: center;
11 | }
12 |
13 | .container {
14 | width: 400px;
15 | height: 420px;
16 | background: black;
17 | }
18 |
19 | .board {
20 | width: 400px;
21 | height: 8px;
22 | background: #4F4F4F;
23 | border-radius: 2px;
24 | }
25 |
26 | .balls {
27 | display: flex;
28 | justify-content: space-evenly;
29 | }
30 |
31 | .ball {
32 | display: inline-block;
33 | height: 260px;
34 | width: 3px;
35 | border-radius: 2px;
36 | background: #4F4F4F;
37 | position: relative;
38 | transform-origin: top;
39 |
40 | }
41 |
42 | .ball::before {
43 | content: "";
44 | position: absolute;
45 | width: 68px;
46 | height: 68px;
47 | background: radial-gradient(#E8E8E8, #CFCFCF,#B5B5B5, #9C9C9C, #828282, #696969, #4F4F4F, #363636, #1C1C1C );
48 | border-radius: 100%;
49 | top: 100%;
50 | left: -32px;
51 | }
52 |
53 | .ball:first-child {
54 | animation: left-ball 1s linear infinite;
55 | transform-origin: top;
56 | }
57 |
58 | .ball:last-child {
59 | animation: right-ball 1s linear infinite;
60 | transform-origin: top;
61 | animation-delay: .5s;
62 | }
63 |
64 | @keyframes left-ball {
65 | 0% , 50% , 100% {
66 | transform: rotate(0deg);
67 | }
68 | 25% {
69 | transform: rotate(50deg)
70 | }
71 | }
72 |
73 | @keyframes right-ball {
74 | 0% , 50% , 100% {
75 | transform: rotate(0deg);
76 | }
77 | 25% {
78 | transform: rotate(-50deg)
79 | }
80 | }
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 | /*
89 |
90 | .balls {
91 | display: flex;
92 | width: 200px;
93 | margin: 300px 10px 10px 180px;
94 | }
95 |
96 | .ball {
97 | width: 34px;
98 | height: 33px;
99 | background: blue;
100 | border-radius: 50%;
101 | }
102 |
103 | .ball:nth-child(1) {
104 | animation: left 2s ease-in-out infinite;
105 | transform: translateX(-50%);
106 | }
107 |
108 | .ball:nth-child(5) {
109 | animation: right 2s ease-in-out infinite;
110 | transform-origin: top;
111 | }
112 |
113 | @keyframes left {
114 | 0% , 50% , 100% {
115 | transform: rotate(0deg);
116 | }
117 | 25% {
118 | transform: rotate(30deg)
119 | }
120 | }
121 |
122 | @keyframes right {
123 | 0% , 50% , 100% {
124 | transform: rotate(0deg);
125 | }
126 | 25% {
127 | transform: rotate(-30deg)
128 | }
129 | } */
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 | ▪ 30 dias de CSS🖌▪
4 |
5 | ### 📚Sobre
6 |
7 | O desafio ***30 dias de CSS*** visa ajudá-lo a melhorar suas habilidades de codificação em *HTML5* e *CSS3* com a a prática de programação na criação de mini projetos diários.
8 |
9 |
10 | ---
11 | ### 🎯Objetivo
12 |
13 | Criar pequenos projetos com *HTML* E *CSS* durante 30 dias.
14 |
15 | ---
16 |
17 | ### 💣Desafios diários
18 |
19 | - Desafio 1 - Ícone de mídia social em camadas
20 |
21 |
22 |
23 |
24 | - Desafio 2 - Loader Animado
25 |
26 |
27 |
28 |
29 | - Desafio 3 - Mudança de cor de texto quando entra em outra div
30 |
31 |
32 |
33 |
34 | - Desafio 4 - Botão com efeito
35 |
36 |
37 |
38 |
39 | - Desafio 5 - Efeito pulsar
40 |
41 |
42 |
43 |
44 | - Desafio 6 - Efeito Lightning Text
45 |
46 |
47 |
48 |
49 | - Desafio 7 - Preloader Animado
50 |
51 |
52 |
53 |
54 | - Desafio 8 - Coração Batendo
55 |
56 |
57 |
58 |
59 | - Desafio 9 - Pêndulo de Newton
60 |
61 |
62 |
63 |
64 | - Desafio 10 - Animação Texto Alternando
65 |
66 |
67 |
68 |
69 | - Desafio 11 - Botão com Efeito Hover
70 |
71 |
72 |
73 |
74 | - Desafio 12 - Efeito de Preenchimento ao passar o mouse
75 |
76 |
77 |
78 |
79 | - Desafio 13 - Loading com Efeito Ondas
80 |
81 |
82 |
83 |
84 | - Desafio 14 - Fundo de texto animado
85 |
86 |
87 |
88 |
89 | - Desafio 15 - Efeito Flutuante
90 |
91 |
92 |
93 |
94 | - Desafio 16 - Botão com Efeito Checked
95 |
96 |
97 |
98 |
99 | - Desafio 17 - Loader Animado (Efeito Flip)
100 |
101 |
102 |
103 |
104 | - Desafio 19 - Background Animado - Caixas Flutuantes
105 |
106 |
107 |
108 |
109 | - Desafio 20 - Botão com Efeito para Ajuda/Informação
110 |
111 |
112 |
113 |
114 | - Desafio 21 - Efeito Loading
115 |
116 |
117 |
118 |
119 | - Desafio 22 - Menu Hamburguer
120 |
121 |
122 |
123 |
124 | - Desafio 23 - Botão Efeito Liquid Fill
125 |
126 |
127 |
128 |
129 | - Desafio 24 - Flor Spinner
130 |
131 |
132 |
133 |
134 | - Desafio 25 - Checkbox Animado - Efeito Neon
135 |
136 |
137 |
138 |
139 | - Desafio 26 - Loading Diamante
140 |
141 |
142 |
143 |
144 | - Desafio 27 - Efeito Fade em Textos
145 |
146 |
147 |
148 |
149 | - Desafio 28 - Transição de Cores no Background
150 |
151 |
152 |
153 |
154 | - Desafio 29 - Efeito Texto Gradiente
155 |
156 |
157 |
158 |
159 | - Desafio 30 - Efeito Partículas
160 |
161 |
162 |
163 | ---
164 |
165 | Desenvolvido com ❤ por Polyane Tuag
166 |
--------------------------------------------------------------------------------