├── ampm
├── index.html
├── index.js
└── styles.css
├── avocado
├── index.html
└── styles.css
├── blink
├── index.html
└── styles.css
├── book
├── index.html
└── styles.css
├── bounce
├── index.html
└── styles.css
├── burger
├── index.html
└── styles.css
├── card
├── Black.jpg
├── index.html
└── styles.css
├── carousel
├── firstImage.jpg
├── index.html
├── index.js
├── secondImage.jpg
├── styles.css
└── thirdImage.jpg
├── cat
├── index.html
├── index.js
├── rsz_cursor.png
└── styles.css
├── clock
├── index.html
├── index.js
└── styles.css
├── coffee
├── index.html
└── styles.css
├── coolLoader
├── index.html
└── styles.css
├── counter
├── index.html
├── index.js
└── styles.css
├── cuteSwitch
├── index.html
├── index.js
└── styles.css
├── fancybutton
├── index.html
└── styles.css
├── fancylogin
├── index.html
├── index.js
└── styles.css
├── fingers
├── index.html
└── styles.css
├── followingEyes
├── index.html
├── index.js
└── styles.css
├── hamburger
├── index.html
└── styles.css
├── heartbeat
├── index.html
└── styles.css
├── hero
├── egypt.jpg
├── index.html
└── styles.css
├── lightSwitch
├── index.html
├── index.js
└── styles.css
├── loadbars
├── index.html
└── styles.css
├── loading
├── index.html
└── styles.css
├── loadingsquare
├── index.html
└── styles.css
├── login
├── index.html
└── styles.css
├── memory
├── bootstrap.png
├── cardBack.png
├── github.png
├── index.html
├── index.js
├── javascript.png
├── jquery.png
├── nodejs.png
├── react.png
├── sass.png
├── styles.css
└── vscode.png
├── monday
├── index.html
└── styles.css
├── navbar
├── index.html
└── styles.css
├── navigation
├── index.html
├── index.js
└── styles.css
├── push
├── index.html
└── styles.css
├── rating
├── index.html
├── index.js
└── styles.css
├── share
├── index.html
├── index.js
└── styles.css
├── spinner
├── index.html
└── styles.css
├── square
├── index.html
└── styles.css
├── stopwatch
├── index.html
├── main.js
├── stopwatch.js
└── styles.css
├── switch
├── index.html
└── styles.css
└── todo
├── background.jpg
├── index.html
├── index.js
└── styles.css
/ampm/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Light Switch
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
AM
14 |
15 |
PM
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/ampm/index.js:
--------------------------------------------------------------------------------
1 | const switchBtn = document.querySelector(".switchBtn");
2 | const container = document.querySelector(".container");
3 | const am = document.querySelector(".am");
4 | const pm = document.querySelector(".pm");
5 |
6 | switchBtn.addEventListener("click", () => container.classList.toggle("on"));
7 |
8 | am.addEventListener("click", () => {
9 | if(switchBtn.checked) {
10 | switchBtn.checked = false;
11 | container.classList.toggle("on");
12 | } else {
13 | return;
14 | }
15 | })
16 |
17 | pm.addEventListener("click", () => {
18 | if(switchBtn.checked) {
19 | return;
20 | } else {
21 | switchBtn.checked = true;
22 | container.classList.toggle("on");
23 | }
24 | })
--------------------------------------------------------------------------------
/ampm/styles.css:
--------------------------------------------------------------------------------
1 | * {
2 | margin: 0;
3 | padding: 0;
4 | box-sizing: border-box;
5 | }
6 |
7 | body {
8 | background-color: #1d304e;
9 | display: flex;
10 | height: 100vh;
11 | display: flex;
12 | justify-content: center;
13 | align-items: center;
14 | }
15 |
16 | .container {
17 | position: relative;
18 | top: 50px;
19 | display: flex;
20 | width: 400px;
21 | height: 500px;
22 | justify-content: space-between;
23 | align-items: center;
24 | }
25 |
26 | .am, .pm {
27 | font-size: 50px;
28 | font-family: 'Work Sans', sans-serif;
29 | cursor: pointer;
30 | }
31 |
32 | .am {
33 | color: #eef0f2;
34 | }
35 |
36 | .pm {
37 | color: #6f98ce;
38 | }
39 |
40 | .container.on .am {
41 | color: #6f98ce;
42 | }
43 |
44 | .container.on .pm {
45 | color: #eef0f2;
46 | }
47 |
48 | input {
49 | position: relative;
50 | width: 200px;
51 | height: 100px;
52 | background-color: #83d8fe;
53 | border-radius: 60px;
54 | box-shadow: inset 0 0 10px rgba(0, 0, 0, 0.2);
55 | -webkit-appearance: none;
56 | outline: none;
57 | cursor: pointer;
58 | transition: all 0.4s ease-in-out;
59 | }
60 |
61 | input:checked {
62 | background-color: #739cd4;
63 | }
64 |
65 | input::before {
66 | content: "";
67 | position: absolute;
68 | width: 100px;
69 | height: 100px;
70 | border-radius: 50%;
71 | top: 0;
72 | left: 0;
73 | background-color: #ffce96;
74 | transform: scale(0.9);
75 | box-shadow: 4px 4px 10px rgba(0, 0, 0, 0.5);
76 | z-index: 1;
77 | transition: all 0.4s ease-in-out;
78 | animation: day 0.4s ease;
79 | }
80 |
81 | .container.on input::before {
82 | animation: night 0.4s ease;
83 | }
84 |
85 | input:checked::before {
86 | left: 100px;
87 | background-color: #fee3b4;
88 | box-shadow: -4px 4px 10px rgba(0, 0, 0, 0.5);
89 | }
90 |
91 | .clouds {
92 | position: absolute;
93 | width: 90px;
94 | height: 8px;
95 | background-color: #e1f7ff;
96 | border-radius: 50%;
97 | transition: all 0.4s ease;
98 | cursor: pointer;
99 | }
100 |
101 | #firstCloud {
102 | top: 43%;
103 | left: 40%;
104 | }
105 |
106 | #secondCloud {
107 | top: 48%;
108 | left: 35%;
109 | z-index: 2;
110 | transition: all 0.4s ease;
111 | }
112 |
113 | #thirdCloud {
114 | top: 53%;
115 | left: 45%;
116 | transition: all 0.25s ease;
117 | }
118 |
119 | #firstCloud::after, #secondCloud::after, #thirdCloud::after {
120 | content: "";
121 | width: 5px;
122 | height: 5px;
123 | border-radius: 50%;
124 | background-color: #dce7f6;
125 | position: absolute;
126 | top: 20px;
127 | left: 40px;
128 | transition: all 0.3s ease;
129 | opacity: 0;
130 | }
131 |
132 | #secondCloud::after {
133 | width: 8px;
134 | height: 8px;
135 | top: 5px;
136 | left: 35px;
137 | }
138 |
139 | #thirdCloud::after {
140 | width: 6px;
141 | height: 6px;
142 | left: -40px;
143 | top: 10px;
144 | }
145 |
146 | .container.on .clouds {
147 | width: 7px;
148 | height: 7px;
149 | background-color: #dce7f6;
150 | }
151 |
152 | .container.on #secondCloud {
153 | width: 10px;
154 | height: 10px;
155 | left: 125px;
156 | }
157 |
158 | .container.on #thirdCloud {
159 | width: 8px;
160 | height: 8px;
161 | }
162 |
163 | .container.on #firstCloud::after, .container.on #secondCloud::after, .container.on #thirdCloud::after {
164 | opacity: 1;
165 | }
166 |
167 | .crater {
168 | width: 20px;
169 | height: 20px;
170 | border-radius: 50%;
171 | background-color: #e9cda5;
172 | position: absolute;
173 | right: 125px;
174 | top: 225px;
175 | z-index: 3;
176 | cursor: pointer;
177 | opacity: 0;
178 | }
179 |
180 | .crater::after, .crater::before {
181 | content: "";
182 | position: absolute;
183 | background-color: #e9cda5;
184 | border-radius: 50%;
185 | width: 10px;
186 | height: 10px;
187 | top: 15px;
188 | right: 40px;
189 | }
190 |
191 | .crater::before {
192 | width: 15px;
193 | height: 15px;
194 | top: 35px;
195 | right: 15px;
196 | }
197 |
198 | .container.on .crater {
199 | opacity: 1;
200 | animation: moon 0.5s ease;
201 | }
202 |
203 | @keyframes night {
204 | 0% {
205 | left: 0px;
206 | }
207 | 45% {
208 | left: -5px;
209 | }
210 | 80% {
211 | left: 105px;
212 | }
213 | 100% {
214 | left: 100px;
215 | }
216 | }
217 |
218 | @keyframes day {
219 | 0% {
220 | left: 100px;
221 | }
222 | 45% {
223 | left: 105px;
224 | }
225 | 80% {
226 | left: -5px;
227 | }
228 | 100% {
229 | left: 0px;
230 | }
231 | }
232 |
233 | @keyframes moon {
234 | 0% {
235 | opacity: 0;
236 | }
237 | 40% {
238 | opacity: 0;
239 | }
240 | 100% {
241 | opacity: 1;
242 | }
243 | }
--------------------------------------------------------------------------------
/avocado/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Tea Time
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/avocado/styles.css:
--------------------------------------------------------------------------------
1 | * {
2 | margin: 0;
3 | padding: 0;
4 | box-sizing: border-box;
5 | }
6 |
7 | body {
8 | height: 100vh;
9 | background-color: #dae8aa;
10 | display: flex;
11 | }
12 |
13 | .container {
14 | margin: auto;
15 | display: flex;
16 | height: 400px;
17 | width: 400px;
18 | }
19 |
20 | .avocado {
21 | margin: auto;
22 | display: flex;
23 | flex-direction: column;
24 | justify-content: center;
25 | align-items: center;
26 | width: 80%;
27 | height: 90%;
28 | transform-origin: bottom;
29 | animation: anim 1.7s ease infinite;
30 | }
31 |
32 | .avoHead {
33 | width: 150px;
34 | height: 150px;
35 | background-color: #8fb545;
36 | border-radius: 50%;
37 | position: relative;
38 | top: 90px;
39 | border: 5px solid #4d4d4b;
40 | }
41 |
42 | .avoHead::after {
43 | content: "";
44 | width: 130px;
45 | height: 130px;
46 | background-color: #e1e285;
47 | position: absolute;
48 | border-radius: 50%;
49 | top: 50%;
50 | left: 50%;
51 | transform: translate(-50%, -50%);
52 | }
53 |
54 | .avoBody {
55 | width: 200px;
56 | height: 200px;
57 | background-color: #8fb545;
58 | border-radius: 50%;
59 | border: 5px solid #4d4d4b;
60 | }
61 |
62 | .avoBody::after {
63 | content: "";
64 | width: 180px;
65 | height: 180px;
66 | background-color: #e1e285;
67 | position: absolute;
68 | border-radius: 50%;
69 | top: 50%;
70 | left: 50%;
71 | transform: translate(-50%, -8%);
72 | }
73 |
74 | .rightEye, .leftEye {
75 | width: 20px;
76 | height: 20px;
77 | border-radius: 50%;
78 | background-color: #e1e285;
79 | border: 5px solid #4d4d4b;
80 | border-left: none;
81 | border-bottom: none;
82 | position: absolute;
83 | top: 35%;
84 | left: 25%;
85 | transform: rotate(-45deg);
86 | z-index: 1;
87 | }
88 |
89 | .leftEye {
90 | top: 35%;
91 | left: 60%;
92 | }
93 |
94 | .mouth {
95 | width: 40px;
96 | height: 20px;
97 | border: 3px solid #4d4d4b;
98 | border-radius: 0 0 50px 50px;
99 | background-color: #fff;
100 | z-index: 1;
101 | position: relative;
102 | top: 53%;
103 | left: 50%;
104 | transform: translate(-50%, 0%);
105 | }
106 |
107 | .leftSpeckles, .rightSpeckles, .leftSpeckles::after, .leftSpeckles::before, .rightSpeckles::after, .rightSpeckles::before {
108 | z-index: 1;
109 | width: 5px;
110 | height: 5px;
111 | background-color: #8fb545;
112 | border-radius: 50%;
113 | position: absolute;
114 | top: 50%;
115 | left: 15%;
116 | }
117 |
118 | .leftSpeckles::after {
119 | content: "";
120 | top: 5px;
121 | left: 7px;
122 | }
123 |
124 | .leftSpeckles::before {
125 | content: "";
126 | top: -3px;
127 | left: 7px;
128 | }
129 |
130 | .rightSpeckles {
131 | left: 82%;
132 | }
133 |
134 | .rightSpeckles::after {
135 | content: "";
136 | top: 5px;
137 | left: -7px;
138 | }
139 |
140 | .rightSpeckles::before {
141 | content: "";
142 | top: -3px;
143 | left: -7px;
144 | }
145 |
146 | .seed, .seedBorder {
147 | width: 90px;
148 | height: 90px;
149 | background-color: #b85625;
150 | position: relative;
151 | z-index: 1;
152 | border-radius: 50%;
153 | border: 5px solid #4d4d4b;
154 | top: 53%;
155 | left: 50%;
156 | transform: translate(-50%, -50%);
157 | }
158 |
159 | .seedBorder {
160 | width: 70px;
161 | height: 70px;
162 | border: 5px solid #b85625;
163 | border-right: 5px solid #d99d81;
164 | top: 5%;
165 | animation: light 1.7s ease infinite;
166 | }
167 |
168 | .shadow {
169 | width: 100px;
170 | height: 10px;
171 | background-color: #bbc892;
172 | position: relative;
173 | border-radius: 50%;
174 | bottom: 127px;
175 | right: 38%;
176 | top: 94%;
177 | z-index: -2;
178 | animation: shad 1.7s ease infinite;
179 | }
180 |
181 | @keyframes anim {
182 | 0% {
183 | transform: rotate(10deg);
184 | }
185 | 50%{
186 | transform: rotate(-10deg);
187 | }
188 | 100%{
189 | transform: rotate(10deg);
190 | }
191 | }
192 |
193 | @keyframes shad {
194 | 0%{
195 | transform: translate(-30px, -4px);
196 | }
197 | 50%{
198 | transform: translate(-70px, -4px);
199 | }
200 | 100%{
201 | transform: translate(-30px, -4px);
202 | }
203 | }
204 |
205 | @keyframes light {
206 | 0%{
207 | transform: translate(-50%, -50%) rotate(-30deg);
208 | }
209 | 50%{
210 | transform: translate(-50%, -50%) rotate(10deg);
211 | }
212 | 100%{
213 | transform: translate(-50%, -50%) rotate(-30deg);
214 | }
215 | }
--------------------------------------------------------------------------------
/blink/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Blinking Eye
6 |
7 |
8 |
9 |
15 |
16 |
--------------------------------------------------------------------------------
/blink/styles.css:
--------------------------------------------------------------------------------
1 | * {
2 | margin: 0;
3 | padding: 0;
4 | box-sizing: border-box;
5 | }
6 |
7 | body {
8 | background-color: #30475e;
9 | }
10 |
11 | .eye {
12 | width: 100px;
13 | height: 100px;
14 | background-color: white;
15 | position: absolute;
16 | top: 50%;
17 | left: 50%;
18 | transform: translate(-50%, -50%) rotate(45deg);
19 | border: 1px solid black;
20 | border-radius: 75% 0;
21 | overflow: hidden;
22 | }
23 |
24 | .pupil {
25 | width: 50px;
26 | height: 50px;
27 | background-color: black;
28 | border-radius: 50%;
29 | border: 15px solid #589167;
30 | position: absolute;
31 | top: 50%;
32 | left: 50%;
33 | transform: translate(-50%, -50%);
34 | }
35 |
36 | .eyelid {
37 | width: 150px;
38 | height: 80px;
39 | position: absolute;
40 | top: 50%;
41 | left: 50%;
42 | transform: translate(-50%, -50%) rotate(-45deg);
43 | z-index: 1;
44 | }
45 |
46 | .eyelid span {
47 | width: 100%;
48 | height: 15%;
49 | display: block;
50 | background-color: #f2a365;
51 | border-bottom: 2px solid black;
52 | border-radius: 0 0 60% 60%;
53 | animation: blink 2s ease infinite;
54 | }
55 |
56 | @keyframes blink {
57 | 0% {
58 | height: 15%;
59 | }
60 | 30% {
61 | height: 15%;
62 | }
63 | 40% {
64 | height: 100%;
65 | }
66 | 50% {
67 | height: 15%;
68 | }
69 | 60% {
70 | height: 15%;
71 | }
72 | 70% {
73 | height: 100%;
74 | }
75 | 80% {
76 | height: 15%;
77 | }
78 | 100% {
79 | height: 15%;
80 | }
81 | }
--------------------------------------------------------------------------------
/book/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Book Loader
7 |
8 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
Loading book
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/book/styles.css:
--------------------------------------------------------------------------------
1 | * {
2 | margin: 0;
3 | padding: 0;
4 | box-sizing: border-box;
5 | }
6 |
7 | body {
8 | height: 100vh;
9 | background-color: #084177;
10 | display: flex;
11 | }
12 |
13 | .container {
14 | margin: auto;
15 | width: 200px;
16 | height: 200px;
17 | display: flex;
18 | align-items: center;
19 | }
20 |
21 | .title {
22 | color: white;
23 | font-family: 'Dancing Script', cursive;
24 | font-size: 40px;
25 | }
26 |
27 | .title::after {
28 | content: "";
29 | position: absolute;
30 | animation: loadingTitle 2s infinite;
31 | }
32 |
33 | .book {
34 | width: 150px;
35 | height: 110px;
36 | position: relative;
37 | perspective: 350px;
38 | margin: auto;
39 | }
40 |
41 | .pages {
42 | display: block;
43 | width: 75px;
44 | height: 110px;
45 | border: 5px solid white;
46 | border-left: 5px solid white;
47 | position: absolute;
48 | overflow: hidden;
49 | background: #084177;
50 | transform-style: preserve-3d;
51 | transform-origin: left center;
52 | animation: loading 3s cubic-bezier(0, .39, 1, .68) 2s infinite;
53 | }
54 |
55 | .pages:nth-child(2) {
56 | animation-delay: 1.9s;
57 | }
58 |
59 | .pages:nth-child(3) {
60 | animation-delay: 1.8s;
61 | }
62 |
63 | .pages:nth-child(4) {
64 | animation-delay: 1.7s;
65 | }
66 |
67 | .pages:nth-child(5) {
68 | animation-delay: 1.6s;
69 | }
70 |
71 | .pages:nth-child(6) {
72 | animation-delay: 1.5s;
73 | }
74 |
75 | .pages:nth-child(7) {
76 | animation-delay: 1.4s;
77 | }
78 |
79 | .pages:nth-child(8) {
80 | animation-delay: 1.3s;
81 | }
82 |
83 | @keyframes loading {
84 | 0% {
85 | transform: rotateY(0deg);
86 | }
87 | 5% {
88 | background: #083763;
89 | }
90 | 10% {
91 | background-color: #084177;
92 | transform: rotateY(-180deg);
93 | }
94 | 20% {
95 | background-color: #084177;
96 | transform: rotateY(-180deg);
97 | }
98 | 50% {
99 | background-color: #084177;
100 | transform: rotateY(-180deg);
101 | }
102 | 55% {
103 | background: #083763;
104 | }
105 | 60% {
106 | transform: rotateY(0deg);
107 | }
108 | 70% {
109 | transform: rotateY(0deg);
110 | background-color: #084177;
111 | }
112 | 100% {
113 | transform: rotateY(0deg);
114 | }
115 | }
116 |
117 | @keyframes loadingTitle {
118 | 0% {
119 | content: "";
120 | }
121 | 33% {
122 | content: ".";
123 | }
124 | 66% {
125 | content: "..";
126 | }
127 | 100% {
128 | content: "...";
129 | }
130 | }
--------------------------------------------------------------------------------
/bounce/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Bouncing Animation
6 |
7 |
8 |
9 |
10 |
11 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/bounce/styles.css:
--------------------------------------------------------------------------------
1 | .container {
2 | width: 300px;
3 | height: 300px;
4 | position: relative;
5 | top: 5px;
6 | left: 100px;
7 | display: flex;
8 | flex-direction: column;
9 | justify-content: flex-end;
10 | align-items: center;
11 | background-color: #222831;
12 | }
13 |
14 | .circle {
15 | width: 100px;
16 | height: 100px;
17 | background-color: #00adb5;
18 | border-radius: 50%;
19 | animation-name: bouncing;
20 | animation-duration: 2s;
21 | animation-timing-function:
22 | cubic-bezier(0.280, 0.840, 0.420, 1);
23 | animation-iteration-count: infinite;
24 | }
25 |
26 | @keyframes bouncing {
27 | 0% {
28 | transform: scale(1, 1) translateY(0);
29 | }
30 | 10% {
31 | transform: scale(1.1, 0.9) translateY(0);
32 | }
33 | 30% {
34 | transform: scale(.9, 1.1) translateY(-100px);
35 | }
36 | 48% {
37 | transform: scale(1.05, .95) translateY(0);
38 | }
39 | 55% {
40 | transform: scale(0.95, 1.05) translateY(-15px);
41 | }
42 | 64% {
43 | transform: scale(1, 1) translateY(0);
44 | }
45 | 100% {
46 | transform: scale(1, 1) translateY(0);
47 | }
48 | }
--------------------------------------------------------------------------------
/burger/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Burger Loader
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
23 |
24 |
28 |
29 |
30 |
31 |
32 |
--------------------------------------------------------------------------------
/burger/styles.css:
--------------------------------------------------------------------------------
1 | * {
2 | padding: 0;
3 | margin: 0;
4 | box-sizing: border-box;
5 | }
6 |
7 | body {
8 | background-color: #274f35;
9 | height: 100vh;
10 | display: flex;
11 | }
12 |
13 | .container {
14 | margin: auto;
15 | display: flex;
16 | flex-direction: column;
17 | align-items: center;
18 | justify-content: flex-end;
19 | width: 200px;
20 | height: 200px;
21 | }
22 |
23 | .saladTomatoContainer {
24 | display: flex;
25 | width: 90px;
26 | height: 5px;
27 | }
28 |
29 | .bottomBun {
30 | width: 100px;
31 | height: 25px;
32 | border: 5px solid black;
33 | border-radius: 3px 3px 20px 20px;
34 | background-color: #f2ca97;
35 | position: relative;
36 | bottom: 500px;
37 | animation: loader1 2s infinite linear;
38 | }
39 |
40 | .salad {
41 | width: 40%;
42 | height: 100%;
43 | border: 5px solid black;
44 | border-bottom: none;
45 | border-top: none;
46 | background-color: #6aa32b;
47 | position: relative;
48 | bottom: 500px;
49 | animation: loader2 2s infinite linear;
50 | }
51 |
52 | .tomato {
53 | width: 60%;
54 | height: 100%;
55 | background-color: #e22949;
56 | border: 5px solid black;
57 | border-bottom: none;
58 | border-top: none;
59 | position: relative;
60 | bottom: 500px;
61 | animation: loader3 2s infinite linear;
62 | }
63 |
64 | .meat {
65 | width: 100px;
66 | height: 25px;
67 | border: 5px solid black;
68 | background-color: #7a5335;
69 | border-radius: 5px;
70 | position: relative;
71 | bottom: 500px;
72 | animation: loader4 2s infinite linear;
73 | }
74 |
75 | .cheese {
76 | width: 90px;
77 | height: 5px;
78 | border: 5px solid black;
79 | border-bottom: none;
80 | border-top: none;
81 | background-color: #f8e71d;
82 | position: relative;
83 | bottom: 500px;
84 | animation: loader5 2s infinite linear;
85 | }
86 |
87 | .cheeseDrop {
88 | background-color: #f8e71d;
89 | width: 15px;
90 | height: 15px;
91 | border: 5px solid black;
92 | border-left: none;
93 | border-top: none;
94 | position: absolute;
95 | border-radius: 20% 20% 40% 20%;
96 | transform: rotate(45deg);
97 | right: 20%;
98 | top: 1px;
99 | z-index: 1;
100 | animation: drop 2s infinite linear;
101 | }
102 |
103 | .topBun {
104 | width: 100px;
105 | height: 40px;
106 | border: 5px solid black;
107 | border-radius: 50% 50% 5% 5%;
108 | background-color: #f2ca97;
109 | position: relative;
110 | z-index: 2;
111 | bottom: 500px;
112 | animation: loader6 2s infinite linear;
113 | }
114 |
115 | .sesame1, .sesame2, .sesame3, .sesame4, .sesame5, .sesame6 {
116 | width: 7px;
117 | height: 3px;
118 | background-color: #cea97a;
119 | border-radius: 50%;
120 | position: absolute;
121 | top: 45%;
122 | left: 20%;
123 | }
124 |
125 | .sesame2 {
126 | top: 70%;
127 | left: 35%;
128 | }
129 |
130 | .sesame3 {
131 | top: 35%;
132 | left: 35%;
133 | }
134 |
135 | .sesame4 {
136 | top: 40%;
137 | left: 60%;
138 | }
139 |
140 | .sesame5 {
141 | top: 60%;
142 | left: 75%;
143 | }
144 |
145 | .sesame6 {
146 | top: 55%;
147 | left: 50%;
148 | }
149 |
150 | @keyframes loader1 {
151 | 0% {
152 | bottom: 500px;
153 | transform: rotate(10deg);
154 | }
155 | 40% {
156 | transform: rotate(10deg);
157 | }
158 | 45% {
159 | bottom: 0;
160 | transform: rotate(0deg);
161 | }
162 | 67% {
163 | height: 25px;
164 | }
165 | 68% {
166 | height: 20px;
167 | }
168 | 70% {
169 | height: 25px;
170 | }
171 | 100% {
172 | bottom: 0;
173 | }
174 | }
175 |
176 | @keyframes loader2 {
177 | 0% {
178 | bottom: 500px;
179 | }
180 | 10% {
181 | bottom: 500px;
182 | }
183 | 60% {
184 | bottom: 0;
185 | }
186 | 100% {
187 | bottom: 0;
188 | }
189 | }
190 |
191 | @keyframes loader3 {
192 | 0% {
193 | bottom: 500px;
194 | }
195 | 15% {
196 | bottom: 500px;
197 | }
198 | 65% {
199 | bottom: 0;
200 | }
201 | 100% {
202 | bottom: 0;
203 | }
204 | }
205 |
206 | @keyframes loader4 {
207 | 0% {
208 | bottom: 500px;
209 | }
210 | 20% {
211 | bottom: 500px;
212 | }
213 | 68% {
214 | bottom: 0;
215 | }
216 | 100% {
217 | bottom: 0;
218 | }
219 | }
220 |
221 | @keyframes loader5 {
222 | 0% {
223 | bottom: 500px;
224 | }
225 | 25% {
226 | bottom: 500px;
227 | }
228 | 70% {
229 | bottom: 0;
230 | }
231 | 100% {
232 | bottom: 0;
233 | }
234 | }
235 |
236 | @keyframes loader6 {
237 | 0% {
238 | bottom: 500px;
239 | }
240 | 30% {
241 | bottom: 500px;
242 | }
243 | 72% {
244 | bottom: 0;
245 | }
246 | 100% {
247 | bottom: 0;
248 | }
249 | }
250 |
251 | @keyframes drop {
252 | 0% {
253 | opacity: 0;
254 | transform: rotate(45deg) scale(0);
255 | }
256 | 70% {
257 | opacity: 0;
258 | transform: rotate(45deg) scale(0);
259 | top: -5px;
260 | }
261 | 85% {
262 | opacity: 1;
263 | transform: rotate(45deg) scale(1);
264 | top: 1px;
265 | }
266 | 100% {
267 | opacity: 1;
268 | transform: rotate(45deg) scale(1);
269 | top: 1px;
270 | }
271 | }
--------------------------------------------------------------------------------
/card/Black.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/webcodemode/instagramPosts/06e75a6a937bddb145104c999d13a5140cc10121/card/Black.jpg
--------------------------------------------------------------------------------
/card/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Product Card
7 |
8 |
10 |
11 |
12 |
13 |
14 |
15 |
TOM FORD
16 |
Black Tie
17 |

