├── .github
└── ISSUE_TEMPLATE
│ ├── ---bug--give-a-suitable-title-here.md
│ ├── ---give-a-suitable-title-here.md
│ └── --feature--give-a-suitable-title.md
├── Project 00 - Starter
├── index.html
├── script.js
└── style.css
├── Project 01 - Expandable Cards
├── img
│ ├── 1.jpg
│ ├── 2.jpg
│ ├── 3.jpg
│ ├── 4.jpg
│ ├── 5.jpg
│ ├── 6.jpg
│ └── 7.jpg
├── index.html
├── script.js
└── style.css
├── Project 02 - Progress Step bars
├── index.html
├── script.js
└── style.css
├── Project 03 - Rotating Navigation
├── img
│ └── 1.jpg
├── index.html
├── script.js
└── style.css
├── Project 04 - Hidden Search Widget
├── index.html
├── script.js
└── style.css
├── Project 05 - Blurry Loading Page
├── img
│ └── image.jpg
├── index.html
├── script.js
└── style.css
├── Project 06 - Scrolling Animation
├── index.html
├── script.js
└── style.css
├── Project 07 -Split The Landing Page
├── img
│ ├── ps5.jpg
│ └── xbox.jpg
├── index.html
├── script.js
└── style.css
├── Project 08 - Animated Waving Form
├── index.html
├── script.js
└── style.css
├── Project 09 - Sound Mini-Boards
├── index.html
├── music
│ ├── music_angela_paulson_floating_001.mp3
│ ├── music_angela_paulson_out_at_sea_004.mp3
│ ├── music_david_gwyn_jones_the_celestial_harp_instrumental.mp3
│ ├── music_zapsplat_beautiful_reef.mp3
│ ├── music_zapsplat_game_music_action_agressive_pounding_tense_electro_synth_028.mp3
│ ├── music_zapsplat_morning_rush_hour_142.mp3
│ └── music_zapsplat_rapid_turnaround.mp3
├── script.js
└── style.css
├── Project 10 - Dad Jokes
├── android-chrome-192x192.png
├── android-chrome-512x512.png
├── apple-touch-icon.png
├── favicon-16x16.png
├── favicon-32x32.png
├── favicon.ico
├── index.html
├── script.js
├── site.webmanifest
└── style.css
├── Project 11 - Event Key
├── android-chrome-192x192.png
├── android-chrome-512x512.png
├── apple-touch-icon.png
├── favicon-16x16.png
├── favicon-32x32.png
├── favicon.ico
├── img
│ └── i.jpg
├── index.html
├── script.js
├── site.webmanifest
└── style.css
├── Project 12 - FAQ Collapse
├── index.html
├── script.js
└── style.css
├── Project 13 - Random Choice Picker
├── index.html
├── script.js
└── style.css
├── README.md
└── _config.yml
/.github/ISSUE_TEMPLATE/---bug--give-a-suitable-title-here.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: "\U0001FAB2[Bug] Give a suitable title here"
3 | about: Create a report to help us improve
4 | title: BUG
5 | labels: bug
6 | assignees: ''
7 |
8 | ---
9 |
10 | **Describe the bug**
11 | A clear and concise description of what the bug is.
12 |
13 | **To Reproduce**
14 | Steps to reproduce the behavior:
15 | 1. Go to '...'
16 | 2. Click on '....'
17 | 3. Scroll down to '....'
18 | 4. See error
19 |
20 | **Expected behavior**
21 | A clear and concise description of what you expected to happen.
22 |
23 | **Screenshots**
24 | If applicable, add screenshots to help explain your problem.
25 |
26 | **Desktop (please complete the following information):**
27 | - OS: [e.g. iOS]
28 | - Browser [e.g. chrome, safari]
29 | - Version [e.g. 22]
30 |
31 | **Smartphone (please complete the following information):**
32 | - Device: [e.g. iPhone6]
33 | - OS: [e.g. iOS8.1]
34 | - Browser [e.g. stock browser, safari]
35 | - Version [e.g. 22]
36 |
37 | **Additional context**
38 | Add any other context about the problem here.
39 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/---give-a-suitable-title-here.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: "\U0001F4A1 Give a suitable title here"
3 | about: Describe this issue template's purpose here.
4 | title: CUSTOM
5 | labels: question
6 | assignees: ''
7 |
8 | ---
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/--feature--give-a-suitable-title.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: "⭐[FEATURE] Give a suitable title"
3 | about: Suggest an idea for this project
4 | title: FEATURE
5 | labels: enhancement
6 | assignees: ''
7 |
8 | ---
9 |
10 | **Is your feature request related to a problem? Please describe.**
11 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
12 |
13 | **Describe the solution you'd like**
14 | A clear and concise description of what you want to happen.
15 |
16 | **Describe alternatives you've considered**
17 | A clear and concise description of any alternative solutions or features you've considered.
18 |
19 | **Additional context**
20 | Add any other context or screenshots about the feature request here.
21 |
--------------------------------------------------------------------------------
/Project 00 - Starter/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
12 |
Please Login
13 |
26 |
27 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/Project 08 - Animated Waving Form/script.js:
--------------------------------------------------------------------------------
1 | const labels = document.querySelectorAll('.form-control label');
2 |
3 | labels.forEach(label => {
4 | label.innerHTML = label.innerText
5 | .split('')
6 | .map((letter, idx) => `
${letter} `)
7 | .join('');
8 | })
--------------------------------------------------------------------------------
/Project 08 - Animated Waving Form/style.css:
--------------------------------------------------------------------------------
1 | @import url('https://fonts.googleapis.com/css2?family=Muli&display=swap');
2 |
3 |
4 | * {
5 | box-sizing: border-box;
6 | }
7 |
8 | body {
9 | background-color: rgb(97, 169, 228);
10 | font-family: 'Muli' , sans-serif;
11 | display: flex;
12 | flex-direction: column;
13 | align-items: center;
14 | justify-content:center;
15 | height: 100vh;
16 | overflow: hidden;
17 | margin: 0;
18 | color: #fff;
19 | }
20 |
21 | .container {
22 | background-color:rgba(0, 0, 0, 0.4);
23 | padding:20px 40px;
24 | border-radius:25px;
25 |
26 | }
27 |
28 | .container h1 {
29 | text-align:center;
30 | margin-bottom:30px;
31 | }
32 |
33 | .container a {
34 | text-decoration: none;
35 | color: lightblue;
36 | }
37 |
38 | .form-control {
39 | position: relative;
40 | margin: 20px 0 40px;
41 | width: 250px;
42 | }
43 |
44 |
45 |
46 | .form-control input{
47 | background-color: transparent;
48 | border: 0;
49 | border-bottom: 2px #fff solid;
50 | display: block;
51 | width: 100%;
52 | padding: 15px 0;
53 | font-size: 20px;
54 | color: white;
55 | }
56 |
57 | .form-control input:focus, .form-control input:valid{
58 | outline: 0; /* Removing the borders while mouse click*/
59 | border-bottom-color: lightblue;
60 |
61 | }
62 |
63 | .btn {
64 | cursor: pointer;
65 | display: inline-block;
66 | width: 100%;
67 | background: lightblue;
68 | padding: 15px;
69 | font-family: inherit;
70 | font-size: 16px;
71 | border: 0;
72 | border-radius: 15px;
73 | }
74 |
75 | .btn:focus{
76 | outline: 0;
77 | }
78 |
79 |
80 | .btn:active{
81 | transform: scale(0.98)
82 | }
83 |
84 | .text {
85 | margin-top: 30px;
86 | }
87 |
88 | .form-control label {
89 | position: absolute;
90 | top: 15px;
91 | left: 0;
92 | }
93 |
94 | .form-control label span {
95 | display: inline-block;
96 | font-size: 18px;
97 | min-width: 5px;
98 | transition: 1.2s cubic-bezier(0.68, -0.55, 0.265, 1.55);
99 | }
100 |
101 | .form-control input:focus + label span,
102 | .form-control input:valid + label span {
103 | color: lightblue;
104 | transform: translateY(-35px);
105 | }
106 |
107 |
108 |
--------------------------------------------------------------------------------
/Project 09 - Sound Mini-Boards/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
12 |
13 |
Sound Mini-Boards
14 |
15 |
16 |
17 |
21 |
22 |
26 |
27 |
31 |
35 |
36 |
37 |
38 |
39 |
40 |
43 |
44 |
45 |
--------------------------------------------------------------------------------
/Project 09 - Sound Mini-Boards/music/music_angela_paulson_floating_001.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FahimFBA/Mini-Projects-in-HTML-CSS-and-Javascript/371ea7b3c1f28b04710b7b5a026b2f3904255fa9/Project 09 - Sound Mini-Boards/music/music_angela_paulson_floating_001.mp3
--------------------------------------------------------------------------------
/Project 09 - Sound Mini-Boards/music/music_angela_paulson_out_at_sea_004.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FahimFBA/Mini-Projects-in-HTML-CSS-and-Javascript/371ea7b3c1f28b04710b7b5a026b2f3904255fa9/Project 09 - Sound Mini-Boards/music/music_angela_paulson_out_at_sea_004.mp3
--------------------------------------------------------------------------------
/Project 09 - Sound Mini-Boards/music/music_david_gwyn_jones_the_celestial_harp_instrumental.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FahimFBA/Mini-Projects-in-HTML-CSS-and-Javascript/371ea7b3c1f28b04710b7b5a026b2f3904255fa9/Project 09 - Sound Mini-Boards/music/music_david_gwyn_jones_the_celestial_harp_instrumental.mp3
--------------------------------------------------------------------------------
/Project 09 - Sound Mini-Boards/music/music_zapsplat_beautiful_reef.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FahimFBA/Mini-Projects-in-HTML-CSS-and-Javascript/371ea7b3c1f28b04710b7b5a026b2f3904255fa9/Project 09 - Sound Mini-Boards/music/music_zapsplat_beautiful_reef.mp3
--------------------------------------------------------------------------------
/Project 09 - Sound Mini-Boards/music/music_zapsplat_game_music_action_agressive_pounding_tense_electro_synth_028.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FahimFBA/Mini-Projects-in-HTML-CSS-and-Javascript/371ea7b3c1f28b04710b7b5a026b2f3904255fa9/Project 09 - Sound Mini-Boards/music/music_zapsplat_game_music_action_agressive_pounding_tense_electro_synth_028.mp3
--------------------------------------------------------------------------------
/Project 09 - Sound Mini-Boards/music/music_zapsplat_morning_rush_hour_142.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FahimFBA/Mini-Projects-in-HTML-CSS-and-Javascript/371ea7b3c1f28b04710b7b5a026b2f3904255fa9/Project 09 - Sound Mini-Boards/music/music_zapsplat_morning_rush_hour_142.mp3
--------------------------------------------------------------------------------
/Project 09 - Sound Mini-Boards/music/music_zapsplat_rapid_turnaround.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FahimFBA/Mini-Projects-in-HTML-CSS-and-Javascript/371ea7b3c1f28b04710b7b5a026b2f3904255fa9/Project 09 - Sound Mini-Boards/music/music_zapsplat_rapid_turnaround.mp3
--------------------------------------------------------------------------------
/Project 09 - Sound Mini-Boards/script.js:
--------------------------------------------------------------------------------
1 | const sounds = ['reef', 'game', 'rapid', 'floating', 'sea', 'celestial', 'rush']
2 |
3 | sounds.forEach(sound => {
4 | const btn = document.createElement('button')
5 | btn.classList.add('btn')
6 | btn.innerText = sound
7 | btn.addEventListener('click', () => {
8 | stopSongs()
9 | document.getElementById(sound).play()
10 | })
11 | document.getElementById('buttons').
12 | appendChild(btn)
13 | })
14 | function stopSongs() {
15 | sounds.forEach(sound => {
16 | const song = document.getElementById(sound)
17 | song.pause()
18 | song.currentTime = 0;
19 | })
20 | }
--------------------------------------------------------------------------------
/Project 09 - Sound Mini-Boards/style.css:
--------------------------------------------------------------------------------
1 | @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@200;400&display=swap');
2 |
3 |
4 | * {
5 | box-sizing: border-box;
6 | }
7 |
8 | body {
9 | background-color: rgb(173, 195, 236);
10 | font-family: 'Poppins', sans-serif;
11 | display: flex;
12 | flex-wrap: wrap;
13 | align-items: center;
14 | justify-content: center;
15 | height: 100vh;
16 | overflow: hidden;
17 | margin: 0;
18 | }
19 |
20 | .btn {
21 | background-color: lightblue;
22 | border-radius: 5px;
23 | border: none;
24 | color: #fff;
25 | margin: 1rem;
26 | padding: 1.5rem 3rem;
27 | font-size: 1.2rem;
28 | font-family: inherit;
29 | cursor: pointer;
30 | }
31 |
32 | .btn:focus {
33 | outline: none;
34 | }
35 |
36 | .btn:hover {
37 | opacity: .6;
38 | }
--------------------------------------------------------------------------------
/Project 10 - Dad Jokes/android-chrome-192x192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FahimFBA/Mini-Projects-in-HTML-CSS-and-Javascript/371ea7b3c1f28b04710b7b5a026b2f3904255fa9/Project 10 - Dad Jokes/android-chrome-192x192.png
--------------------------------------------------------------------------------
/Project 10 - Dad Jokes/android-chrome-512x512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FahimFBA/Mini-Projects-in-HTML-CSS-and-Javascript/371ea7b3c1f28b04710b7b5a026b2f3904255fa9/Project 10 - Dad Jokes/android-chrome-512x512.png
--------------------------------------------------------------------------------
/Project 10 - Dad Jokes/apple-touch-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FahimFBA/Mini-Projects-in-HTML-CSS-and-Javascript/371ea7b3c1f28b04710b7b5a026b2f3904255fa9/Project 10 - Dad Jokes/apple-touch-icon.png
--------------------------------------------------------------------------------
/Project 10 - Dad Jokes/favicon-16x16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FahimFBA/Mini-Projects-in-HTML-CSS-and-Javascript/371ea7b3c1f28b04710b7b5a026b2f3904255fa9/Project 10 - Dad Jokes/favicon-16x16.png
--------------------------------------------------------------------------------
/Project 10 - Dad Jokes/favicon-32x32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FahimFBA/Mini-Projects-in-HTML-CSS-and-Javascript/371ea7b3c1f28b04710b7b5a026b2f3904255fa9/Project 10 - Dad Jokes/favicon-32x32.png
--------------------------------------------------------------------------------
/Project 10 - Dad Jokes/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FahimFBA/Mini-Projects-in-HTML-CSS-and-Javascript/371ea7b3c1f28b04710b7b5a026b2f3904255fa9/Project 10 - Dad Jokes/favicon.ico
--------------------------------------------------------------------------------
/Project 10 - Dad Jokes/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
Dad Jokes
21 |
22 |
23 |
24 |
Here's the challenge. Don't LAUGH !
25 |
26 | // Joke goes here
27 |
28 |
29 |
How about another joke, huh?
30 |
31 |
32 |
33 |
34 |
35 |
--------------------------------------------------------------------------------
/Project 10 - Dad Jokes/script.js:
--------------------------------------------------------------------------------
1 | const jokeEl = document.getElementById('joke')
2 | const jokeBtn = document.getElementById('jokeBtn')
3 |
4 | jokeBtn.addEventListener('click', generateJoke)
5 |
6 | generateJoke()
7 |
8 |
9 | // USING ASYNC/AWAIT
10 | async function generateJoke(){
11 |
12 | const config= {
13 | headers: {
14 | Accept: 'application/json',
15 | },
16 | }
17 |
18 | const res = await fetch('https://icanhazdadjoke.com', config)
19 |
20 |
21 | const data = await res.json()
22 |
23 | jokeEl.innerHTML = data.joke
24 | }
25 |
26 |
27 |
28 |
29 |
30 | // USINE .then()
31 |
32 | //function generateJoke(){
33 | //
34 | // const config= {
35 | // headers: {
36 | // Accept: 'application/json',
37 | // },
38 | // }
39 | //
40 | // fetch('https://icanhazdadjoke.com', config)
41 | // .then((res) => res.json())
42 | // .then((data) => {
43 | // jokeEl.innerHTML = data.joke
44 | // })
45 | //}
--------------------------------------------------------------------------------
/Project 10 - Dad Jokes/site.webmanifest:
--------------------------------------------------------------------------------
1 | {"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"}
--------------------------------------------------------------------------------
/Project 10 - Dad Jokes/style.css:
--------------------------------------------------------------------------------
1 | @import url('https://fonts.googleapis.com/css2?family=Roboto:wght@400;700&display=swap');
2 |
3 |
4 | * {
5 | box-sizing: border-box;
6 | }
7 |
8 | body {
9 | background-color: #686de0;
10 | font-family: 'Roboto' , sans-serif;
11 | display: flex;
12 | flex-direction: column;
13 | align-items: center;
14 | justify-content:center;
15 | height: 100vh;
16 | overflow: hidden;
17 | margin: 0;
18 | padding: 25px;
19 | }
20 |
21 | .container{
22 | background-color: #fff;
23 | border-radius: 10px;
24 | box-shadow: 0 10px 20px rgba(0,0,0,0.1), 0 6px 6px rgba(0,0,0,0.1);
25 | padding: 50px 20px;
26 | text-align: center;
27 | max-width: 100%;
28 | width: 800px;
29 | }
30 |
31 | h3{
32 | margin: 0;
33 | opacity: 0.5;
34 | letter-spacing: 2px;
35 |
36 | }
37 |
38 | .joke{
39 | font-size: 30px;
40 | letter-spacing: 1px;
41 | line-height: 40px;
42 | margin: 50px auto;
43 | max-width: 600px;
44 | }
45 |
46 | .btn{
47 | background-color: #9F68E0;
48 | color: #fff;
49 | border: 0;
50 | border-radius: 10px;
51 | box-shadow: 0 5px 15px rgba(0,0,0,0.1), 0 6px 6px rgba(0,0,0,0.1);
52 | padding: 15px 40px;
53 | font-size: 16px;
54 | cursor: pointer;
55 | }
56 |
57 | .btn:active{
58 | transform: scale(0.98);
59 | }
60 |
61 | .btn:focus{
62 | outline: 0;
63 | }
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
--------------------------------------------------------------------------------
/Project 11 - Event Key/android-chrome-192x192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FahimFBA/Mini-Projects-in-HTML-CSS-and-Javascript/371ea7b3c1f28b04710b7b5a026b2f3904255fa9/Project 11 - Event Key/android-chrome-192x192.png
--------------------------------------------------------------------------------
/Project 11 - Event Key/android-chrome-512x512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FahimFBA/Mini-Projects-in-HTML-CSS-and-Javascript/371ea7b3c1f28b04710b7b5a026b2f3904255fa9/Project 11 - Event Key/android-chrome-512x512.png
--------------------------------------------------------------------------------
/Project 11 - Event Key/apple-touch-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FahimFBA/Mini-Projects-in-HTML-CSS-and-Javascript/371ea7b3c1f28b04710b7b5a026b2f3904255fa9/Project 11 - Event Key/apple-touch-icon.png
--------------------------------------------------------------------------------
/Project 11 - Event Key/favicon-16x16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FahimFBA/Mini-Projects-in-HTML-CSS-and-Javascript/371ea7b3c1f28b04710b7b5a026b2f3904255fa9/Project 11 - Event Key/favicon-16x16.png
--------------------------------------------------------------------------------
/Project 11 - Event Key/favicon-32x32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FahimFBA/Mini-Projects-in-HTML-CSS-and-Javascript/371ea7b3c1f28b04710b7b5a026b2f3904255fa9/Project 11 - Event Key/favicon-32x32.png
--------------------------------------------------------------------------------
/Project 11 - Event Key/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FahimFBA/Mini-Projects-in-HTML-CSS-and-Javascript/371ea7b3c1f28b04710b7b5a026b2f3904255fa9/Project 11 - Event Key/favicon.ico
--------------------------------------------------------------------------------
/Project 11 - Event Key/img/i.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/FahimFBA/Mini-Projects-in-HTML-CSS-and-Javascript/371ea7b3c1f28b04710b7b5a026b2f3904255fa9/Project 11 - Event Key/img/i.jpg
--------------------------------------------------------------------------------
/Project 11 - Event Key/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
10 |
11 |
Event Key Identification
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 | Press any key to get the Key Code
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
--------------------------------------------------------------------------------
/Project 11 - Event Key/script.js:
--------------------------------------------------------------------------------
1 | const insert = document.getElementById('insert')
2 |
3 | window.addEventListener('keydown', (event) => {
4 | insert.innerHTML = `
5 |
6 | ${event.key === ' ' ? 'Space' : event.key}
7 | event.Key
8 |
9 |
10 |
11 | ${event.keyCode}
12 | event.keyCode
13 |
14 |
15 |
16 | ${event.code}
17 | event.Code
18 |
19 | `
20 | })
--------------------------------------------------------------------------------
/Project 11 - Event Key/site.webmanifest:
--------------------------------------------------------------------------------
1 | {"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"}
--------------------------------------------------------------------------------
/Project 11 - Event Key/style.css:
--------------------------------------------------------------------------------
1 | @import url("https://fonts.googleapis.com/css2?family=Muli&display=swap");
2 |
3 | * {
4 | box-sizing: border-box;
5 | }
6 |
7 | body {
8 | font-family: "Muli", sans-serif;
9 | background-image: url("img/i.jpg");
10 | background-repeat: no-repeat;
11 | background-size: cover;
12 | background-position: center;
13 | display: flex;
14 | align-items: center;
15 | justify-content: center;
16 | height: 100vh;
17 | overflow: hidden;
18 | margin: 0;
19 | text-align: center;
20 | }
21 |
22 | .key {
23 | border: 1px solid rgb(37, 185, 37);
24 | background-color: #eee;
25 | box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.1);
26 | display: inline-flex;
27 | align-items: center;
28 | font-size: 20px;
29 | font-weight: bolder;
30 | padding: 20px;
31 | flex-direction: column;
32 | margin: 10px;
33 | min-width: 150px;
34 | position: relative;
35 | }
36 |
37 | .key small {
38 | position: absolute;
39 | top: -24px;
40 | left: 0;
41 | text-align: center;
42 | width: 100%;
43 | color: #555;
44 | font-size: 14px;
45 | }
46 |
--------------------------------------------------------------------------------
/Project 12 - FAQ Collapse/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
12 |
13 |
FAQ
14 |
15 |
16 |
Frequently Asked Questions
17 |
18 |
19 |
Why shouldn't we trust atoms?
20 |
21 |
They make up everything
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 | What do you call someone with no body and no nose?
32 |
33 |
Nobody knows.
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 | What's the object-oriented way to become wealthy?
43 |
44 |
Inheritance.
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 | How many tickles does it take to tickle an octopus?
54 |
55 |
Ten-tickles!
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
What is: 1 + 1?
64 |
Depends on who are you asking.
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
--------------------------------------------------------------------------------
/Project 12 - FAQ Collapse/script.js:
--------------------------------------------------------------------------------
1 | const toggles = document.querySelectorAll('.faq-toggle')
2 |
3 | toggles.forEach(toggle => {
4 | toggle.addEventListener('click', () => {
5 | toggle.parentNode.classList.toggle('active')
6 | })
7 | })
--------------------------------------------------------------------------------
/Project 12 - FAQ Collapse/style.css:
--------------------------------------------------------------------------------
1 | @import url("https://fonts.googleapis.com/css?family=Muli&display=swap");
2 |
3 | * {
4 | box-sizing: border-box;
5 | }
6 |
7 | body {
8 | font-family: "Muli", sans-serif;
9 | background-color: #f0f0f0;
10 | }
11 |
12 | h1 {
13 | margin: 50px 0 30px;
14 | text-align: center;
15 | }
16 |
17 | .faq-container {
18 | max-width: 600px;
19 | margin: 0 auto;
20 | }
21 |
22 | .faq {
23 | background-color: transparent;
24 | border: 1px solid #9fa4a8;
25 | border-radius: 10px;
26 | margin: 20px 0;
27 | padding: 30px;
28 | position: relative;
29 | overflow: hidden;
30 | transition: 0.3s ease;
31 | }
32 |
33 | .faq.active {
34 | background-color: #fff;
35 | box-shadow: 0 3px 6px rgba(0, 0, 0, 0.1), 0 3px 6px rgba(0, 0, 0, 0.1);
36 | }
37 |
38 | .faq.active::before,
39 | .faq.active::after {
40 | content: "\f075";
41 | font-family: "Font Awesome 5 Free";
42 | color: #2ecc71;
43 | font-size: 7rem;
44 | position: absolute;
45 | opacity: 0.2;
46 | top: 20px;
47 | left: 20px;
48 | z-index: 0;
49 | }
50 |
51 | .faq.active::before {
52 | color: #3498db;
53 | top: -10px;
54 | left: -30px;
55 | transform: rotateY(180deg);
56 | }
57 |
58 | .faq-title {
59 | margin: 0 35px 0 0;
60 | }
61 |
62 | .faq-text {
63 | display: none;
64 | margin: 30px 0 0;
65 | }
66 |
67 | .faq.active .faq-text {
68 | display: block;
69 | }
70 |
71 | .faq-toggle:focus {
72 | outline: 0;
73 | }
74 |
75 | .faq-toggle .fa-times {
76 | display: none;
77 | }
78 |
79 | .faq.active .faq-toggle .fa-times {
80 | color: #fff;
81 | display: block;
82 | }
83 |
84 | .faq.active .faq-toggle .fa-chevron-down {
85 | display: none;
86 | }
87 |
88 | .faq.active .faq-toggle {
89 | background-color: #9fa4a8;
90 | }
91 |
92 | .faq-toggle {
93 | background-color: transparent;
94 | border: 0;
95 | border-radius: 50%;
96 | cursor: pointer;
97 | display: flex;
98 | align-items: center;
99 | justify-content: center;
100 | font-size: 16px;
101 | padding: 0;
102 | position: absolute;
103 | top: 30px;
104 | right: 30px;
105 | height: 30px;
106 | width: 30px;
107 | }
108 |
--------------------------------------------------------------------------------
/Project 13 - Random Choice Picker/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
Random Choice Picker
9 |
10 |
11 |
12 |
13 |
Enter all of the choices divided by a comma (',').
14 | Press enter when you're done
15 |
16 |
17 |
18 | Choice 1
19 | Choice 2
20 | Choice 3
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/Project 13 - Random Choice Picker/script.js:
--------------------------------------------------------------------------------
1 | const tagsEl = document.getElementById('tags')
2 | const textarea = document.getElementById('textarea')
3 |
4 | textarea.focus()
5 |
6 | textarea.addEventListener('keyup', (e) => {
7 | createTags(e.target.value)
8 |
9 | if(e.key === 'Enter') {
10 | setTimeout(() => {
11 | e.target.value = ''
12 | }, 10)
13 |
14 | randomSelect()
15 | }
16 | })
17 |
18 | function createTags(input) {
19 | const tags = input.split(',').filter(tag => tag.trim() !== '').map(tag => tag.trim())
20 |
21 | tagsEl.innerHTML = ''
22 |
23 | tags.forEach(tag => {
24 | const tagEl = document.createElement('span')
25 | tagEl.classList.add('tag')
26 | tagEl.innerText = tag
27 | tagsEl.appendChild(tagEl)
28 | })
29 | }
30 |
31 | function randomSelect() {
32 | const times = 30
33 |
34 | const interval = setInterval(() => {
35 | const randomTag = pickRandomTag()
36 |
37 | if (randomTag !== undefined) {
38 | highlightTag(randomTag)
39 |
40 | setTimeout(() => {
41 | unHighlightTag(randomTag)
42 | }, 100)
43 | }
44 | }, 100);
45 |
46 | setTimeout(() => {
47 | clearInterval(interval)
48 |
49 | setTimeout(() => {
50 | const randomTag = pickRandomTag()
51 |
52 | highlightTag(randomTag)
53 | }, 100)
54 |
55 | }, times * 100)
56 | }
57 |
58 | function pickRandomTag() {
59 | const tags = document.querySelectorAll('.tag')
60 | return tags[Math.floor(Math.random() * tags.length)]
61 | }
62 |
63 | function highlightTag(tag) {
64 | tag.classList.add('highlight')
65 | }
66 |
67 | function unHighlightTag(tag) {
68 | tag.classList.remove('highlight')
69 | }
70 |
--------------------------------------------------------------------------------
/Project 13 - Random Choice Picker/style.css:
--------------------------------------------------------------------------------
1 | @import url('https://fonts.googleapis.com/css?family=Muli&display=swap');
2 |
3 | * {
4 | box-sizing: border-box;
5 | }
6 |
7 | body {
8 | background-color: #2b88f0;
9 | font-family: 'Muli', sans-serif;
10 | display: flex;
11 | flex-direction: column;
12 | align-items: center;
13 | justify-content: center;
14 | height: 100vh;
15 | overflow: hidden;
16 | margin: 0;
17 | }
18 |
19 | h3 {
20 | color: #fff;
21 | margin: 10px 0 20px;
22 | text-align: center;
23 | }
24 |
25 | .container {
26 | width: 500px;
27 | }
28 |
29 | textarea {
30 | border: none;
31 | display: block;
32 | width: 100%;
33 | height: 100px;
34 | font-family: inherit;
35 | padding: 10px;
36 | margin: 0 0 20px;
37 | font-size: 16px;
38 | }
39 |
40 | textarea:focus {
41 | outline: none;
42 | }
43 |
44 | .tag {
45 | background-color: #f0932b;
46 | color: #fff;
47 | border-radius: 50px;
48 | padding: 10px 20px;
49 | margin: 0 5px 10px 0;
50 | font-size: 14px;
51 | display: inline-block;
52 | }
53 |
54 | .tag.highlight {
55 | background-color: #273c75;
56 | }
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Mini Projects in HTML, CSS and Javascript
2 |
3 |
4 |
5 | [](https://twitter.com/intent/tweet?text=Wow!&url=https://github.com/FahimFBA/Mini-Projects-in-HTML-CSS-and-Javascript)
6 | [](https://twitter.com/Fahim_FBA)
7 |
8 | 
9 | 
10 | 
11 | 
12 | 
13 |
14 | ### Used Software:
15 |
16 | > VS Code / VS Code insider
17 |
18 | ### Used Extensions (on VS Code)
19 |
20 | - Emmet
21 | - Live Server
22 | - Auto Rename Tag
23 | - Bracket Pair Colorizer
24 | - Prettier - Code Formatter
25 | - Save Typing
26 |
27 |
28 |
29 | ## PROJECTS
30 |
31 | | ID | Name | Live Website | Live Demo |
32 | | --- | ---------------------- | ----------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------ |
33 | | 01 | Expandable Cards | [Website](https://distracted-kepler-d186df.netlify.app) | [YouTube Video](https://www.youtube.com/watch?v=OxRJniILojA&list=PLutHME8vSEnEoS_-5Cl8RMsH0aWnWbsci&index=2) |
34 | | 02 | Progress Step Bars | [Website](https://infallible-brattain-6d5102.netlify.app/) | [YouTube Video](https://youtu.be/Jew-ydjswKs) |
35 | | 03 | Rotating Navigation | [Website](https://jolly-wilson-e155a4.netlify.app/) | [YouTube Video](https://youtu.be/_ScFokpHE44) |
36 | | 04 | Hidden Search Widget | [Website](https://loving-curie-166a7d.netlify.app/) | [YouTube Video](https://youtu.be/NyHPxXOIL2k) |
37 | | 05 | Blurry Loading Page | [Website](https://practical-kowalevski-a028aa.netlify.app/) | [YouTube Video](https://youtu.be/9TJTF8u-OQE) |
38 | | 06 | Scrolling Animation | [Website](https://objective-bohr-df6ca0.netlify.app/) | [YouTube Video](https://youtu.be/sP4H-XwFgqc) |
39 | | 07 | Split The Landing Page | [Website](https://gifted-cray-f612ff.netlify.app/) | [YouTube Video](https://youtu.be/csEWvMJTmd8) |
40 | | 08 | Animated Waving Form | [Website](https://priceless-leavitt-184bff.netlify.app/) | [YouTube Video](https://youtu.be/vkaYFedMRH0) |
41 | | 09 | Sound Mini-Boards | [Website](https://mini-projects-in-html-css-and-javascript.vercel.app/) | [YouTube Video](https://youtu.be/vRVdNjTedoI) |
42 | | 10 | Dad Jokes | [Website](https://hungry-agnesi-c7f8a3.netlify.app/) | [YouTube Video](https://youtu.be/5jxewf8Udzo) |
43 | | 11 | Event Key | [Website](https://gracious-roentgen-4bc525.netlify.app) | [YouTube Video](https://youtu.be/PYeEnIIsg2c) |
44 | | 12 | FAQ Collapse | [Website](https://superlative-kataifi-d457bf.netlify.app/) | [YouTube Video]() |
45 | |13 | Random Choice Picker | [Website](https://creative-banoffee-a17b22.netlify.app/) | [YouTube Video]() |
46 |
--------------------------------------------------------------------------------
/_config.yml:
--------------------------------------------------------------------------------
1 | theme: jekyll-theme-hacker
--------------------------------------------------------------------------------