19 |
$89.99
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/card/styles.css:
--------------------------------------------------------------------------------
1 | * {
2 | margin: 0;
3 | padding: 0;
4 | box-sizing: border-box;
5 | }
6 |
7 | body {
8 | height: 100vh;
9 | background-color: #f0a500;
10 | font-family: 'Poppins', sans-serif;
11 | display: flex;
12 | justify-content: center;
13 | align-items: center;
14 | }
15 |
16 | .container {
17 | display: flex;
18 | flex-direction: column;
19 | justify-content: center;
20 | align-items: center;
21 | }
22 |
23 | .card {
24 | width: 250px;
25 | height: 400px;
26 | background-color: #f5f5f5;
27 | border-radius: 25px;
28 | box-shadow: 0px 25px 36px 12px rgba(0, 0, 0, 0.51);
29 | padding-bottom: 10px;
30 | display: flex;
31 | flex-direction: column;
32 | justify-content: space-evenly;
33 | align-items: center;
34 | transition: all 0.2s ease;
35 | }
36 |
37 | .container:hover .card {
38 | transform: scale(1.1);
39 | filter: brightness(50%);
40 | }
41 |
42 | .productType {
43 | color: grey;
44 | transform: translateY(-10px);
45 | }
46 |
47 | .price {
48 | font-size: 24px;
49 | color: #cf7500;
50 | }
51 |
52 | .cartBtn, .wishlistBtn {
53 | width: 150px;
54 | height: 50px;
55 | background-color: #cf7500;
56 | color: white;
57 | border: none;
58 | border-radius: 15px;
59 | overflow: hidden;
60 | outline: none;
61 | font-weight: bold;
62 | position: absolute;
63 | opacity: 0;
64 | cursor: pointer;
65 | bottom: 55%;
66 | transition: all 0.2s ease;
67 | }
68 |
69 | .wishlistBtn {
70 | background-color: #f5f5f5;
71 | color: black;
72 | bottom: 35%;
73 | }
74 |
75 | .container:hover .cartBtn, .container:hover .wishlistBtn {
76 | opacity: 1;
77 | display: inline;
78 | }
79 |
80 | .cartBtn:active, .wishlistBtn:active {
81 | transform: scale(0.90);
82 | }
--------------------------------------------------------------------------------
/carousel/firstImage.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/webcodemode/instagramPosts/06e75a6a937bddb145104c999d13a5140cc10121/carousel/firstImage.jpg
--------------------------------------------------------------------------------
/carousel/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Javascript Carousel
6 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |

16 |

17 |

18 |

19 |

20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
--------------------------------------------------------------------------------
/carousel/index.js:
--------------------------------------------------------------------------------
1 | const carouselSlide = document.querySelector(".carousel-slide");
2 | const carouselImages = document.querySelectorAll(".carousel-slide img");
3 | const prevBtn = document.querySelector("#prevBtn");
4 | const nextBtn = document.querySelector("#nextBtn");
5 | let counter = 1;
6 | const size = carouselImages[0].clientWidth;
7 |
8 | carouselSlide.style.transform = "translateX(" + (-size * counter) + "px)";
9 |
10 | function next() {
11 | if (counter >= carouselImages.length - 1) return;
12 | carouselSlide.style.transition = "transform 0.7s ease-in-out"
13 | counter++;
14 | carouselSlide.style.transform = "translateX(" + (-size * counter) + "px)";
15 | }
16 |
17 | nextBtn.addEventListener("click", next);
18 |
19 | prevBtn.addEventListener("click", () => {
20 | if (counter <= 0) return;
21 | carouselSlide.style.transition = "transform 0.7s ease-in-out"
22 | counter--;
23 | carouselSlide.style.transform = "translateX(" + (-size * counter) + "px)";
24 | })
25 |
26 | carouselSlide.addEventListener('transitionend', () => {
27 | if (carouselImages[counter].id === "lastClone") {
28 | carouselSlide.style.transition = "none";
29 | counter = carouselImages.length - 2;
30 | carouselSlide.style.transform = "translateX(" + (-size * counter) + "px)";
31 | }
32 | if (carouselImages[counter].id === "firstClone") {
33 | carouselSlide.style.transition = "none";
34 | counter = carouselImages.length - counter;
35 | carouselSlide.style.transform = "translateX(" + (-size * counter) + "px)";
36 | }
37 | })
38 |
39 |
40 |
41 |
42 |
43 |
--------------------------------------------------------------------------------
/carousel/secondImage.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/webcodemode/instagramPosts/06e75a6a937bddb145104c999d13a5140cc10121/carousel/secondImage.jpg
--------------------------------------------------------------------------------
/carousel/styles.css:
--------------------------------------------------------------------------------
1 | * {
2 | padding: 0;
3 | margin: 0;
4 | box-sizing: border-box;
5 | }
6 |
7 | .carousel-container {
8 | width: 500px;
9 | margin: auto;
10 | overflow: hidden;
11 | padding: 10px 0 5px 0;
12 | position: relative;
13 | }
14 |
15 | .carousel-slide {
16 | display: flex;
17 | width: 100%;
18 | height: 500px;
19 | }
20 |
21 | #prevBtn, #nextBtn {
22 | position: absolute;
23 | z-index: 1;
24 | top: 49%;
25 | font-size: 30px;
26 | cursor: pointer;
27 | transition: all 0.3s ease-in-out;
28 | }
29 |
30 | #prevBtn {
31 | left: 3%;
32 | }
33 |
34 | #nextBtn {
35 | right: 3%;
36 | }
37 |
38 | #prevBtn:hover, #nextBtn:hover {
39 | color: #588da8;
40 | }
41 |
42 |
43 |
44 |
--------------------------------------------------------------------------------
/carousel/thirdImage.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/webcodemode/instagramPosts/06e75a6a937bddb145104c999d13a5140cc10121/carousel/thirdImage.jpg
--------------------------------------------------------------------------------
/cat/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Watching Cat
6 |
7 |
8 |
9 |
10 |
11 |
12 |
15 |
18 |
19 |
20 |
21 |
22 |
23 |
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/cat/index.js:
--------------------------------------------------------------------------------
1 | const eyes = document.querySelectorAll(".pupil")
2 | document.onmousemove = function() {
3 | var x = event.clientX * 100 / window.innerWidth + "%"
4 | var y = event.clientY * 100 / window.innerHeight + "%"
5 | eyes.forEach(eye => {
6 | eye.style.left = x;
7 | eye.style.top = y;
8 | eye.style.transform = "translate(-"+x+", -"+y+")"
9 | })
10 | }
--------------------------------------------------------------------------------
/cat/rsz_cursor.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/webcodemode/instagramPosts/06e75a6a937bddb145104c999d13a5140cc10121/cat/rsz_cursor.png
--------------------------------------------------------------------------------
/cat/styles.css:
--------------------------------------------------------------------------------
1 | * {
2 | margin: 0;
3 | padding: 0;
4 | box-sizing: border-box;
5 | }
6 |
7 | body {
8 | height: 100vh;
9 | background-color: white;
10 | display: flex;
11 | cursor: url(rsz_cursor.png), auto;
12 | }
13 |
14 | .container {
15 | margin: auto;
16 | width: 240px;
17 | height: 300px;
18 | position: relative;
19 | }
20 |
21 | .catBody {
22 | width: 180px;
23 | height: 150px;
24 | background-color: black;
25 | border-radius: 60px 0 50px 0;
26 | position: absolute;
27 | bottom: 0;
28 | right: 0;
29 | }
30 |
31 | .catHead {
32 | width: 130px;
33 | height: 130px;
34 | background-color: black;
35 | position: absolute;
36 | right: 0;
37 | top: 70px;
38 | z-index: 1;
39 | border-radius: 60px 60px 0 0;
40 | }
41 |
42 | .catTail {
43 | width: 200px;
44 | height: 200px;
45 | border-radius: 50%;
46 | background-color: white;
47 | border: 40px solid white;
48 | border-left: 40px solid black;
49 | position: absolute;
50 | bottom: -9px;
51 | left: 2px;
52 | transform: rotate(-20deg);
53 | z-index: -1;
54 | }
55 |
56 | .catTailEnd {
57 | width: 40px;
58 | height: 40px;
59 | border-radius: 50%;
60 | background-color: black;
61 | position: absolute;
62 | left: -15px;
63 | bottom: 98px;
64 | }
65 |
66 | .leftEye, .rightEye {
67 | width: 40px;
68 | height: 40px;
69 | border-radius: 50%;
70 | background-color: yellow;
71 | position: absolute;
72 | top: 30%;
73 | left: 12%;
74 | }
75 |
76 | .rightEye {
77 | left: 58%;
78 | }
79 |
80 | .pupil {
81 | width: 65%;
82 | height: 65%;
83 | background-color: black;
84 | border-radius: 50%;
85 | position: absolute;
86 | top: 50%;
87 | left: 50%;
88 | transform: translate(-50%, -50%);
89 | }
90 |
91 | .ears {
92 | width: 0;
93 | height: 0;
94 | border-top: 50px solid transparent;
95 | border-left: 100px solid black;
96 | border-bottom: 50px solid transparent;
97 | position: relative;
98 | bottom: 20px;
99 | }
100 |
101 | .ears::after {
102 | content: "";
103 | width: 0;
104 | height: 0;
105 | border-top: 50px solid transparent;
106 | border-right: 100px solid black;
107 | border-bottom: 50px solid transparent;
108 | position: absolute;
109 | bottom: -50px;
110 | right: -30px;
111 | }
112 |
113 | .nose {
114 | width: 0;
115 | height: 0;
116 | border-left: 6px solid transparent;
117 | border-right: 6px solid transparent;
118 | border-top: 6px solid #3f3f44;
119 | position: absolute;
120 | bottom: 42%;
121 | right: 45%;
122 | z-index: 1;
123 | }
124 |
125 | .mouth1, .mouth2 {
126 | width: 15px;
127 | height: 15px;
128 | background-color: black;
129 | border: 3px solid black;
130 | border-bottom: 3px solid #3f3f44;
131 | border-radius: 50%;
132 | transform: rotate(-45deg);
133 | position: absolute;
134 | bottom: 35%;
135 | right: 48.5%;
136 | }
137 |
138 | .mouth2 {
139 | transform: rotate(45deg);
140 | right: 39.2%;
141 | }
--------------------------------------------------------------------------------
/clock/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Fancy Clock
6 |
7 |
9 |
10 |
11 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/clock/index.js:
--------------------------------------------------------------------------------
1 | function clock() {
2 | const hours = document.querySelector(".hours")
3 | const minutes = document.querySelector(".minutes")
4 | const seconds = document.querySelector(".seconds")
5 |
6 | hours.innerHTML = new Date().getHours();
7 | minutes.innerHTML = new Date().getMinutes();
8 | seconds.innerHTML = new Date().getSeconds();
9 |
10 | if (minutes.innerHTML.toString().length == 1) {
11 | minutes.innerHTML = "0" + minutes.innerHTML;
12 | }
13 |
14 | if (seconds.innerHTML.toString().length == 1) {
15 | seconds.innerHTML = "0" + seconds.innerHTML;
16 | }
17 |
18 | if (hours.innerHTML.toString().length == 1) {
19 | hours.innerHTML = "0" + hours.innerHTML;
20 | }
21 | }
22 |
23 | const interval = setInterval(clock, 1000)
24 |
25 |
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/clock/styles.css:
--------------------------------------------------------------------------------
1 | * {
2 | padding: 0;
3 | margin: 0;
4 | box-sizing: border-box;
5 | }
6 |
7 | body {
8 | font-family: 'Lobster', cursive;
9 | height: 100vh;
10 | display: flex;
11 | justify-content: center;
12 | align-items: center;
13 | background-color: #ffcc00;
14 | }
15 |
16 | .clock {
17 | display: flex;
18 | }
19 |
20 | .clock div {
21 | position: relative;
22 | margin: 0 5px;
23 | width: 200px;
24 | height: 240px;
25 | }
26 |
27 | .clock div p {
28 | position: relative;
29 | display: flex;
30 | width: 200px;
31 | height: 160px;
32 | justify-content: center;
33 | align-items: center;
34 | background-color: #f2ed6f;
35 | z-index: 1;
36 | font-size: 80px;
37 | border: none;
38 | box-shadow: 0px 34px 45px 0px rgba(0,0,0,0.56);
39 | }
40 |
41 | .clock div p:first-child {
42 | border-radius: 20px 20px 0 0;
43 | }
44 |
45 | .clock div p:last-child {
46 | font-size: 30px;
47 | height: 80px;
48 | background-color: #f4e04d;
49 | border-radius: 0 0 20px 20px;
50 | }
51 |
52 | .clock div:last-child p {
53 | background-color: #512b58;
54 | color: white;
55 | }
56 |
57 | .clock div:last-child p:last-child {
58 | background-color: #2c003e;
59 | color: white;
60 | }
--------------------------------------------------------------------------------
/coffee/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Coffee
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
18 |
22 |
23 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
--------------------------------------------------------------------------------
/coffee/styles.css:
--------------------------------------------------------------------------------
1 | * {
2 | margin: 0;
3 | padding: 0;
4 | box-sizing: border-box;
5 | }
6 |
7 | body {
8 | height: 100vh;
9 | background-color: #d63447;
10 | display: flex;
11 | }
12 |
13 | .container {
14 | margin: auto;
15 | width: 250px;
16 | height: 350px;
17 | display: flex;
18 | flex-direction: column;
19 | justify-content: flex-end;
20 | align-items: center;
21 | position: relative;
22 | }
23 |
24 | .coaster {
25 | width: 100%;
26 | height: 6%;
27 | background-color: #7c3c21;
28 | border-radius: 10px;
29 | position: relative;
30 | }
31 |
32 | .coaster::after {
33 | content: "";
34 | width: 50%;
35 | height: 100%;
36 | background-color: #63301a;
37 | position: absolute;
38 | right: 0;
39 | border-radius: 0 10px 10px 0;
40 | }
41 |
42 | .halfCup {
43 | height: 30%;
44 | width: 30%;
45 | background-color: white;
46 | position: absolute;
47 | bottom: 21px;
48 | left: 50px;
49 | border-radius: 15px 0 0 0;
50 | }
51 |
52 | .halfCup::after {
53 | content: "";
54 | width: 0;
55 | height: 0;
56 | border-bottom: 100px solid #d63447;
57 | border-right: 20px solid transparent;
58 | }
59 |
60 | .cup {
61 | width: 60%;
62 | height: 30%;
63 | background-color: #f9f9f9;
64 | border-radius: 15px 15px 0 0;
65 | position: relative;
66 |
67 | }
68 |
69 | .cup::before {
70 | content: "";
71 | width: 0;
72 | height: 0;
73 | border-bottom: 100px solid #d63447;
74 | border-left: 20px solid transparent;
75 | position: absolute;
76 | right: -3px;
77 | bottom: 0;
78 | }
79 |
80 | .handle {
81 | height: 60px;
82 | width: 40px;
83 | border-radius: 0 50% 50% 0;
84 | background-color: #d63447;
85 | border: 10px solid #f9f9f9;
86 | position: absolute;
87 | right: 26px;
88 | bottom: 40px;
89 | transform: rotate(10deg);
90 | }
91 |
92 | .steamContainer {
93 | width: 80%;
94 | height: 50%;
95 | display: flex;
96 | flex-direction: column;
97 | justify-content: space-evenly;
98 | }
99 |
100 | .steam1, .steam2, .steam3, .steam4, .steam5 {
101 | width: 20%;
102 | height: 5%;
103 | background-color: #eadca6;
104 | border-radius: 10px;
105 | animation: steamFloating 1.5s infinite linear;
106 | }
107 |
108 | .steam1 {
109 | align-self: center;
110 | animation-delay: 1.3s;
111 | }
112 |
113 | .steam2 {
114 | width: 30%;
115 | height: 100%;
116 | animation-delay: 1s;
117 | position: relative;
118 | right: 50px;
119 | }
120 |
121 | .steam3 {
122 | width: 50%;
123 | height: 100%;
124 | animation-delay: 0.8s;
125 | position: relative;
126 | left: 40px;
127 | }
128 |
129 | .steam4 {
130 | width: 70%;
131 | align-self: center;
132 | animation-delay: 0.5s;
133 | }
134 |
135 | .steam5 {
136 | width: 35%;
137 | height: 100%;
138 | animation-delay: 0.2s;
139 | position: relative;
140 | right: 20px;
141 | }
142 |
143 | .steams {
144 | width: 200px;
145 | height: 5%;
146 | display: flex;
147 | justify-content: center;
148 | }
149 |
150 | .bubble2, .bubble3, .bubble5 {
151 | width: 10px;
152 | height: 10px;
153 | border-radius: 50%;
154 | background-color: #e2c275;
155 | animation: bubbleFloating 1.5s infinite ease-in;
156 | position: relative;
157 | }
158 |
159 | .bubble3 {
160 | top: 15px;
161 | right: 130px;
162 | animation-delay: 0.7s;
163 | }
164 |
165 | .bubble5 {
166 | top: 5px;
167 | animation-delay: 0.4s;
168 | }
169 |
170 | @keyframes steamFloating {
171 | 0% {
172 | transform: scaleX(1);
173 | }
174 | 50% {
175 | transform: scaleX(0.8);
176 | }
177 | 100% {
178 | transform: scaleX(1);
179 | }
180 | }
181 |
182 | @keyframes bubbleFloating {
183 | 0% {
184 | transform: scale(1)
185 | }
186 | 50% {
187 | transform: scale(0);
188 | }
189 | 100% {
190 | transform: scale(1);
191 | }
192 | }
--------------------------------------------------------------------------------
/coolLoader/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Cool Loader
7 |
8 |
9 |
10 |
11 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/coolLoader/styles.css:
--------------------------------------------------------------------------------
1 | * {
2 | box-sizing: border-box;
3 | padding: 0;
4 | margin: 0;
5 | }
6 |
7 | body {
8 | background-color: #21bf73;
9 | height: 100vh;
10 | display: flex;
11 | }
12 |
13 | .container {
14 | width: 280px;
15 | height: 280px;
16 | position: relative;
17 | margin: auto;
18 | }
19 |
20 | .element1, .element2, .element3 {
21 | width: 280px;
22 | height: 100px;
23 | border: 10px solid #fefffe;
24 | border-radius: 50px;
25 | position: absolute;
26 | animation: loading1 2s infinite;
27 | box-shadow: inset 0px 0px 7px 0px rgba(65, 65, 65, 0.5), 0px 0px 7px 0px rgba(0,0,0,0.5);
28 | }
29 |
30 | .element2, .element3 {
31 | animation: loading2 2s infinite;
32 | }
33 |
34 | .element3 {
35 | animation: loading3 2s infinite;
36 | }
37 |
38 | @keyframes loading1 {
39 | 0% {
40 | height: 100px;
41 | width: 280px;
42 | top: 0;
43 | left: 0;
44 | }
45 | 25% {
46 | height: 100px;
47 | width: 100px;
48 | top: 0;
49 | left: 180px;
50 | }
51 | 50% {
52 | height: 100px;
53 | width: 100px;
54 | top: 0;
55 | left: 180px;
56 | }
57 | 75% {
58 | height: 280px;
59 | width: 100px;
60 | top: 0;
61 | left: 180px;
62 | }
63 | 100% {
64 | height: 100px;
65 | width: 100px;
66 | top: 180px;
67 | left: 180px;
68 | }
69 | }
70 |
71 | @keyframes loading2 {
72 | 0% {
73 | height: 100px;
74 | width: 100px;
75 | top: 180px;
76 | left: 0;
77 | }
78 | 25% {
79 | height: 280px;
80 | width: 100px;
81 | top: 0;
82 | left: 0;
83 | }
84 | 50% {
85 | height: 100px;
86 | width: 100px;
87 | top: 0;
88 | left: 0;
89 | }
90 | 75% {
91 | height: 100px;
92 | width: 100px;
93 | top: 0;
94 | left: 0;
95 | }
96 | 100% {
97 | height: 100px;
98 | width: 280px;
99 | top: 0;
100 | left: 0;
101 | }
102 | }
103 |
104 | @keyframes loading3 {
105 | 0% {
106 | height: 100px;
107 | width: 100px;
108 | top: 180px;
109 | left: 180px;
110 | }
111 | 25% {
112 | height: 100px;
113 | width: 100px;
114 | top: 180px;
115 | left: 180px;
116 | }
117 | 50% {
118 | height: 100px;
119 | width: 280px;
120 | top: 180px;
121 | left: 0px;
122 | }
123 | 75% {
124 | height: 100px;
125 | width: 100px;
126 | top: 180px;
127 | left: 0;
128 | }
129 | 100% {
130 | height: 100px;
131 | width: 100px;
132 | top: 180px;
133 | left: 0;
134 | }
135 | }
--------------------------------------------------------------------------------
/counter/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Count Button
6 |
7 |
8 |
9 |
10 |
11 |
0
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/counter/index.js:
--------------------------------------------------------------------------------
1 | var counter = 0;
2 | const decrement = document.querySelector(".remove")
3 | const increment = document.querySelector(".add")
4 | var result = document.querySelector(".result")
5 |
6 | increment.addEventListener("click", add)
7 | decrement.addEventListener("click", remove)
8 |
9 | function add() {
10 | result.innerHTML++
11 | }
12 |
13 | function remove() {
14 | result.innerHTML--
15 | }
--------------------------------------------------------------------------------
/counter/styles.css:
--------------------------------------------------------------------------------
1 | * {
2 | padding: 0;
3 | margin: 0;
4 | box-sizing: border-box;
5 | }
6 |
7 | body {
8 | background-color: #dbdbdb;
9 | }
10 |
11 | .container {
12 | width: 300px;
13 | height: 300px;
14 | position: absolute;
15 | top: 50%;
16 | left: 50%;
17 | transform: translate(-50%, -50%);
18 | display: flex;
19 | justify-content: space-evenly;
20 | align-items: center;
21 | }
22 |
23 | .add, .remove {
24 | box-shadow: 0px 12px 30px 0px #004d05;
25 | background-color:#007944;
26 | border: none;
27 | border-radius: 30px;
28 | display: inline-block;
29 | cursor: pointer;
30 | color: white;
31 | font-family:Arial;
32 | font-size:20px;
33 | font-weight:bold;
34 | padding:20px 20px;
35 | text-decoration:none;
36 | outline: none;
37 | transition: all 0.2s;
38 | }
39 |
40 | .add:active, .remove:active {
41 | transform: translateY(5px);
42 | }
43 |
44 | .remove {
45 | box-shadow: 0px 12px 30px 0px #ad0000;
46 | background-color: #c81912;
47 | }
48 |
49 | .result {
50 | width: 30px;
51 | text-align: center;
52 | }
--------------------------------------------------------------------------------
/cuteSwitch/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Switch
6 |
7 |
8 |
9 |
10 |
11 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/cuteSwitch/index.js:
--------------------------------------------------------------------------------
1 | const mouth = document.querySelector(".mouth")
2 | const leftEye = document.querySelector(".eye1")
3 | const rightEye = document.querySelector(".eye2")
4 | const switchBtn = document.querySelector(".switchBtn")
5 | const tongue = document.querySelector(".tongue")
6 | const allElements = [mouth, leftEye, rightEye, switchBtn, tongue]
7 |
8 | switchBtn.addEventListener("click", happyFace)
9 |
10 | function happyFace() {
11 | allElements.forEach(element => {element.classList.toggle("happy")})
12 | }
--------------------------------------------------------------------------------
/cuteSwitch/styles.css:
--------------------------------------------------------------------------------
1 | * {
2 | margin: 0;
3 | padding: 0;
4 | box-sizing: border-box;
5 | }
6 |
7 | body {
8 | background-color: #f7f7f7;
9 | display: flex;
10 | height: 100vh;
11 | }
12 |
13 | .container {
14 | margin: auto;
15 | position: relative;
16 | }
17 |
18 | input {
19 | position: relative;
20 | width: 200px;
21 | height: 100px;
22 | background-color: #dddddd;
23 | border-radius: 60px;
24 | box-shadow: inset 0 0 10px rgba(0, 0, 0, 0.2);
25 | -webkit-appearance: none;
26 | outline: none;
27 | transition: all 0.5s ease-in-out;
28 | }
29 |
30 | input:checked {
31 | background-color: #ffacb7;
32 | }
33 |
34 | input::before {
35 | content: "";
36 | position: absolute;
37 | width: 100px;
38 | height: 100px;
39 | border-radius: 50%;
40 | top: 0;
41 | left: 0;
42 | background-color: #fff;
43 | transform: scale(0.9);
44 | box-shadow: 0 4px 10px rgba(0, 0, 0, 0.2);
45 | transition: 0.5s;
46 | }
47 |
48 | input:checked::before {
49 | left: 100px;
50 | }
51 |
52 | .mouth {
53 | width: 15px;
54 | height: 10px;
55 | border-radius: 10px 10px 0 0;
56 | background-color: black;
57 | position: absolute;
58 | top: 55px;
59 | left: 41px;
60 | transition: all 0.5s ease;
61 | }
62 |
63 | .mouth.happy {
64 | left: 143px;
65 | border-radius: 0 0 10px 10px;
66 | }
67 |
68 | .eye1, .eye2 {
69 | width: 8px;
70 | height: 2px;
71 | background-color: black;
72 | position: absolute;
73 | top: 45px;
74 | left: 25px;
75 | border-radius: 3px;
76 | transition: all 0.5s ease;
77 | transform: rotate(20deg);
78 | }
79 |
80 | .eye1::after, .eye2::after {
81 | content: "";
82 | width: 8px;
83 | height: 2px;
84 | background-color: black;
85 | position: absolute;
86 | top: 2px;
87 | left: 1px;
88 | border-radius: 3px;
89 | transition: all 0.5s ease;
90 | transform: rotate(-40deg);
91 | }
92 |
93 | .eye2 {
94 | left: 66px;
95 | transform: rotate(-20deg);
96 | }
97 |
98 | .eye2::after {
99 | transform: rotate(40deg);
100 | left: -1px;
101 | }
102 |
103 | .eye1.happy, .eye2.happy {
104 | width: 7px;
105 | height: 7px;
106 | border-radius: 50%;
107 | left: 125px;
108 | }
109 |
110 | .eye2.happy {
111 | left: 170px;
112 | }
113 |
114 | .eye1.happy::after, .eye2.happy::after {
115 | opacity: 0;
116 | }
117 |
118 | .tongue {
119 | height: 4px;
120 | width: 9px;
121 | border-radius: 100%;
122 | background-color: #ffacb7;
123 | position: absolute;
124 | top: 5px;
125 | left: 3px;
126 | opacity: 0;
127 | transition: all 0.4s ease;
128 | }
129 |
130 | .tongue.happy {
131 | opacity: 1;
132 | }
--------------------------------------------------------------------------------
/fancybutton/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Fancy Button
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/fancybutton/styles.css:
--------------------------------------------------------------------------------
1 | * {
2 | margin: 0;
3 | padding: 0;
4 | box-sizing: border-box;
5 | }
6 |
7 | body {
8 | background-color: black;
9 | }
10 |
11 | .btn {
12 | position: absolute;
13 | top: 50%;
14 | left: 50%;
15 | transform: translate(-50%, -50%);
16 | background: none;
17 | color: white;
18 | width: 200px;
19 | height: 70px;
20 | border: 2px solid #0f4c81;
21 | font-size: 20px;
22 | border-radius: 5px;
23 | transition: 0.6s;
24 | overflow: hidden;
25 | outline: none;
26 | cursor: pointer;
27 | }
28 |
29 | .btn::before {
30 | content: "";
31 | position: absolute;
32 | display: block;
33 | left: 0;
34 | top: 0;
35 | width: 60px;
36 | height: 100%;
37 | background: rgba(255, 255, 255, 0.5);
38 | opacity: 0.5;
39 | filter: blur(30px);
40 | transform: translateX(-130px) skewX(-15deg);
41 | }
42 |
43 | .btn::after {
44 | content: "";
45 | position: absolute;
46 | display: block;
47 | left: 30px;
48 | top: 0;
49 | width:30px;
50 | height: 100%;
51 | background: rgba(255, 255, 255, 0.2);
52 | opacity: 0;
53 | filter: blur(30px);
54 | transform: translate(-100px) scaleX(-15deg);
55 | }
56 |
57 | .btn:hover {
58 | background-color: #0f4c81;
59 | }
60 |
61 | .btn:hover::before, .btn:hover::after {
62 | transform: translateX(300px) skewX(-15deg);
63 | opacity: 0.6;
64 | transition: 0.65s;
65 | }
66 |
67 | .btn:hover::after {
68 | opacity: 1;
69 | }
--------------------------------------------------------------------------------
/fancylogin/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Login Form
6 |
7 |
9 |
10 |
11 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/fancylogin/index.js:
--------------------------------------------------------------------------------
1 | const emailField = document.querySelector("#email")
2 | const passField = document.querySelector("#pass")
3 | const mouth = document.querySelector(".mouth")
4 | const leftEye = document.querySelector("#left")
5 | const rightEye = document.querySelector("#right")
6 | const buttonLogin = document.querySelector(".btn")
7 |
8 | emailField.addEventListener("focus", happy)
9 | passField.addEventListener("focus", hide)
10 | buttonLogin.addEventListener("focus", go)
11 |
12 | function happy() {
13 | mouth.style.animation = "first 0.4s forwards"
14 | }
15 |
16 | function hide() {
17 | leftEye.style.animation = "second 0.4s forwards"
18 | rightEye.style.animation = "second 0.4s forwards"
19 | }
20 |
21 | function go() {
22 | leftEye.style.animation = "last 0.4s forwards"
23 | rightEye.style.animation = "last 0.4s forwards"
24 | mouth.style.animation = "lastLast 0.4s forwards"
25 | }
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/fancylogin/styles.css:
--------------------------------------------------------------------------------
1 | * {
2 | margin: 0;
3 | padding: 0;
4 | box-sizing: border-box;
5 | }
6 | body {
7 | height: 100vh;
8 | font-family: 'Poppins', sans-serif;
9 | background-image: linear-gradient(to top right, #00dbdf, #dc06e4);
10 | display: flex;
11 | flex-direction: column;
12 | justify-content: center;
13 | align-items: center;
14 | }
15 | .form {
16 | width: 300px;
17 | height: 400px;
18 | position: relative;
19 | background-color: #fff;
20 | display: flex;
21 | flex-direction: column;
22 | justify-content: flex-start;
23 | border-radius: 15px;
24 | padding: 0 15px 0 15px;
25 | box-shadow: 0px 25px 36px 12px rgba(0, 0, 0, 0.51);
26 | }
27 | .form input {
28 | width: 100%;
29 | height: 50px;
30 | padding-top: 20px;
31 | color: #363636;
32 | border: none;
33 | background-color: #fff;
34 | border-bottom: 2px solid #9b9b9b;
35 | outline: none;
36 | }
37 |
38 | .form label {
39 | transform: translateY(-50px);
40 | pointer-events: none;
41 | }
42 | .contentEmail, .contentPass {
43 | position: absolute;
44 | top: 25px;
45 | color: #9b9b9b;
46 | transition: all 0.3s ease;
47 | }
48 |
49 | .form input:focus+.labelEmail .contentEmail,
50 | .form input:valid+.labelEmail .contentEmail {
51 | transform: translateY(-100%);
52 | font-size: 14px;
53 | color: #333;
54 | }
55 |
56 | .form input:focus+.labelPass .contentPass,
57 | .form input:valid+.labelPass .contentPass {
58 | transform: translateY(-100%);
59 | font-size: 14px;
60 | color: #333;
61 | }
62 |
63 | button {
64 | background-image: linear-gradient(to bottom right, #04d6dd, #f606ff);
65 | color: white;
66 | width: 150px;
67 | height: 40px;
68 | border: none;
69 | border-radius: 15px;
70 | display: flex;
71 | align-self: center;
72 | margin-top: 30px;
73 | justify-content: center;
74 | font-size: 16px;
75 | text-align: center;
76 | outline: none;
77 | cursor: pointer;
78 | transition: all 0.3s ease;
79 | }
80 |
81 | button:hover {
82 | transform: translateY(7px);
83 | }
84 |
85 | h1 {
86 | align-self: center;
87 | color: #333333;
88 | margin-bottom: 30px;
89 | }
90 |
91 | .faceContainer {
92 | width: 100px;
93 | height: 100px;
94 | border: none;
95 | border-radius: 50%;
96 | background-color: #fcbf1e;
97 | position: relative;
98 | top: 0%;
99 | left: 50%;
100 | transform: translate(-50%, -50%);
101 | }
102 |
103 | .eye {
104 | width: 10px;
105 | height: 10px;
106 | background-color: black;
107 | border: none;
108 | border-radius: 50%;
109 | position: absolute;
110 | top: 50%;
111 | left: 15%;
112 | }
113 | .eye:nth-child(2) {
114 | left: 75%;
115 | }
116 | .mouth {
117 | width: 25px;
118 | height: 30px;
119 | border-bottom: 3px solid black;
120 | border-radius: 0%;
121 | position: absolute;
122 | top: 45%;
123 | left: 37%;
124 | }
125 |
126 | @keyframes first {
127 | 0% {
128 | border-radius: 0%;
129 | } 100% {
130 | border-radius: 30%;
131 | }
132 | }
133 | @keyframes second {
134 | 0% {
135 | height: 10px;
136 | width: 10px;
137 | border-radius: 50%;
138 | } 100% {
139 | height: 2px;
140 | width: 10px;
141 | border-radius: 25%;
142 | }
143 | }
144 | @keyframes last {
145 | 0% {
146 | height: 2px;
147 | width: 10px;
148 | border-radius: 25%;
149 | } 100% {
150 | height: 10px;
151 | width: 10px;
152 | border-radius: 50%;
153 | }
154 | }
155 | @keyframes lastLast {
156 | 0% {
157 | border-radius: 30%;
158 | border-bottom: 3px solid black;
159 | } 100% {
160 | border-radius: 30%;
161 | border-bottom: 13px solid black;
162 | }
163 | }
--------------------------------------------------------------------------------
/fingers/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Hand Animation
7 |
8 |
9 |
10 |
11 |
12 |
15 |
18 |
21 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/fingers/styles.css:
--------------------------------------------------------------------------------
1 | * {
2 | margin: 0;
3 | padding: 0;
4 | box-sizing: border-box;
5 | }
6 |
7 | body {
8 | background-color: #ff6f5e;
9 | }
10 |
11 | .container {
12 | position: absolute;
13 | top: 50%;
14 | left: 50%;
15 | transform: translate(-50%, -50%);
16 | width: 400px;
17 | height: 300px;
18 | display: flex;
19 | justify-content: center;
20 | align-items: center;
21 | }
22 |
23 | .fingers {
24 | background-color: #f6d186;
25 | width: 45px;
26 | margin-right: 5px;
27 | border-radius: 15px 15px 20px 20px;
28 | position: relative;
29 | animation: tap 1.5s ease-out infinite;
30 | }
31 |
32 | .fingers:nth-child(1) {
33 | height: 130px;
34 | top: 5px;
35 | }
36 |
37 | .fingers:nth-child(2) {
38 | height: 150px;
39 | animation-delay: 0.1s;
40 | }
41 |
42 | .fingers:nth-child(3) {
43 | height: 170px;
44 | bottom: 5px;
45 | animation-delay: 0.2s;
46 | }
47 |
48 | .fingers:nth-child(4) {
49 | height: 150px;
50 | animation-delay: 0.3s;
51 | }
52 |
53 | #last {
54 | width: 60px;
55 | height: 45px;
56 | position: relative;
57 | top: 10px;
58 | background-color: #f6d186;
59 | border-radius: 0px 15px 40px 0px;
60 | animation: thumb 1.5s ease-in infinite;
61 | animation-delay: 0.4s;
62 | }
63 |
64 | .nails {
65 | width: 30px;
66 | height: 30px;
67 | border-radius: 50px 50px 15px 15px;
68 | background-color: #fcf7bb;
69 | position: absolute;
70 | bottom: 10px;
71 | left: 50%;
72 | transform: translateX(-50%);
73 | }
74 |
75 | .fingers::after, .fingers::before {
76 | content: "";
77 | position: absolute;
78 | width: 30px;
79 | height: 5px;
80 | background-color: #e6a157;
81 | border-radius: 5px;
82 | top: 10px;
83 | left: 50%;
84 | transform: translateX(-50%);
85 |
86 | }
87 |
88 | .fingers::before {
89 | top: 20px;
90 | }
91 |
92 | @keyframes tap {
93 | 0% {
94 | transform: scaleY(1) translateY(0px);
95 | }
96 | 20% {
97 | transform: scaleY(0.8) translateY(-30px);
98 | }
99 | 30% {
100 | transform: scaleY(0.8) translateY(-30px);
101 | }
102 | 40% {
103 | transform: scaleY(1) translateY(0px);
104 | }
105 | 100% {
106 | transform: scaleY(1) translateY(0px);
107 | }
108 | }
109 | @keyframes thumb {
110 | 0% {
111 | transform: scaleY(1) translateY(0);
112 | }
113 | 20% {
114 | transform: scaleY(0.9) translateY(-20px);
115 | }
116 | 30% {
117 | transform: scaleY(0.9) translateY(-20px);
118 | }
119 | 40% {
120 | transform: scaleY(1) translateY(0);
121 | }
122 | 100% {
123 | transform: scaleY(1) translateY(0);
124 | }
125 | }
126 |
--------------------------------------------------------------------------------
/followingEyes/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Following Eyes
7 |
8 |
9 |
10 |
11 |
32 |
33 |
34 |
35 |
--------------------------------------------------------------------------------
/followingEyes/index.js:
--------------------------------------------------------------------------------
1 | const eyes = document.querySelectorAll(".pupil")
2 | document.onmousemove = function() {
3 | var x = event.clientX * 100 / window.innerWidth + "%"
4 | var y = event.clientY * 100 / window.innerHeight + "%"
5 | eyes.forEach(eye => {
6 | eye.style.left = x;
7 | eye.style.top = y;
8 | eye.style.transform = "translate(-"+x+", -"+y+")"
9 | })
10 | }
--------------------------------------------------------------------------------
/followingEyes/styles.css:
--------------------------------------------------------------------------------
1 | * {
2 | margin: 0;
3 | padding: 0;
4 | box-sizing: border-box;
5 | }
6 |
7 | body {
8 | height: 100vh;
9 | background-color: #ffc83f;
10 | display: flex;
11 | justify-content: center;
12 | align-items: center;
13 | }
14 |
15 | .container {
16 | width: 200px;
17 | height: 120px;
18 | display: flex;
19 | flex-direction: column;
20 | align-items: center;
21 | justify-content: space-between;
22 | }
23 |
24 | .eyesContainer {
25 | width: 180px;
26 | height: 40px;
27 | display: flex;
28 | justify-content: space-between;
29 | align-items: center;
30 | }
31 |
32 | .eyes {
33 | width: 50px;
34 | height: 50px;
35 | background-color: #fff;
36 | border-radius: 50%;
37 | overflow: hidden;
38 | animation: blink 1.5s infinite;
39 | }
40 |
41 | .light {
42 | width: 10px;
43 | height: 10px;
44 | background-color: #fff;
45 | border-radius: 50%;
46 | position: absolute;
47 | top: 50%;
48 | left: 50%;
49 | transform: translateY(-100%);
50 | }
51 |
52 | .pupil {
53 | width: 30px;
54 | height: 30px;
55 | background-color: #000;
56 | border-radius: 50%;
57 | position: relative;
58 | }
59 |
60 | .mouth {
61 | background-color: #000;
62 | width: 90px;
63 | height: 60px;
64 | border-radius: 10px 10px 50px 50px;
65 | display: flex;
66 | flex-direction: column;
67 | align-items: center;
68 | overflow: hidden;
69 | position: relative;
70 | }
71 |
72 | .teeth {
73 | width: 50px;
74 | height: 30px;
75 | display: flex;
76 | justify-content: space-evenly;
77 | align-items: center;
78 | }
79 |
80 | .tooth1, .tooth2 {
81 | width: 20px;
82 | height: 20px;
83 | background-color: #fff;
84 | border-radius: 5px 5px 20px 20px;
85 | }
86 |
87 | .tongue {
88 | width: 60px;
89 | height: 30px;
90 | background-color: #ff5a00;
91 | border-radius: 50%;
92 | position: absolute;
93 | bottom: -15px;
94 | left: 10px;
95 | }
96 |
97 | @keyframes blink {
98 | 0% {
99 | height: 50px;
100 | }
101 | 35% {
102 | height: 50px;
103 | }
104 | 45% {
105 | height: 0px;
106 | }
107 | 55% {
108 | height: 50px;
109 | }
110 | 100% {
111 | height: 50px;
112 | }
113 | }
114 |
115 |
--------------------------------------------------------------------------------
/hamburger/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Hambuger menu effect
7 |
8 |
9 |
10 |
11 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/hamburger/styles.css:
--------------------------------------------------------------------------------
1 | .container {
2 | position: absolute;
3 | left: 50vw;
4 | top: 50vh;
5 | width: 30px;
6 | height: 30px;
7 | border: 3px solid black;
8 | border-radius: 5px;
9 | display: grid;
10 | justify-content: center;
11 | align-items: center;
12 | cursor: pointer;
13 | }
14 |
15 |
16 |
17 | #pile1,
18 | #pile2,
19 | #pile3 {
20 | width: 24px;
21 | height: 6px;
22 | background-color: black;
23 | border-radius: 2px;
24 | }
25 |
26 | #pile1 {
27 | transition: opacity 0.2s linear;
28 | }
29 |
30 | .container:hover #pile1 {
31 | opacity: 0%;
32 | }
33 |
34 | #pile2 {
35 | transition: all 0.2s linear;
36 | }
37 |
38 | .container:hover #pile2 {
39 | transform: rotate(45deg);
40 | }
41 |
42 | #pile3 {
43 | transition: all 0.2s linear;
44 | }
45 |
46 | .container:hover #pile3 {
47 | transform: translateY(-10px) rotate(-45deg);
48 | }
49 |
--------------------------------------------------------------------------------
/heartbeat/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Heartbeat Animation
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/heartbeat/styles.css:
--------------------------------------------------------------------------------
1 | .heart {
2 | width: 100px;
3 | height: 100px;
4 | background-color: red;
5 | position: relative;
6 | top: 150px;
7 | left: 150px;
8 | transform: rotate(-45deg);
9 | animation-name: beat;
10 | animation-duration: 1s;
11 | animation-iteration-count: infinite;
12 | }
13 |
14 |
15 | .heart::before,
16 | .heart::after {
17 | content: "";
18 | background-color: red;
19 | border-radius: 50%;
20 | height: 100px;
21 | position: absolute;
22 | width: 100px;
23 | bottom: 50%;
24 | animation-name: beat;
25 | animation-duration: 1s;
26 | animation-iteration-count: infinite;
27 | }
28 | .heart::after {
29 | top: 0;
30 | left: 50%;
31 | }
32 |
33 | @keyframes beat {
34 | 0% {
35 | width: 50px;
36 | height: 50px;
37 | }
38 | 40% {
39 | width: 50px;
40 | height: 50px;
41 | }
42 | 50% {
43 | width: 60px;
44 | height: 60px;
45 | }
46 | 60% {
47 | width: 50px;
48 | height: 50px;
49 | }
50 | 70% {
51 | width: 60px;
52 | height: 60px;
53 | }
54 | 80% {
55 | width: 50px;
56 | height: 50px;
57 | }
58 | 100% {
59 | width: 50px;
60 | height: 50px;
61 | }
62 | }
63 |
--------------------------------------------------------------------------------
/hero/egypt.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/webcodemode/instagramPosts/06e75a6a937bddb145104c999d13a5140cc10121/hero/egypt.jpg
--------------------------------------------------------------------------------
/hero/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Hero
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | Discover Egypt
13 |
14 |
15 | We offer the best trips here!
16 |
17 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/hero/styles.css:
--------------------------------------------------------------------------------
1 | body {
2 | margin: 0;
3 | padding: 0;
4 | }
5 | .hero {
6 | position: relative;
7 | width: 100vw;
8 | height: 100vh;
9 | display: flex;
10 | justify-content: center;
11 | align-items: center;
12 | }
13 | .hero::before {
14 | content: "";
15 | position: absolute;
16 | top: 0;
17 | left: 0;
18 | width: 100%;
19 | height: 100%;
20 | background: url(egypt.jpg);
21 | background-repeat: no-repeat;
22 | background-size: cover;
23 | background-position: center center;
24 | filter: brightness(60%);
25 | }
26 |
27 | .hero-content {
28 | position: relative;
29 | font-family: "Monserrat", sans-serif;
30 | color: white;
31 | text-align: center;
32 | margin: 10px;
33 | }
34 | .hero-title {
35 | font-size: 48px;
36 | font-weight: 600;
37 | margin-bottom: 0;
38 | }
39 | .hero-subtitle {
40 | font-size: 32px;
41 | font-weight: 200;
42 | margin-top: 16px;
43 | }
44 |
45 | .hero-button {
46 | background-color: #7c0404;
47 | color: white;
48 | border: 1px solid #c42a2a;
49 | margin-top: 80px;
50 | padding: 15px 30px;
51 | font-family: "Monserrat", sans-serif;
52 | font-size: 18px;
53 | font-weight: 200;
54 | cursor: pointer;
55 | transition: all 0.1s linear;
56 | }
57 | .hero-button:hover {
58 | background-color: #eb2626;
59 | border: 1px solid #df6c6c;
60 | }
--------------------------------------------------------------------------------
/lightSwitch/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Light Switch
6 |
7 |
8 |
9 |
10 |
11 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/lightSwitch/index.js:
--------------------------------------------------------------------------------
1 | const switchBtn = document.querySelector(".switchBtn");
2 | const container = document.querySelector(".container");
3 | const threadEnd = document.querySelector(".threadEnd");
4 |
5 | switchBtn.addEventListener("click", () => container.classList.toggle("on"));
6 |
7 | threadEnd.addEventListener("click", () => {
8 | if(switchBtn.checked) {
9 | switchBtn.checked = false;
10 | container.classList.toggle("on");
11 | } else {
12 | switchBtn.checked = true;
13 | container.classList.toggle("on");
14 | }
15 | })
--------------------------------------------------------------------------------
/lightSwitch/styles.css:
--------------------------------------------------------------------------------
1 | * {
2 | margin: 0;
3 | padding: 0;
4 | box-sizing: border-box;
5 | }
6 |
7 | body {
8 | background-color: #1b2031;
9 | display: flex;
10 | height: 100vh;
11 | display: flex;
12 | justify-content: center;
13 | align-items: center;
14 | }
15 |
16 | .container {
17 | position: relative;
18 | top: 50px;
19 | }
20 |
21 | input {
22 | position: relative;
23 | width: 200px;
24 | height: 100px;
25 | background-color: #3d3459;
26 | border-radius: 60px;
27 | box-shadow: inset 0 0 10px rgba(0, 0, 0, 0.2);
28 | -webkit-appearance: none;
29 | outline: none;
30 | cursor: pointer;
31 | transition: all 0.5s ease-in-out;
32 | }
33 |
34 | input::before {
35 | content: "";
36 | position: absolute;
37 | width: 100px;
38 | height: 100px;
39 | border-radius: 50%;
40 | top: 0;
41 | left: 0;
42 | background-color: #817d96;
43 | transform: scale(0.9);
44 | box-shadow: 0 4px 10px rgba(0, 0, 0, 0.2);
45 | transition: 0.5s;
46 | }
47 |
48 | input:checked::before {
49 | left: 100px;
50 | background-color: #fff;
51 | box-shadow: 0 0 60px 30px #699ba9, 0 0 100px 60px #303f52;
52 | }
53 |
54 | .thread {
55 | position: relative;
56 | width: 5px;
57 | height: 100px;
58 | background-color: #323941;
59 | left: 35px;
60 | bottom: 60px;
61 | z-index: -1;
62 | animation: off 0.5s ease;
63 | }
64 |
65 | .threadShadow {
66 | position: absolute;
67 | width: 50%;
68 | height: 100%;
69 | background-color: #39414a;
70 | right: 0;
71 | opacity: 0;
72 | transition: all 0.4s ease;
73 | }
74 |
75 | .threadEnd {
76 | position: relative;
77 | width: 25px;
78 | height: 40px;
79 | background-color: #3a309b;
80 | bottom: 65px;
81 | left: 25px;
82 | border-radius: 20px 20px 10px 10px;
83 | overflow: hidden;
84 | cursor: pointer;
85 | transition: all 0.4s ease;
86 | animation: off 0.5s ease;
87 | }
88 |
89 | .threadEndShadow {
90 | width: 0;
91 | height: 0;
92 | border-top: 30px solid #8378ff;
93 | border-left: 25px solid transparent;
94 | opacity: 0;
95 | transition: all 0.4s ease;
96 | }
97 |
98 | .container.on .threadEndShadow, .container.on .threadShadow{
99 | opacity: 1;
100 | }
101 |
102 | .container.on .threadEnd, .container.on .thread {
103 | animation: on 0.8s ease;
104 | }
105 |
106 | .container.on .threadEnd {
107 | background-color: #695dff;
108 | }
109 |
110 | @keyframes on {
111 | 0% {
112 | transform: translateY(0px);
113 | }
114 | 25% {
115 | transform: translateY(20px);
116 | }
117 | 50% {
118 | transform: translateY(-10px);
119 | }
120 | 65% {
121 | transform: translateY(0px);
122 | }
123 | 80% {
124 | transform: translateY(-5px);
125 | }
126 | 95% {
127 | transform: translateY(0px);
128 | }
129 | 100% {
130 | transform: translateY(0px);
131 | }
132 | }
133 |
134 | @keyframes off {
135 | 0% {
136 | transform: translateY(0px);
137 | }
138 | 50% {
139 | transform: translateY(20px);
140 | }
141 | 100% {
142 | transform: translateY(0px);
143 | }
144 | }
145 |
146 |
--------------------------------------------------------------------------------
/loadbars/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Button Effect
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/loadbars/styles.css:
--------------------------------------------------------------------------------
1 | body {
2 | margin: 0;
3 | padding: 0;
4 | background-color: #c02739;
5 | }
6 |
7 | .loading {
8 | position: absolute;
9 | height: 50px;
10 | top: 50%;
11 | left: 50%;
12 | display: flex;
13 | align-items: center;
14 | transform: translate(-50%, -50%)
15 | }
16 |
17 | .bars {
18 | height: 50px;
19 | width: 7px;
20 | margin: 0 4px;
21 | border-radius: 10px;
22 | background-color: white;
23 | animation: loading 0.8s infinite;
24 | }
25 |
26 | .bars:nth-child(2) {
27 | animation-delay: 0.1s;
28 | }
29 | .bars:nth-child(3) {
30 | animation-delay: 0.2s;
31 | }
32 | .bars:nth-child(4) {
33 | animation-delay: 0.3s;
34 | }
35 | .bars:nth-child(5) {
36 | animation-delay: 0.4s;
37 | }
38 | .bars:nth-child(6) {
39 | animation-delay: 0.5s;
40 | }
41 | .bars:nth-child(7) {
42 | animation-delay: 0.6s;
43 | }
44 | .bars:nth-child(8) {
45 | animation-delay: 0.7s;
46 | }
47 | @keyframes loading {
48 | 0% {
49 | height: 0;
50 | }
51 | 50% {
52 | height: 50px;
53 | }
54 | 100%{
55 | height: 0;
56 | }
57 | }
--------------------------------------------------------------------------------
/loading/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Loading Animation
5 |
6 |
7 |
8 |
9 |
10 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/loading/styles.css:
--------------------------------------------------------------------------------
1 | body {
2 | height: 100vh;
3 | background-color: #21242d;
4 | display: flex;
5 | align-items: center;
6 | justify-content: center;
7 | }
8 |
9 | .loading div {
10 | width: 25px;
11 | height: 25px;
12 | margin: 0 5px;
13 | background-color: #73cd9e;
14 | border-radius: 50%;
15 | display: inline-block;
16 | animation-name: dots;
17 | animation-duration: 1.5s;
18 | animation-iteration-count: infinite;
19 | animation-timing-function: ease-in-out;
20 | }
21 |
22 | .loading div:nth-child(2) {
23 | animation-delay: 0.2s;
24 | }
25 |
26 | .loading div:nth-child(3) {
27 | animation-delay: 0.4s;
28 | }
29 |
30 | @keyframes dots {
31 | 30% {
32 | transform: translateY(20px);
33 | }
34 | 50% {
35 | transform: translateY(0px);
36 | }
37 | }
--------------------------------------------------------------------------------
/loadingsquare/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Loading Squares
7 |
8 |
9 |
10 |
11 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/loadingsquare/styles.css:
--------------------------------------------------------------------------------
1 | body {
2 | margin: 0;
3 | padding: 0;
4 | box-sizing: border-box;
5 | background-color: #1b262c;
6 | }
7 |
8 | .container {
9 | width: 300px;
10 | height: 300px;
11 | position: absolute;
12 | top: 70%;
13 | left: 50%;
14 | transform: translate(-50%, -50%);
15 | }
16 |
17 | .container div {
18 | width: 100px;
19 | height: 100px;
20 | border-radius: 10px;
21 | position: absolute;
22 | animation: moving 2s linear infinite;
23 | }
24 |
25 | .container div:nth-child(1) {
26 | background-color: #c81912;
27 | }
28 |
29 | .container div:nth-child(2) {
30 | background-color: #ffa41b;
31 | animation-delay: 0.667s;
32 | }
33 |
34 | .container div:nth-child(3) {
35 | background-color: #216353;
36 | animation-delay: 1.33s;
37 | }
38 |
39 | @keyframes moving {
40 | 0% {
41 | top: 0%;
42 | left: 0%;
43 | }
44 | 12.5% {
45 | top: 0%;
46 | left: 50%;
47 | }
48 | 25% {
49 | top: 0%;
50 | left: 50%;
51 | }
52 | 37.5% {
53 | top: 50%;
54 | left: 50%;
55 | }
56 | 50% {
57 | top: 50%;
58 | left: 50%;
59 | }
60 | 62.5% {
61 | top: 50%;
62 | left: 0%;
63 | }
64 | 75% {
65 | top: 50%;
66 | left: 0%;
67 | }
68 | 87.5% {
69 | top: 0%;
70 | left: 0%;
71 | }
72 | 100% {
73 | top: 0%;
74 | left: 0%;
75 | }
76 | }
--------------------------------------------------------------------------------
/login/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Login Form
7 |
8 |
9 |
10 |
11 |
12 |
Login
13 |
14 |
16 |
17 |
19 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/login/styles.css:
--------------------------------------------------------------------------------
1 | * {
2 | margin: 0;
3 | padding: 0;
4 | box-sizing: border-box;
5 | }
6 |
7 | body {
8 | height: 100vh;
9 | font-family: sans-serif;
10 | background-color: #0c9463;
11 | display: flex;
12 | flex-direction: column;
13 | justify-content: center;
14 | align-items: center;
15 | }
16 |
17 | .form {
18 | width: 300px;
19 | height: 400px;
20 | position: relative;
21 | background-color: #363636;
22 | display: flex;
23 | flex-direction: column;
24 | justify-content: center;
25 | border-radius: 15px;
26 | padding: 0 15px 0 15px;
27 | box-shadow: 0px 25px 36px 12px rgba(0, 0, 0, 0.51);
28 | }
29 |
30 | .form input {
31 | width: 100%;
32 | height: 50px;
33 | padding-top: 20px;
34 | color: white;
35 | border: none;
36 | background-color: #363636;
37 | border-bottom: 2px solid white;
38 | outline: none;
39 | }
40 |
41 | .form label {
42 | transform: translateY(-50px);
43 | pointer-events: none;
44 | }
45 |
46 | .contentEmail, .contentPass {
47 | position: absolute;
48 | top: 25px;
49 | color: white;
50 | transition: all 0.3s ease;
51 | }
52 |
53 | .form input:focus+.labelEmail .contentEmail,
54 | .form input:valid+.labelEmail .contentEmail {
55 | transform: translateY(-100%);
56 | font-size: 14px;
57 | color: #0c9463;
58 | }
59 |
60 | .form input:focus+.labelPass .contentPass,
61 | .form input:valid+.labelPass .contentPass {
62 | transform: translateY(-100%);
63 | font-size: 14px;
64 | color: #0c9463;
65 | }
66 |
67 | button {
68 | background-color: #0c9463;
69 | color: white;
70 | width: 150px;
71 | height: 40px;
72 | border: none;
73 | border-radius: 15px;
74 | display: flex;
75 | align-self: center;
76 | margin-top: 30px;
77 | justify-content: center;
78 | font-size: 16px;
79 | text-align: center;
80 | outline: none;
81 | cursor: pointer;
82 | transition: all 0.3s ease;
83 | }
84 | button:hover {
85 | transform: translateY(10px);
86 | }
87 | h1 {
88 | align-self: center;
89 | color: white;
90 | margin-bottom: 30px;
91 | }
--------------------------------------------------------------------------------
/memory/bootstrap.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/webcodemode/instagramPosts/06e75a6a937bddb145104c999d13a5140cc10121/memory/bootstrap.png
--------------------------------------------------------------------------------
/memory/cardBack.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/webcodemode/instagramPosts/06e75a6a937bddb145104c999d13a5140cc10121/memory/cardBack.png
--------------------------------------------------------------------------------
/memory/github.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/webcodemode/instagramPosts/06e75a6a937bddb145104c999d13a5140cc10121/memory/github.png
--------------------------------------------------------------------------------
/memory/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Memory Card Game
6 |
7 |
8 |
9 |
10 |
11 |

12 |

13 |
14 |
15 |

16 |

17 |
18 |
19 |

20 |

21 |
22 |
23 |

24 |

25 |
26 |
27 |

28 |

29 |
30 |
31 |

32 |

33 |
34 |
35 |

36 |

37 |
38 |
39 |

40 |

41 |
42 |
43 |

44 |

45 |
46 |
47 |

48 |

49 |
50 |
51 |

52 |

53 |
54 |
55 |

56 |

57 |
58 |
59 |

60 |

61 |
62 |
63 |

64 |

65 |
66 |
67 |

68 |

69 |
70 |
71 |

72 |

73 |
74 |
75 |
76 |
77 |
--------------------------------------------------------------------------------
/memory/index.js:
--------------------------------------------------------------------------------
1 | const cards = document.querySelectorAll(".memoryCard");
2 | var isFlipped = false;
3 | var firstCard, secondCard;
4 | var lock = false;
5 |
6 | cards.forEach(card => card.addEventListener("click", flip));
7 |
8 | function flip() {
9 | if (lock) return;
10 | if (this === firstCard) return;
11 | this.classList.add("flip");
12 | if (!isFlipped) {
13 | isFlipped = true;
14 | firstCard = this;
15 | return;
16 | }
17 | secondCard = this;
18 | check();
19 | }
20 |
21 | function check() {
22 | var isMatch = firstCard.dataset.image === secondCard.dataset.image;
23 | isMatch ? succes() : fail();
24 | }
25 |
26 | function succes() {
27 | firstCard.removeEventListener("click", flip);
28 | secondCard.removeEventListener("click", flip);
29 | reset();
30 | }
31 |
32 | function fail() {
33 | lock = true;
34 | setTimeout(() => {
35 | firstCard.classList.remove("flip");
36 | secondCard.classList.remove("flip");
37 | reset();
38 | }, 1000);
39 | }
40 |
41 | function reset() {
42 | [isFlipped, lock] = [false, false];
43 | [firstCard, secondCard] = [null, null];
44 | }
45 |
46 | (function suffle() {
47 | cards.forEach(card => {
48 | var position = Math.floor(Math.random() * 16);
49 | card.style.order = position;
50 | });
51 | })();
--------------------------------------------------------------------------------
/memory/javascript.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/webcodemode/instagramPosts/06e75a6a937bddb145104c999d13a5140cc10121/memory/javascript.png
--------------------------------------------------------------------------------
/memory/jquery.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/webcodemode/instagramPosts/06e75a6a937bddb145104c999d13a5140cc10121/memory/jquery.png
--------------------------------------------------------------------------------
/memory/nodejs.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/webcodemode/instagramPosts/06e75a6a937bddb145104c999d13a5140cc10121/memory/nodejs.png
--------------------------------------------------------------------------------
/memory/react.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/webcodemode/instagramPosts/06e75a6a937bddb145104c999d13a5140cc10121/memory/react.png
--------------------------------------------------------------------------------
/memory/sass.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/webcodemode/instagramPosts/06e75a6a937bddb145104c999d13a5140cc10121/memory/sass.png
--------------------------------------------------------------------------------
/memory/styles.css:
--------------------------------------------------------------------------------
1 | * {
2 | margin: 0;
3 | padding: 0;
4 | box-sizing: border-box;
5 | }
6 |
7 | body {
8 | height: 100vh;
9 | background-color: #ff3434;
10 | display: flex;
11 | }
12 |
13 | .gameContainer {
14 | width: 600px;
15 | height: 600px;
16 | margin: auto;
17 | display: flex;
18 | flex-wrap: wrap;
19 | perspective: 1000px;
20 | }
21 |
22 | .memoryCard {
23 | width: 23%;
24 | height: 23%;
25 | margin: 5px;
26 | position: relative;
27 | transform-style: preserve-3d;
28 | transition: transform 0.3s;
29 | cursor: pointer;
30 | }
31 |
32 | .memoryCard:active {
33 | transform: scale(0.95);
34 | transition: transform 0.2s ease-in-out;
35 | }
36 |
37 | .memoryCard.flip {
38 | transform: rotateY(180deg);
39 | cursor: pointer;
40 | }
41 |
42 | .front, .back {
43 | background-color: #ff5252;
44 | width: 100%;
45 | height: 100%;
46 | padding: 10px;
47 | border-radius: 10px;
48 | position: absolute;
49 | backface-visibility: hidden;
50 | }
51 |
52 | .front {
53 | transform: rotateY(180deg);
54 | }
--------------------------------------------------------------------------------
/memory/vscode.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/webcodemode/instagramPosts/06e75a6a937bddb145104c999d13a5140cc10121/memory/vscode.png
--------------------------------------------------------------------------------
/monday/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Lazy Monday
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/monday/styles.css:
--------------------------------------------------------------------------------
1 | * {
2 | margin: 0;
3 | padding: 0;
4 | box-sizing: border-box;
5 | }
6 |
7 | body {
8 | background-color: #ffd31d;
9 | height: 100vh;
10 | display: flex;
11 | }
12 |
13 | .container {
14 | margin: auto;
15 | width: 300px;
16 | height: 300px;
17 | display: flex;
18 | flex-direction: column;
19 | justify-content: space-evenly;
20 | align-items: center;
21 | position: relative;
22 | }
23 |
24 | .headChar {
25 | width: 50px;
26 | height: 50px;
27 | background-color: white;
28 | border-radius: 50%;
29 | position: relative;
30 | left: 35px;
31 | top: 20px;
32 | animation: headChange 1s infinite 1.6s ease-in;
33 | }
34 |
35 | .bodyChar {
36 | width: 40px;
37 | height: 100px;
38 | background-color: white;
39 | border-radius: 60px 10px 0 0;
40 | animation: bodyChange 1s infinite 1.6s ease-in;
41 | }
42 |
43 | .firstLeg, .secondLeg {
44 | width: 35px;
45 | height: 10px;
46 | background-color: white;
47 | border-radius: 20px 50px 50px 20px;
48 | position: relative;
49 | top: 55px;
50 | left: 20px;
51 | animation: walk 2s infinite linear;
52 | }
53 |
54 | .secondLeg {
55 | top: 25px;
56 | animation-delay: 1s;
57 | }
58 |
59 | .shadowChar {
60 | width: 100px;
61 | height: 10px;
62 | background-color: rgba(197, 82, 82, 0.2);
63 | border-radius: 50%;
64 | animation: shadowChange 1s infinite 1.6s linear;
65 | }
66 |
67 | @keyframes headChange {
68 | 0% {
69 | transform: translateY(0px);
70 | }
71 | 50% {
72 | transform: translateY(7px);
73 | }
74 | 100% {
75 | transform: translateY(0px);
76 | }
77 | }
78 |
79 | @keyframes bodyChange {
80 | 0% {
81 | transform: translateY(0px);
82 | }
83 | 50% {
84 | transform: translateY(3px);
85 | }
86 | 100% {
87 | transform: translateY(0px);
88 | }
89 | }
90 |
91 | @keyframes walk {
92 | 0% {
93 | transform: translateX(0px) rotate(0deg);
94 | }
95 | 20% {
96 | transform: translateX(-20px) rotate(0deg);
97 | }
98 | 40% {
99 | transform: translate(-40px, 0px) rotate(0deg);
100 | }
101 | 60% {
102 | transform: translate(-30px, -10px) rotate(35deg);
103 | }
104 | 90% {
105 | transform: translate(10px, -7px) rotate(-35deg);
106 | }
107 | 100% {
108 | transform: translateX(0px);
109 | }
110 | }
111 |
112 | @keyframes shadowChange {
113 | 0% {
114 | width: 100px;
115 | }
116 | 50% {
117 | width: 110px;
118 | }
119 | 100% {
120 | width: 100px;
121 | }
122 | }
--------------------------------------------------------------------------------
/navbar/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Dropdown Navbar
6 |
7 |
9 |
10 |
11 |
55 |
56 |
--------------------------------------------------------------------------------
/navbar/styles.css:
--------------------------------------------------------------------------------
1 | * {
2 | margin: 0;
3 | padding: 0;
4 | box-sizing: border-box;
5 | outline: none;
6 | font-family: 'Poppins', sans-serif;
7 | }
8 | body {
9 | display: flex;
10 | flex-direction: column;
11 | align-self: center;
12 | }
13 | #navBar {
14 | background-color: #212121;
15 | border-bottom: 1px solid #212121;
16 | }
17 | #navBar ul {
18 | display: flex;
19 | justify-content: center;
20 | }
21 | li.menuElements {
22 | background-color: #212121;
23 | }
24 | #navBar ul li a {
25 | color: white;
26 | text-decoration: none;
27 | width: 100%;
28 | }
29 | #navBar ul li a:first-of-type {
30 | text-align: center;
31 | }
32 |
33 | /* The dropmenu */
34 | #navBar ul li ul {
35 | flex-direction: column;
36 | }
37 | #navBar ul li ul li a {
38 | padding-left: 10px;
39 | width: 100%;
40 | text-align: left !important;
41 | }
42 | #navBar ul li ul li {
43 | display: none;
44 | background-color: #212121;
45 | z-index: 1;
46 | opacity: 0;
47 | align-items: flex-start;
48 | justify-content: center;
49 | font-size: 14px;
50 | padding: 20px 0 20px 0;
51 | }
52 | #navBar ul li:hover ul li {
53 | display: flex;
54 | animation: load 0.3s forwards;
55 | }
56 | @keyframes load {
57 | 0% {
58 | transform: translateY(40px) scale(1.3);
59 | }
60 | 100% {
61 | opacity: 1;
62 | transform: translateY(0px) scale(1);
63 | }
64 | }
65 |
66 | #navBar ul li ul li:first-child {
67 | animation-delay: 0s;
68 | }
69 | #navBar ul li ul li:nth-child(2) {
70 | animation-delay: 0.05s;
71 | }
72 | #navBar ul li ul li:nth-child(3) {
73 | animation-delay: 0.1s;
74 | }
75 | #navBar ul li ul li:last-child {
76 | animation-delay: 0.15s;
77 | }
78 | #navBar ul li {
79 | list-style-type: none;
80 | width: 200px;
81 | height: 35px;
82 | padding-top: 5px;
83 | display: flex;
84 | justify-content: flex-start;
85 | align-items: center;
86 | flex-direction: column;
87 | position: relative;
88 | }
89 |
90 | /* The line effect for the items from second navigation bar */
91 |
92 | #navBar ul .menuElements::before {
93 | content: "";
94 | display: block;
95 | height: 4px;
96 | background-color: white;
97 | position: absolute;
98 | top: 0;
99 | left: 0;
100 | width: 0%;
101 | transition: all 0.3s ease-in-out;
102 | }
103 | #navBar ul .menuElements:hover::before {
104 | width: 100%;
105 | }
106 | .submenu li::before {
107 | content: "";
108 | display: block;
109 | height: 2px;
110 | background-color: white;
111 | position: absolute;
112 | bottom: 0;
113 | left: 0;
114 | width: 0%;
115 | transition: all 0.3s ease-in-out;
116 | }
117 | .submenu li:hover::before {
118 | width: 100%;
119 | }
--------------------------------------------------------------------------------
/navigation/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Animated Navigation Bar
6 |
7 |
9 |
10 |
11 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/navigation/index.js:
--------------------------------------------------------------------------------
1 | const hamburger = document.querySelector(".hamburger");
2 | const navLinks = document.querySelector(".navLinks");
3 | const links = document.querySelectorAll(".navLinks li");
4 | const bars = document.querySelectorAll(".bar")
5 |
6 | hamburger.addEventListener("click", () => {
7 | navLinks.classList.toggle("show");
8 | links.forEach(link => {
9 | link.classList.toggle("hide");
10 | });
11 | bars.forEach(bars => {
12 | bars.classList.toggle("change")
13 | })
14 | });
15 |
--------------------------------------------------------------------------------
/navigation/styles.css:
--------------------------------------------------------------------------------
1 | * {
2 | margin: 0;
3 | padding: 0;
4 | box-sizing: border-box;
5 | }
6 |
7 | body {
8 | font-family: 'Poppins', sans-serif;
9 | }
10 |
11 | nav {
12 | height: 10vh;
13 | background: #c81912;
14 | position: relative;
15 | }
16 |
17 | .navLinks {
18 | display: flex;
19 | list-style: none;
20 | justify-content: space-around;
21 | align-items: center;
22 | margin-left: auto;
23 | position: fixed;
24 | background: #c81912;
25 | height: 100vh;
26 | width: 100%;
27 | flex-direction: column;
28 | clip-path: circle(0px at 90% -10%);
29 | transition: all 0.5s ease-out;
30 | pointer-events: none;
31 | }
32 |
33 | .navLinks li a {
34 | color: white;
35 | text-decoration: none;
36 | font-size: 30px;
37 | }
38 |
39 | .bar {
40 | width: 30px;
41 | height: 5px;
42 | background: white;
43 | margin: 5px;
44 | border-radius: 3px;
45 | transition: all 0.4s linear;
46 | }
47 |
48 | .hamburger {
49 | position: absolute;
50 | cursor: pointer;
51 | right: 5%;
52 | top: 50%;
53 | transform: translate(-5%, -50%);
54 | z-index: 2;
55 | }
56 |
57 | .navLinks.show {
58 | clip-path: circle(1000px at 90% -10%);
59 | pointer-events: all;
60 | }
61 |
62 | .navLinks li {
63 | opacity: 0;
64 | }
65 |
66 | .navLinks li:nth-child(1) {
67 | transition: all 0.5s ease 0.2s;
68 | }
69 |
70 | .navLinks li:nth-child(2) {
71 | transition: all 0.5s ease 0.4s;
72 | }
73 |
74 | .navLinks li:nth-child(3) {
75 | transition: all 0.5s ease 0.6s;
76 | }
77 |
78 | li.hide {
79 | opacity: 1;
80 | }
81 |
82 | div.change:nth-child(1){
83 | opacity: 0%;
84 | }
85 |
86 | div.change:nth-child(2) {
87 | transform: rotate(45deg);
88 | }
89 |
90 | div.change:nth-child(3) {
91 | transform: translateY(-10px) rotate(-45deg);
92 | }
--------------------------------------------------------------------------------
/push/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Push me
7 |
8 |
9 |
10 |
11 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/push/styles.css:
--------------------------------------------------------------------------------
1 | * {
2 | margin: 0;
3 | padding: 0;
4 | box-sizing: border-box;
5 | }
6 |
7 | .container {
8 | width: 300px;
9 | height: 300px;
10 | position: absolute;
11 | top: 50%;
12 | left: 50%;
13 | transform: translate(-50%, -50%);
14 | background-color: #e8d4b4;
15 | }
16 |
17 | .circle {
18 | border-radius: 50%;
19 | width: 100px;
20 | height: 50px;
21 | background-color: #ff2626;
22 | position: relative;
23 | top: 50%;
24 | left: 50%;
25 | transform: translate(-50%, -30%);
26 | z-index: 3;
27 | transition: all 0.2s ease-in-out;
28 | }
29 |
30 | .firstElement {
31 | box-sizing: border-box;
32 | border-radius: 15px 15px 50% 50%;
33 | background-color: #c21d1d;
34 | width: 100px;
35 | height: 50px;
36 | position: absolute;
37 | top: 50%;
38 | left: 50%;
39 | transform: translate(-50%);
40 | z-index: 1;
41 | }
42 |
43 | .secondElement {
44 | box-sizing: border-box;
45 | border-radius: 50%;
46 | background-color: #dbdbdb;
47 | width: 120px;
48 | height: 60px;
49 | position: absolute;
50 | top: 50%;
51 | left: 50%;
52 | transform: translate(-50%);
53 | }
54 |
55 | .thirdElement {
56 | box-sizing: border-box;
57 | border-radius: 50%;
58 | background-color: #5b5656;
59 | width: 120px;
60 | height: 60px;
61 | position: absolute;
62 | top: 50%;
63 | left: 50%;
64 | transform: translate(-50%, 10%);
65 | z-index: -1;
66 | }
67 |
68 | .circle:active {
69 | transform: translate(-50%, -21%)
70 | }
--------------------------------------------------------------------------------
/rating/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Rating Animation
6 |
7 |
9 |
11 |
12 |
13 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/rating/index.js:
--------------------------------------------------------------------------------
1 | const mouth = document.querySelector(".mouth")
2 | const stars = document.querySelectorAll("label")
3 |
4 | for(var i=0; i
2 |
3 |
4 |
5 |
6 | Share button
7 |
8 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/share/index.js:
--------------------------------------------------------------------------------
1 | const button = document.querySelector(".container")
2 | const bar1 = document.querySelector(".bar1")
3 | const bar2 = document.querySelector(".bar2")
4 | const facebook = document.querySelector(".facebook")
5 | const instagram = document.querySelector(".instagram")
6 | const linkedin = document.querySelector(".linkedin")
7 | const logos = document.querySelectorAll("i")
8 | const allElements = [button, bar1, bar2, facebook, instagram, linkedin, logos[0], logos[1], logos[2]]
9 |
10 | button.addEventListener("click", expand)
11 |
12 | function expand() {
13 | allElements.forEach(element => element.classList.toggle("exp"))
14 | }
--------------------------------------------------------------------------------
/share/styles.css:
--------------------------------------------------------------------------------
1 | body {
2 | background: linear-gradient(to right, #abbaab, #ffffff);
3 | height: 100vh;
4 | display: flex;
5 | align-items: center;
6 | justify-content: center;
7 | }
8 |
9 | .container {
10 | width: 130px;
11 | height: 130px;
12 | border-radius: 50%;
13 | background: linear-gradient(to right, #fdc830, #f37335);
14 | display: flex;
15 | justify-content: center;
16 | align-items: center;
17 | cursor: pointer;
18 | transition: all 0.3s ease-in-out;
19 | }
20 |
21 | .bar1, .bar2{
22 | width: 50px;
23 | height: 7px;
24 | background-color: white;
25 | transform: translate(-5px, 10px) rotate(25deg);
26 | transition: all 0.3s ease-in-out;
27 | border-radius: 10px;
28 | }
29 |
30 | .bar2 {
31 | transform: translate(-5px, -7px) rotate(-25deg);
32 | position: absolute;
33 | }
34 |
35 | .container div {
36 | display: flex;
37 | justify-content: center;
38 | align-items: center;
39 | }
40 |
41 | .container div i {
42 | font-size: 0;
43 | opacity: 0;
44 | transition: all 0.3s ease-in-out;
45 | }
46 |
47 | .facebook, .instagram, .linkedin {
48 | width: 20px;
49 | height: 20px;
50 | background-color: white;
51 | border-radius: 50%;
52 | position: absolute;
53 | transition: all 0.3s ease-in-out;
54 | transform: translate(15px, -18px);
55 | }
56 |
57 | .instagram {
58 | transform: translateX(-20px);
59 | }
60 |
61 | .linkedin {
62 | transform: translate(15px, 18px);
63 | }
64 |
65 | .facebook.exp, .instagram.exp, .linkedin.exp {
66 | transform: translate(80px, -80px);
67 | width: 100px;
68 | height: 100px;
69 | box-shadow: 0px 0px 5px 0px rgba(0,0,0,0.5);
70 | }
71 |
72 | .facebook.exp:hover {
73 | background-color: #4167b2;
74 | }
75 |
76 | .facebook.exp:hover i, .instagram.exp:hover i, .linkedin.exp:hover i {
77 | color: white;
78 | }
79 |
80 | .instagram.exp {
81 | transform: translateX(-100px);
82 | }
83 |
84 | .instagram.exp:hover {
85 | background-color: #d40064
86 | }
87 |
88 | .linkedin.exp {
89 | transform: translate(80px, 80px);
90 | }
91 |
92 | .linkedin.exp:hover {
93 | background-color: #0274b3;
94 | }
95 |
96 | .bar1.exp, .bar2.exp {
97 | transform: rotate(45deg);
98 | width: 30px;
99 | height: 5px;
100 | }
101 |
102 | .bar2.exp {
103 | transform: rotate(-45deg);
104 | }
105 |
106 | .container.exp {
107 | width: 60px;
108 | height: 60px;
109 | }
110 |
111 | .container div i.exp {
112 | opacity: 1;
113 | font-size: 60px;
114 | }
--------------------------------------------------------------------------------
/spinner/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Loading Spinner
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/spinner/styles.css:
--------------------------------------------------------------------------------
1 | * {
2 | margin: 0;
3 | padding: 0;
4 | box-sizing: border-box;
5 | }
6 |
7 | body {
8 | background-color: #fe346e;
9 | }
10 |
11 | .spinner:before {
12 | content: "";
13 | position: absolute;
14 | top: 50%;
15 | left: 50%;
16 | margin-top: -50px;
17 | margin-left: -50px;
18 | border-top: 3px solid #ffd4de;
19 | border-right: 3px solid transparent;
20 | border-radius: 50%;
21 | width: 100px;
22 | height: 100px;
23 | animation: spin 1s linear infinite;
24 | }
25 |
26 | @keyframes spin {
27 | to {
28 | transform: rotate(360deg);
29 | }
30 | }
--------------------------------------------------------------------------------
/square/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Rotating Square
7 |
8 |
9 |
10 |
11 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/square/styles.css:
--------------------------------------------------------------------------------
1 | body {
2 | margin: 0;
3 | padding: 0;
4 | box-sizing: border-box;
5 | }
6 |
7 | .container {
8 | width: 400px;
9 | height: 400px;
10 | background-color: #ffa41b;
11 | position: absolute;
12 | top: 50%;
13 | left: 50%;
14 | transform: translate(-50%, -50%);
15 | display: flex;
16 | justify-content: center;
17 | align-items: center;
18 | }
19 |
20 | .square {
21 | width: 50px;
22 | height: 50px;
23 | border: 3px solid white;
24 | animation: rotating 2.3s infinite;
25 | background: linear-gradient(to right, white 50%, #ffa41b 50%);
26 | background-size: 200% 100%;
27 | background-position: right bottom;
28 | transform: rotate(-90deg);
29 | }
30 |
31 | @keyframes rotating {
32 | 0% {
33 | background-position: right bottom;
34 | }
35 | 30% {
36 | background-position: left bottom;
37 | transform: rotate(-90deg);
38 | }
39 | 50% {
40 | background-position: left bottom;
41 | transform: rotate(90deg);
42 | }
43 | 80% {
44 | background-position: right bottom;
45 | transform: rotate(90deg);
46 | }
47 | 100% {
48 | transform: rotate(270deg);
49 | background-position: right bottom;
50 | }
51 | }
--------------------------------------------------------------------------------
/stopwatch/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Stopwatch | Designed by webcodemode
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 | 00 :
15 | 00 .
16 | 000
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
A WEBCODEMODE CONCEPT
26 |
27 |
28 |
29 |
30 |
31 |
32 |
--------------------------------------------------------------------------------
/stopwatch/main.js:
--------------------------------------------------------------------------------
1 | var timer = document.querySelector('.timer');
2 | var toggleBtn = document.querySelector('.toggle');
3 | var resetBtn = document.querySelector('.reset');
4 | var lapBtn = document.querySelector('.lap');
5 | var lapContainer = document.querySelector('.lapContainer')
6 |
7 | var watch = new Stopwatch(timer);
8 |
9 | function start() {
10 | toggleBtn.textContent = 'Stop';
11 | toggleBtn.classList.toggle("on");
12 | watch.start();
13 | }
14 |
15 | function stop() {
16 | toggleBtn.textContent = 'Start';
17 | toggleBtn.classList.toggle("on")
18 | watch.stop();
19 | }
20 |
21 | function stopWhenOn() {
22 | toggleBtn.textContent = 'Start';
23 | toggleBtn.classList.toggle("on")
24 | watch.stop();
25 | watch.reset();
26 | }
27 |
28 | toggleBtn.addEventListener('click', function () {
29 | watch.isOn ? stop() : start();
30 | });
31 |
32 | resetBtn.addEventListener('click', function () {
33 | watch.isOn ? stopWhenOn() : watch.reset();
34 | // stop();
35 | });
36 |
37 | lapBtn.addEventListener('click', function () {
38 | watch.isOn ? watch.lapOn() : watch.lapOff();
39 | })
--------------------------------------------------------------------------------
/stopwatch/stopwatch.js:
--------------------------------------------------------------------------------
1 | function Stopwatch(elem) {
2 | var time = 0;
3 | var offset;
4 | var interval;
5 |
6 | function lapOn() {
7 | var lapTime = lapContainer.appendChild(document.createElement("li"))
8 | lapTime.innerHTML = elem.textContent;
9 | lapTime.classList = 'lapItem'
10 | }
11 |
12 | function lapOff() {
13 | return;
14 | }
15 |
16 | function update() {
17 | if (this.isOn) {
18 | time += delta();
19 | }
20 | elem.textContent = timeFormatter(time);
21 | }
22 |
23 | function delta() {
24 | var now = Date.now();
25 | var timePassed = now - offset;
26 |
27 | offset = now;
28 |
29 | return timePassed;
30 | }
31 |
32 | function timeFormatter(time) {
33 | time = new Date(time);
34 |
35 | var minutes = time.getMinutes().toString();
36 | var seconds = time.getSeconds().toString();
37 | var milliseconds = time.getMilliseconds().toString();
38 |
39 | if (minutes.length < 2) {
40 | minutes = '0' + minutes;
41 | }
42 |
43 | if (seconds.length < 2) {
44 | seconds = '0' + seconds;
45 | }
46 |
47 | while (milliseconds.length < 3) {
48 | milliseconds = '0' + milliseconds;
49 | }
50 |
51 | var result = minutes + ' : ' + seconds + ' . ' + milliseconds;
52 |
53 | return result;
54 | }
55 |
56 | this.start = function () {
57 | interval = setInterval(update.bind(this), 1);
58 | offset = Date.now();
59 | this.isOn = true;
60 | };
61 |
62 | this.stop = function () {
63 | clearInterval(interval);
64 | interval = null;
65 | this.isOn = false;
66 | };
67 |
68 | this.reset = function () {
69 | time = 0;
70 | lapContainer.innerHTML = '';
71 | interval = null;
72 | this.isOn = false;
73 | update();
74 | };
75 |
76 | this.lapOn = function () {
77 | lapOn();
78 | }
79 |
80 | this.lapOff = function () {
81 | lapOff();
82 | }
83 |
84 | this.isOn = false;
85 | }
--------------------------------------------------------------------------------
/stopwatch/styles.css:
--------------------------------------------------------------------------------
1 | * {
2 | margin: 0;
3 | padding: 0;
4 | box-sizing: border-box;
5 | font-family: 'Lato', sans-serif;
6 | }
7 |
8 | body {
9 | height: 100vh;
10 | background: linear-gradient(to right, #d38312, #a83279);
11 | display: flex;
12 | }
13 |
14 | .container {
15 | margin: auto;
16 | width: 500px;
17 | height: 500px;
18 | display: flex;
19 | flex-direction: column;
20 | justify-content: space-between;
21 | align-items: center;
22 | position: relative;
23 | }
24 |
25 | .timer {
26 | font-size: 76px;
27 | font-weight: lighter;
28 | color: #fff;
29 | width: 410px;
30 | margin-left: 20px;
31 | }
32 |
33 | .bottomPart {
34 | width: 100%;
35 | height: 150px;
36 | display: flex;
37 | flex-direction: column;
38 | justify-content: space-between;
39 | align-items: center;
40 | }
41 |
42 | .copyright {
43 | align-self: flex-start;
44 | color: #fff;
45 | }
46 |
47 | .btns {
48 | width: 300px;
49 | height: 100px;
50 | display: flex;
51 | justify-content: space-between;
52 | align-items: center;
53 | }
54 |
55 | .btns button {
56 | width: 80px;
57 | height: 80px;
58 | background-color: transparent;
59 | color: #fff;
60 | border: none;
61 | border-radius: 50%;
62 | text-transform: uppercase;
63 | font-weight: bold;
64 | cursor: pointer;
65 | outline: none;
66 | box-shadow: 0px 20px 30px 0px rgba(0, 0, 0, 0.5);
67 | }
68 |
69 | .btns .toggle {
70 | transition: all 0.3s ease;
71 | background-color: #508052;
72 | z-index: 1;
73 | }
74 |
75 | .btns .toggle:active, .btns .reset:active, .btns .lap:active {
76 | transform: scale(0.9);
77 | }
78 |
79 | .btns .toggle.on {
80 | background-color: #d92027;
81 | }
82 |
83 | .btns .reset, .btns .lap {
84 | transition: all 0.3s ease;
85 | }
86 |
87 | .lapContainer {
88 | width: 200px;
89 | height: 200px;
90 | color: #fff;
91 | padding-left: 30px;
92 | overflow: auto;
93 | display: flex;
94 | flex-direction: column;
95 | align-items: center;
96 | }
97 |
98 | .lapItem {
99 | width: 120px;
100 | height: 30px;
101 | font-size: 18px;
102 | border-bottom: 1px solid #fff;
103 | margin-bottom: 5px;
104 | }
105 |
106 | ::-webkit-scrollbar {
107 | width: 15px;
108 |
109 | }
110 |
111 | ::-webkit-scrollbar-track {
112 | background: #f1f1f1;
113 | border-radius: 10px;
114 | }
115 |
116 | ::-webkit-scrollbar-thumb {
117 | background: #ff9234;
118 | border-radius: 10px;
119 | }
120 |
121 | ::-webkit-scrollbar-thumb:hover {
122 | background: #ff7600;
123 | }
--------------------------------------------------------------------------------
/switch/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Switch
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/switch/styles.css:
--------------------------------------------------------------------------------
1 | body {
2 | padding: 0;
3 | margin: 0;
4 | background-color: #e3e3e3;
5 | }
6 |
7 | .container {
8 | position: absolute;
9 | top: 50%;
10 | left: 50%;
11 | }
12 |
13 | input {
14 | position: relative;
15 | width: 200px;
16 | height: 100px;
17 | background-color: #dcedc2;
18 | border-radius: 60px;
19 | box-shadow: inset 0 0 10px rgba(0, 0, 0, 0.2);
20 | -webkit-appearance: none;
21 | -moz-apearance:none;
22 | outline: none;
23 | transition: 0.5s;
24 | }
25 |
26 | input:checked {
27 | background-color: #086972;
28 | }
29 |
30 | input::before {
31 | content: "";
32 | position: absolute;
33 | width: 100px;
34 | height: 100px;
35 | border-radius: 60px;
36 | top: 0;
37 | left: 0;
38 | background-color: #fff;
39 | transform: scale(1.1);
40 | box-shadow: 0 4px 10px rgba(0, 0, 0, 0.2);
41 | transition: 0.5s;
42 | }
43 |
44 | input:checked::before {
45 | left: 100px;
46 | }
--------------------------------------------------------------------------------
/todo/background.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/webcodemode/instagramPosts/06e75a6a937bddb145104c999d13a5140cc10121/todo/background.jpg
--------------------------------------------------------------------------------
/todo/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | To Do App
8 |
9 |
11 |
13 |
14 |
15 |
16 |
17 |
18 |
TO DO APP
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/todo/index.js:
--------------------------------------------------------------------------------
1 | const addBtn = document.querySelector(".add")
2 | const taskField = document.querySelector(".taskInput")
3 | const list = document.querySelector(".list")
4 |
5 | addBtn.addEventListener("click", addTask)
6 |
7 | function addTask() {
8 | if (taskField.value.length === 0) {
9 | return;
10 | } else {
11 | const taskContainer = list.appendChild(document.createElement("div"))
12 | const task = taskContainer.appendChild(document.createElement("p"))
13 | const doneBtn = taskContainer.appendChild(document.createElement("i"))
14 | const deleteBtn = taskContainer.appendChild(document.createElement("i"))
15 | deleteBtn.className = "fas fa-trash-alt"
16 | doneBtn.className = "fas fa-check"
17 | taskContainer.className = "taskContainer"
18 | task.className = "task"
19 | task.innerHTML = taskField.value.charAt(0).toUpperCase() + taskField.value.slice(1)
20 | taskField.value = ""
21 | deleteBtn.addEventListener("click", deleteTask)
22 | doneBtn.addEventListener("click", checkTask)
23 | function checkTask(e) {
24 | e.target.previousSibling.style.textDecoration = "line-through"
25 | }
26 | function deleteTask(e) {
27 | e.target.parentElement.remove()
28 | }
29 | }
30 | }
31 |
32 |
33 |
--------------------------------------------------------------------------------
/todo/styles.css:
--------------------------------------------------------------------------------
1 | * {
2 | margin: 0;
3 | padding: 0;
4 | box-sizing: border-box;
5 | }
6 |
7 | body {
8 | background-color: #03ba9e;
9 | height: 100vh;
10 | display: flex;
11 | justify-content: center;
12 | align-items: center;
13 | font-family: 'Poppins', sans-serif;
14 | }
15 |
16 | .container {
17 | width: 250px;
18 | height: 400px;
19 | background-color: white;
20 | border: none;
21 | border-radius: 20px;
22 | box-shadow: 0px 30px 55px 2px rgba(0,0,0,0.46);
23 | display: flex;
24 | flex-direction: column;
25 | overflow: hidden;
26 | cursor: default;
27 | }
28 |
29 | .title {
30 | width: 100%;
31 | height: 25%;
32 | background: url(background.jpg);
33 | color: white;
34 | display: flex;
35 | justify-content: center;
36 | align-items: center;
37 | }
38 |
39 | .addSection {
40 | width: 100%;
41 | height: 15%;
42 | display: flex;
43 | border-bottom: 1px solid #dbdbdb;
44 | }
45 |
46 | .taskInput {
47 | margin: 10px 0 10px 10px;
48 | padding: 10px;
49 | width: 180px;
50 | height: 40px;
51 | border-radius: 15px 0 0 15px;
52 | border: 1px solid #dbdbdb;
53 | border-right: none;
54 | outline: none;
55 | }
56 |
57 | .add {
58 | width: 60px;
59 | height: 40px;
60 | margin: 10px 10px 10px 0;
61 | background-color: #f7b71d;
62 | color: white;
63 | border: none;
64 | border-radius: 0 15px 15px 0;
65 | outline: none;
66 | font-weight: bold;
67 | cursor: pointer;
68 | transition: all 0.2s ease-in-out;
69 | }
70 |
71 | .add:hover {
72 | background-color: #ffa600;
73 | }
74 |
75 | .list {
76 | width: 100%;
77 | height: 60%;
78 | padding: 0 10px 10px 10px;
79 | overflow: auto;
80 | }
81 |
82 | /* DOM Elements */
83 |
84 | .taskContainer {
85 | border-bottom: 1px solid #dbdbdb;
86 | padding: 5px 0 5px 0;
87 | display: flex;
88 | justify-content: space-between;
89 | align-items: center;
90 | }
91 | .task {
92 | width: 170px;
93 | }
94 | i.fas.fa-check, i.fas.fa-trash-alt {
95 | opacity: 0;
96 | cursor: pointer;
97 | transition: all 0.1s ease-in-out;
98 | }
99 | i.fas.fa-check:hover {
100 | color: #0c9463;
101 | }
102 | i.fas.fa-trash-alt:hover {
103 | color: #ff0000;
104 | }
105 | i.fas.fa-check:active {
106 | transform: translateY(3px);
107 | }
108 | i.fas.fa-trash-alt:active {
109 | transform: translateY(3px);
110 | }
111 | .taskContainer:hover i.fas.fa-check, .taskContainer:hover i.fas.fa-trash-alt {
112 | opacity: 1;
113 | }
--------------------------------------------------------------------------------