├── assets
├── img
│ ├── logo.png
│ ├── avatar.webp
│ ├── laptop.webp
│ ├── social.webp
│ ├── planets
│ │ ├── Uranus.jpg
│ │ ├── Jupiter.jpg
│ │ ├── Neptune.jpg
│ │ ├── Venus-real_color.jpg
│ │ ├── Mars_Valles_Marineris.jpeg
│ │ ├── Earth_Eastern_Hemisphere.jpg
│ │ ├── Saturn_from_Cassini_Orbiter_(2004-10-06).jpg
│ │ └── 50px-Mercury_in_color_-_Prockter07_centered.jpg
│ ├── portada_noticia.webp
│ ├── HTML-30-day-challenge.jpg
│ ├── HTML-30-day-challenge.jxl
│ ├── HTML-30-day-challenge.avif
│ ├── HTML-30-day-challenge.webp
│ ├── simbols
│ │ ├── Earth_symbol.svg.png
│ │ ├── Mars_symbol.svg.png
│ │ ├── Venus_symbol.svg.png
│ │ ├── Jupiter_symbol.svg.png
│ │ ├── Mercury_symbol.svg.png
│ │ ├── Neptune_symbol.svg.png
│ │ ├── Saturn_symbol.svg.png
│ │ └── Uranus_monogram.svg.png
│ ├── fondo-papel-grunge-vintage_1048-10911.avif
│ ├── play.svg
│ ├── twitch.svg
│ ├── github.svg
│ └── discord.svg
├── video
│ └── waves-loop.mp4
├── fonts
│ └── entercommand.woff2
└── style.css
├── desafios
├── 10
│ ├── script.js
│ ├── style.css
│ └── index.html
├── 11
│ ├── style.css
│ └── index.html
├── 12
│ ├── style.css
│ └── index.html
├── 13
│ ├── style.css
│ └── index.html
├── 14
│ ├── style.css
│ └── index.html
├── 15
│ ├── style.css
│ └── index.html
├── 16
│ ├── style.css
│ └── index.html
├── 17
│ ├── style.css
│ └── index.html
├── 18
│ ├── style.css
│ └── index.html
├── 19
│ ├── style.css
│ └── index.html
├── 20
│ ├── style.css
│ └── index.html
├── 21
│ ├── style.css
│ └── index.html
├── 22
│ ├── style.css
│ └── index.html
├── 23
│ ├── style.css
│ └── index.html
├── 24
│ ├── style.css
│ └── index.html
├── 25
│ ├── style.css
│ └── index.html
├── 26
│ ├── style.css
│ └── index.html
├── 27
│ ├── style.css
│ └── index.html
├── 28
│ ├── script.js
│ ├── style.css
│ └── index.html
├── 29
│ ├── script.js
│ ├── style.css
│ └── index.html
├── 30
│ ├── script.js
│ ├── style.css
│ └── index.html
├── 01
│ ├── style.css
│ └── index.html
├── 02
│ ├── style.css
│ └── index.html
├── 07
│ ├── style.css
│ └── index.html
├── 06
│ ├── style.css
│ └── index.html
├── 05
│ ├── style.css
│ └── index.html
├── 03
│ ├── style.css
│ └── index.html
├── 08
│ ├── style.css
│ └── index.html
├── 04
│ ├── style.css
│ └── index.html
└── 09
│ ├── style.css
│ └── index.html
├── LICENSE
├── CODE_OF_CONDUCT.md
├── README.md
└── index.html
/assets/img/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/odracirdev/challengeHTML/HEAD/assets/img/logo.png
--------------------------------------------------------------------------------
/assets/img/avatar.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/odracirdev/challengeHTML/HEAD/assets/img/avatar.webp
--------------------------------------------------------------------------------
/assets/img/laptop.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/odracirdev/challengeHTML/HEAD/assets/img/laptop.webp
--------------------------------------------------------------------------------
/assets/img/social.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/odracirdev/challengeHTML/HEAD/assets/img/social.webp
--------------------------------------------------------------------------------
/assets/img/planets/Uranus.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/odracirdev/challengeHTML/HEAD/assets/img/planets/Uranus.jpg
--------------------------------------------------------------------------------
/assets/video/waves-loop.mp4:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/odracirdev/challengeHTML/HEAD/assets/video/waves-loop.mp4
--------------------------------------------------------------------------------
/assets/fonts/entercommand.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/odracirdev/challengeHTML/HEAD/assets/fonts/entercommand.woff2
--------------------------------------------------------------------------------
/assets/img/planets/Jupiter.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/odracirdev/challengeHTML/HEAD/assets/img/planets/Jupiter.jpg
--------------------------------------------------------------------------------
/assets/img/planets/Neptune.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/odracirdev/challengeHTML/HEAD/assets/img/planets/Neptune.jpg
--------------------------------------------------------------------------------
/assets/img/portada_noticia.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/odracirdev/challengeHTML/HEAD/assets/img/portada_noticia.webp
--------------------------------------------------------------------------------
/assets/img/HTML-30-day-challenge.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/odracirdev/challengeHTML/HEAD/assets/img/HTML-30-day-challenge.jpg
--------------------------------------------------------------------------------
/assets/img/HTML-30-day-challenge.jxl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/odracirdev/challengeHTML/HEAD/assets/img/HTML-30-day-challenge.jxl
--------------------------------------------------------------------------------
/assets/img/HTML-30-day-challenge.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/odracirdev/challengeHTML/HEAD/assets/img/HTML-30-day-challenge.avif
--------------------------------------------------------------------------------
/assets/img/HTML-30-day-challenge.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/odracirdev/challengeHTML/HEAD/assets/img/HTML-30-day-challenge.webp
--------------------------------------------------------------------------------
/assets/img/planets/Venus-real_color.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/odracirdev/challengeHTML/HEAD/assets/img/planets/Venus-real_color.jpg
--------------------------------------------------------------------------------
/assets/img/simbols/Earth_symbol.svg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/odracirdev/challengeHTML/HEAD/assets/img/simbols/Earth_symbol.svg.png
--------------------------------------------------------------------------------
/assets/img/simbols/Mars_symbol.svg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/odracirdev/challengeHTML/HEAD/assets/img/simbols/Mars_symbol.svg.png
--------------------------------------------------------------------------------
/assets/img/simbols/Venus_symbol.svg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/odracirdev/challengeHTML/HEAD/assets/img/simbols/Venus_symbol.svg.png
--------------------------------------------------------------------------------
/assets/img/simbols/Jupiter_symbol.svg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/odracirdev/challengeHTML/HEAD/assets/img/simbols/Jupiter_symbol.svg.png
--------------------------------------------------------------------------------
/assets/img/simbols/Mercury_symbol.svg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/odracirdev/challengeHTML/HEAD/assets/img/simbols/Mercury_symbol.svg.png
--------------------------------------------------------------------------------
/assets/img/simbols/Neptune_symbol.svg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/odracirdev/challengeHTML/HEAD/assets/img/simbols/Neptune_symbol.svg.png
--------------------------------------------------------------------------------
/assets/img/simbols/Saturn_symbol.svg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/odracirdev/challengeHTML/HEAD/assets/img/simbols/Saturn_symbol.svg.png
--------------------------------------------------------------------------------
/assets/img/simbols/Uranus_monogram.svg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/odracirdev/challengeHTML/HEAD/assets/img/simbols/Uranus_monogram.svg.png
--------------------------------------------------------------------------------
/assets/img/planets/Mars_Valles_Marineris.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/odracirdev/challengeHTML/HEAD/assets/img/planets/Mars_Valles_Marineris.jpeg
--------------------------------------------------------------------------------
/assets/img/planets/Earth_Eastern_Hemisphere.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/odracirdev/challengeHTML/HEAD/assets/img/planets/Earth_Eastern_Hemisphere.jpg
--------------------------------------------------------------------------------
/assets/img/fondo-papel-grunge-vintage_1048-10911.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/odracirdev/challengeHTML/HEAD/assets/img/fondo-papel-grunge-vintage_1048-10911.avif
--------------------------------------------------------------------------------
/desafios/10/script.js:
--------------------------------------------------------------------------------
1 | function changeVideo(videoId) {
2 | var iframe = document.getElementById('video');
3 | iframe.src = "https://www.youtube.com/embed/" + videoId;
4 | }
--------------------------------------------------------------------------------
/assets/img/planets/Saturn_from_Cassini_Orbiter_(2004-10-06).jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/odracirdev/challengeHTML/HEAD/assets/img/planets/Saturn_from_Cassini_Orbiter_(2004-10-06).jpg
--------------------------------------------------------------------------------
/assets/img/planets/50px-Mercury_in_color_-_Prockter07_centered.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/odracirdev/challengeHTML/HEAD/assets/img/planets/50px-Mercury_in_color_-_Prockter07_centered.jpg
--------------------------------------------------------------------------------
/desafios/28/script.js:
--------------------------------------------------------------------------------
1 | const showButton = document.querySelector("#mostrar");
2 | showButton.addEventListener("click", function () {
3 | const alertDialog = document.querySelector("#alerta");
4 | alertDialog.showModal();
5 | });
--------------------------------------------------------------------------------
/desafios/30/script.js:
--------------------------------------------------------------------------------
1 | const button = document.getElementById('confetti')
2 | const canvas = document.getElementById('custom_canvas')
3 |
4 | const jsConfetti = new JSConfetti({ canvas })
5 |
6 | button.addEventListener('click', () => {
7 | jsConfetti.addConfetti()
8 | })
--------------------------------------------------------------------------------
/assets/img/play.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/desafios/29/script.js:
--------------------------------------------------------------------------------
1 | const [firstSection, secondSection, thirdSection] = document.querySelectorAll("section");
2 | const tab1 = document.querySelector("#tab-1");
3 | const tab2 = document.querySelector("#tab-2");
4 | const tab3 = document.querySelector("#tab-3");
5 |
6 | tab1.addEventListener("click", function() {
7 | firstSection.removeAttribute("hidden")
8 | secondSection.setAttribute("hidden", "")
9 | thirdSection.setAttribute("hidden","")
10 | });
11 |
12 | tab2.addEventListener("click", function() {
13 | firstSection.setAttribute("hidden", "")
14 | secondSection.removeAttribute("hidden")
15 | thirdSection.setAttribute("hidden","")
16 | });
17 |
18 | tab3.addEventListener("click", function() {
19 | firstSection.setAttribute("hidden", "")
20 | secondSection.setAttribute("hidden", "")
21 | thirdSection.removeAttribute("hidden")
22 | });
23 |
--------------------------------------------------------------------------------
/assets/img/twitch.svg:
--------------------------------------------------------------------------------
1 |
4 |
6 |
11 |
12 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/assets/img/github.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/img/discord.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2024 Ricardo Cuauro
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/desafios/01/style.css:
--------------------------------------------------------------------------------
1 | * {
2 | margin: 0;
3 | padding: 0;
4 | box-sizing: border-box;
5 | }
6 |
7 | html {
8 | color-scheme: dark;
9 | font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
10 | font-size: 1.2rem;
11 | }
12 |
13 | h2, h3 {
14 | margin-bottom: 0.5rem;
15 | }
16 |
17 | .main {
18 | display: flex;
19 | min-width: 100vw;
20 | min-height: 100vh;
21 | }
22 |
23 | .code {
24 | width: 50%;
25 | height: auto;
26 | display: flex;
27 | flex-direction: column;
28 | gap: 2rem;
29 | padding: 1rem;
30 | }
31 |
32 | .view {
33 | width: 50%;
34 | height: auto;
35 | background-color: #2d2d2d;
36 | display: flex;
37 | flex-direction: column;
38 | justify-content: center;
39 | align-items: center;
40 | padding: 1rem;
41 | }
42 |
43 | .btn-next {
44 | background-color: #2d2d2d;
45 | color: #fff;
46 | padding: 14px 18px;
47 | text-decoration: none;
48 | width: max-content;
49 | display: inline-flex;
50 | gap: 6px;
51 | align-items: end;
52 | line-height: 95%;
53 | transition: background-color 300ms ease;
54 | }
55 |
56 | .btn-next:hover {
57 | background-color: #383838;
58 | }
59 |
60 | @media screen and (min-width: 300px) and (max-width: 960px){
61 | .main {
62 | width: 100vw;
63 | display: flex;
64 | flex-direction: column;
65 | }
66 | .code {
67 | width: 100%;
68 | }
69 | .view {
70 | width: 100%;
71 | }
72 | }
--------------------------------------------------------------------------------
/desafios/12/style.css:
--------------------------------------------------------------------------------
1 | * {
2 | margin: 0;
3 | padding: 0;
4 | box-sizing: border-box;
5 | }
6 |
7 | html {
8 | color-scheme: dark;
9 | font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
10 | font-size: 1.2rem;
11 | }
12 |
13 | h2, h3 {
14 | margin-bottom: 0.5rem;
15 | }
16 |
17 | .main {
18 | display: flex;
19 | min-width: 100vw;
20 | min-height: 100vh;
21 | }
22 |
23 | .code {
24 | width: 50%;
25 | height: auto;
26 | display: flex;
27 | flex-direction: column;
28 | gap: 2rem;
29 | padding: 1rem;
30 | }
31 |
32 | .view {
33 | width: 50%;
34 | height: auto;
35 | background-color: #2d2d2d;
36 | display: flex;
37 | flex-direction: column;
38 | padding: 1rem;
39 | }
40 |
41 | div:has(> .btn-prev) {
42 | display: flex;
43 | gap: 1rem;
44 | align-items: center;
45 | }
46 |
47 | .btn-prev,
48 | .btn-next {
49 | background-color: #2d2d2d;
50 | color: #fff;
51 | padding: 14px 18px;
52 | text-decoration: none;
53 | width: max-content;
54 | display: inline-flex;
55 | gap: 6px;
56 | align-items: end;
57 | line-height: 95%;
58 | transition: background-color 300ms ease;
59 | }
60 |
61 | .btn-prev:hover,
62 | .btn-next:hover {
63 | background-color: #383838;
64 | }
65 |
66 | @media screen and (min-width: 300px) and (max-width: 960px){
67 | .main {
68 | width: 100vw;
69 | display: flex;
70 | flex-direction: column;
71 | }
72 | .code {
73 | width: 100%;
74 | }
75 | .view {
76 | width: 100%;
77 | }
78 | }
--------------------------------------------------------------------------------
/desafios/13/style.css:
--------------------------------------------------------------------------------
1 | * {
2 | margin: 0;
3 | padding: 0;
4 | box-sizing: border-box;
5 | }
6 |
7 | html {
8 | color-scheme: dark;
9 | font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
10 | font-size: 1.2rem;
11 | }
12 |
13 | h2, h3 {
14 | margin-bottom: 0.5rem;
15 | }
16 |
17 | .main {
18 | display: flex;
19 | min-width: 100vw;
20 | min-height: 100vh;
21 | }
22 |
23 | .code {
24 | width: 50%;
25 | height: auto;
26 | display: flex;
27 | flex-direction: column;
28 | gap: 2rem;
29 | padding: 1rem;
30 | }
31 |
32 | .view {
33 | width: 50%;
34 | height: auto;
35 | background-color: #2d2d2d;
36 | display: flex;
37 | flex-direction: column;
38 | padding: 1rem;
39 | }
40 |
41 | div:has(> .btn-prev) {
42 | display: flex;
43 | gap: 1rem;
44 | align-items: center;
45 | }
46 |
47 | .btn-prev,
48 | .btn-next {
49 | background-color: #2d2d2d;
50 | color: #fff;
51 | padding: 14px 18px;
52 | text-decoration: none;
53 | width: max-content;
54 | display: inline-flex;
55 | gap: 6px;
56 | align-items: end;
57 | line-height: 95%;
58 | transition: background-color 300ms ease;
59 | }
60 |
61 | .btn-prev:hover,
62 | .btn-next:hover {
63 | background-color: #383838;
64 | }
65 |
66 | @media screen and (min-width: 300px) and (max-width: 960px){
67 | .main {
68 | width: 100vw;
69 | display: flex;
70 | flex-direction: column;
71 | }
72 | .code {
73 | width: 100%;
74 | }
75 | .view {
76 | width: 100%;
77 | }
78 | }
--------------------------------------------------------------------------------
/desafios/02/style.css:
--------------------------------------------------------------------------------
1 | * {
2 | margin: 0;
3 | padding: 0;
4 | box-sizing: border-box;
5 | }
6 |
7 | html {
8 | color-scheme: dark;
9 | font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
10 | font-size: 1.2rem;
11 | }
12 |
13 | h1, h2, h3 {
14 | margin-bottom: 0.5rem;
15 | }
16 |
17 | .main {
18 | display: flex;
19 | min-width: 100vw;
20 | min-height: 100vh;
21 | }
22 |
23 | .code {
24 | width: 50%;
25 | height: auto;
26 | display: flex;
27 | flex-direction: column;
28 | gap: 2rem;
29 | padding: 1rem;
30 | }
31 |
32 | .view {
33 | width: 50%;
34 | height: auto;
35 | background-color: #2d2d2d;
36 | display: flex;
37 | flex-direction: column;
38 | gap: 1rem;
39 | padding: 1rem;
40 | }
41 |
42 | div:has(> .btn-prev) {
43 | display: flex;
44 | gap: 1rem;
45 | align-items: center;
46 | }
47 |
48 | .btn-prev,
49 | .btn-next {
50 | background-color: #2d2d2d;
51 | color: #fff;
52 | padding: 14px 18px;
53 | text-decoration: none;
54 | width: max-content;
55 | display: inline-flex;
56 | gap: 6px;
57 | align-items: end;
58 | line-height: 95%;
59 | transition: background-color 300ms ease;
60 | }
61 |
62 | .btn-prev:hover,
63 | .btn-next:hover {
64 | background-color: #383838;
65 | }
66 |
67 | @media screen and (min-width: 300px) and (max-width: 960px){
68 | .main {
69 | width: 100vw;
70 | display: flex;
71 | flex-direction: column;
72 | }
73 | .code {
74 | width: 100%;
75 | }
76 | .view {
77 | width: 100%;
78 | }
79 | }
--------------------------------------------------------------------------------
/desafios/07/style.css:
--------------------------------------------------------------------------------
1 | * {
2 | margin: 0;
3 | padding: 0;
4 | box-sizing: border-box;
5 | }
6 |
7 | html {
8 | color-scheme: dark;
9 | font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
10 | font-size: 1.2rem;
11 | }
12 |
13 | h2, h3 {
14 | margin-bottom: 0.5rem;
15 | }
16 |
17 | .main {
18 | display: flex;
19 | min-width: 100vw;
20 | min-height: 100vh;
21 | }
22 |
23 | .code {
24 | width: 50%;
25 | height: auto;
26 | display: flex;
27 | flex-direction: column;
28 | gap: 2rem;
29 | padding: 1rem;
30 | }
31 |
32 | .view {
33 | width: 50%;
34 | height: auto;
35 | background-color: #2d2d2d;
36 | display: flex;
37 | flex-direction: column;
38 | padding: 1rem;
39 | }
40 |
41 | div:has(> .btn-prev) {
42 | display: flex;
43 | gap: 1rem;
44 | align-items: center;
45 | }
46 |
47 | .btn-prev,
48 | .btn-next {
49 | background-color: #2d2d2d;
50 | color: #fff;
51 | padding: 14px 18px;
52 | text-decoration: none;
53 | width: max-content;
54 | display: inline-flex;
55 | gap: 6px;
56 | align-items: end;
57 | line-height: 95%;
58 | transition: background-color 300ms ease;
59 | }
60 |
61 | .btn-prev:hover,
62 | .btn-next:hover {
63 | background-color: #383838;
64 | }
65 | .view img {
66 | width: 100%;
67 | }
68 |
69 | @media screen and (min-width: 300px) and (max-width: 960px){
70 | .main {
71 | width: 100vw;
72 | display: flex;
73 | flex-direction: column;
74 | }
75 | .code {
76 | width: 100%;
77 | }
78 | .view {
79 | width: 100%;
80 | }
81 | }
--------------------------------------------------------------------------------
/desafios/06/style.css:
--------------------------------------------------------------------------------
1 | * {
2 | margin: 0;
3 | padding: 0;
4 | box-sizing: border-box;
5 | }
6 |
7 | html {
8 | color-scheme: dark;
9 | font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
10 | font-size: 1.2rem;
11 | }
12 |
13 | body {
14 | overflow-x: hidden;
15 | }
16 |
17 | h2, h3 {
18 | margin-bottom: 0.5rem;
19 | }
20 |
21 | .main {
22 | display: flex;
23 | min-width: 100vw;
24 | min-height: 100vh;
25 | }
26 |
27 | .code {
28 | width: 50%;
29 | height: auto;
30 | display: flex;
31 | flex-direction: column;
32 | gap: 2rem;
33 | padding: 1rem;
34 | }
35 |
36 | .view {
37 | width: 50%;
38 | height: auto;
39 | background-color: #2d2d2d;
40 | display: flex;
41 | flex-direction: column;
42 | padding: 1rem;
43 | }
44 |
45 | div:has(> .btn-prev) {
46 | display: flex;
47 | gap: 1rem;
48 | align-items: center;
49 | }
50 |
51 | .btn-prev,
52 | .btn-next {
53 | background-color: #2d2d2d;
54 | color: #fff;
55 | padding: 14px 18px;
56 | text-decoration: none;
57 | width: max-content;
58 | display: inline-flex;
59 | gap: 6px;
60 | align-items: end;
61 | line-height: 95%;
62 | transition: background-color 300ms ease;
63 | }
64 |
65 | .btn-prev:hover,
66 | .btn-next:hover {
67 | background-color: #383838;
68 | }
69 |
70 | @media screen and (min-width: 300px) and (max-width: 960px){
71 | .main {
72 | width: 100vw;
73 | display: flex;
74 | flex-direction: column;
75 | }
76 | .code {
77 | width: 100%;
78 | }
79 | .view {
80 | width: 100%;
81 | }
82 | }
--------------------------------------------------------------------------------
/desafios/14/style.css:
--------------------------------------------------------------------------------
1 | * {
2 | margin: 0;
3 | padding: 0;
4 | box-sizing: border-box;
5 | }
6 |
7 | html {
8 | color-scheme: dark;
9 | font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
10 | font-size: 1.2rem;
11 | }
12 |
13 | body {
14 | overflow-x: hidden;
15 | }
16 |
17 | h2, h3 {
18 | margin-bottom: 0.5rem;
19 | }
20 |
21 | .main {
22 | display: flex;
23 | min-width: 100vw;
24 | min-height: 100vh;
25 | }
26 |
27 | .code {
28 | width: 50%;
29 | height: auto;
30 | display: flex;
31 | flex-direction: column;
32 | gap: 2rem;
33 | padding: 1rem;
34 | }
35 |
36 | .view {
37 | width: 50%;
38 | height: auto;
39 | background-color: #2d2d2d;
40 | display: flex;
41 | flex-direction: column;
42 | padding: 1rem;
43 | }
44 |
45 | div:has(> .btn-prev) {
46 | display: flex;
47 | gap: 1rem;
48 | align-items: center;
49 | }
50 |
51 | .btn-prev,
52 | .btn-next {
53 | background-color: #2d2d2d;
54 | color: #fff;
55 | padding: 14px 18px;
56 | text-decoration: none;
57 | width: max-content;
58 | display: inline-flex;
59 | gap: 6px;
60 | align-items: end;
61 | line-height: 95%;
62 | transition: background-color 300ms ease;
63 | }
64 |
65 | .btn-prev:hover,
66 | .btn-next:hover {
67 | background-color: #383838;
68 | }
69 |
70 | @media screen and (min-width: 300px) and (max-width: 960px){
71 | .main {
72 | width: 100vw;
73 | display: flex;
74 | flex-direction: column;
75 | }
76 | .code {
77 | width: 100%;
78 | }
79 | .view {
80 | width: 100%;
81 | }
82 | }
--------------------------------------------------------------------------------
/desafios/05/style.css:
--------------------------------------------------------------------------------
1 | * {
2 | margin: 0;
3 | padding: 0;
4 | box-sizing: border-box;
5 | }
6 |
7 | html {
8 | color-scheme: dark;
9 | font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
10 | font-size: 1.2rem;
11 | }
12 |
13 | h2, h3 {
14 | margin-bottom: 0.5rem;
15 | }
16 |
17 | .main {
18 | display: flex;
19 | min-width: 100vw;
20 | min-height: 100vh;
21 | }
22 |
23 | .code {
24 | width: 50%;
25 | height: auto;
26 | display: flex;
27 | flex-direction: column;
28 | gap: 2rem;
29 | padding: 1rem;
30 | }
31 |
32 | .view {
33 | width: 50%;
34 | height: auto;
35 | background-color: #2d2d2d;
36 | display: flex;
37 | flex-direction: column;
38 | justify-content: center;
39 | align-items: center;
40 | padding: 1rem;
41 | }
42 |
43 | div:has(> .btn-prev) {
44 | display: flex;
45 | gap: 1rem;
46 | align-items: center;
47 | }
48 |
49 | .btn-prev,
50 | .btn-next {
51 | background-color: #2d2d2d;
52 | color: #fff;
53 | padding: 14px 18px;
54 | text-decoration: none;
55 | width: max-content;
56 | display: inline-flex;
57 | gap: 6px;
58 | align-items: end;
59 | line-height: 95%;
60 | transition: background-color 300ms ease;
61 | }
62 |
63 | .btn-prev:hover,
64 | .btn-next:hover {
65 | background-color: #383838;
66 | }
67 |
68 | @media screen and (min-width: 300px) and (max-width: 960px){
69 | .main {
70 | width: 100vw;
71 | display: flex;
72 | flex-direction: column;
73 | }
74 | .code {
75 | width: 100%;
76 | }
77 | .view {
78 | width: 100%;
79 | }
80 | }
--------------------------------------------------------------------------------
/desafios/03/style.css:
--------------------------------------------------------------------------------
1 | * {
2 | margin: 0;
3 | padding: 0;
4 | box-sizing: border-box;
5 | }
6 |
7 | html {
8 | color-scheme: dark;
9 | font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
10 | font-size: 1.2rem;
11 | }
12 |
13 | h1, h2, h3 {
14 | margin-bottom: 0.5rem;
15 | }
16 |
17 | .main {
18 | display: flex;
19 | min-width: 100vw;
20 | min-height: 100vh;
21 | }
22 |
23 | .code {
24 | width: 50%;
25 | height: auto;
26 | display: flex;
27 | flex-direction: column;
28 | gap: 2rem;
29 | padding: 1rem;
30 | }
31 |
32 | .view {
33 | width: 50%;
34 | height: auto;
35 | background-color: #2d2d2d;
36 | display: flex;
37 | flex-direction: column;
38 | gap: 1rem;
39 | padding: 1rem;
40 | }
41 |
42 | .view ul {
43 | margin-left: 5%;
44 | }
45 |
46 | div:has(> .btn-prev) {
47 | display: flex;
48 | gap: 1rem;
49 | align-items: center;
50 | }
51 |
52 | .btn-prev,
53 | .btn-next {
54 | background-color: #2d2d2d;
55 | color: #fff;
56 | padding: 14px 18px;
57 | text-decoration: none;
58 | width: max-content;
59 | display: inline-flex;
60 | gap: 6px;
61 | align-items: end;
62 | line-height: 95%;
63 | transition: background-color 300ms ease;
64 | }
65 |
66 | .btn-prev:hover,
67 | .btn-next:hover {
68 | background-color: #383838;
69 | }
70 |
71 | @media screen and (min-width: 300px) and (max-width: 960px){
72 | .main {
73 | width: 100vw;
74 | display: flex;
75 | flex-direction: column;
76 | }
77 | .code {
78 | width: 100%;
79 | }
80 | .view {
81 | width: 100%;
82 | }
83 | }
--------------------------------------------------------------------------------
/desafios/27/style.css:
--------------------------------------------------------------------------------
1 | * {
2 | margin: 0;
3 | padding: 0;
4 | box-sizing: border-box;
5 | }
6 |
7 | html {
8 | color-scheme: dark;
9 | font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
10 | font-size: 1.2rem;
11 | }
12 |
13 | body {
14 | overflow-x: hidden;
15 | }
16 |
17 | h2, h3 {
18 | margin-bottom: 0.5rem;
19 | }
20 |
21 | .main {
22 | display: flex;
23 | min-width: 100vw;
24 | min-height: 100vh;
25 | }
26 |
27 | .code {
28 | width: 50%;
29 | height: auto;
30 | display: flex;
31 | flex-direction: column;
32 | gap: 2rem;
33 | padding: 1rem;
34 | }
35 |
36 | .view {
37 | width: 50%;
38 | height: auto;
39 | background-color: #2d2d2d;
40 | display: flex;
41 | flex-direction: column;
42 | justify-content: center;
43 | align-items: center;
44 | padding: 1rem;
45 | }
46 |
47 | div:has(> .btn-prev) {
48 | display: flex;
49 | gap: 1rem;
50 | align-items: center;
51 | }
52 |
53 | .btn-prev,
54 | .btn-next {
55 | background-color: #2d2d2d;
56 | color: #fff;
57 | padding: 14px 18px;
58 | text-decoration: none;
59 | width: max-content;
60 | display: inline-flex;
61 | gap: 6px;
62 | align-items: end;
63 | line-height: 95%;
64 | transition: background-color 300ms ease;
65 | }
66 |
67 | .btn-prev:hover,
68 | .btn-next:hover {
69 | background-color: #383838;
70 | }
71 |
72 | @media screen and (min-width: 300px) and (max-width: 960px){
73 | .main {
74 | width: 100vw;
75 | display: flex;
76 | flex-direction: column;
77 | }
78 | .code {
79 | width: 100%;
80 | }
81 | .view {
82 | width: 100%;
83 | }
84 | }
--------------------------------------------------------------------------------
/desafios/28/style.css:
--------------------------------------------------------------------------------
1 | * {
2 | margin: 0;
3 | padding: 0;
4 | box-sizing: border-box;
5 | }
6 |
7 | html {
8 | color-scheme: dark;
9 | font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
10 | font-size: 1.2rem;
11 | }
12 |
13 | body {
14 | overflow-x: hidden;
15 | }
16 |
17 | h2, h3 {
18 | margin-bottom: 0.5rem;
19 | }
20 |
21 | .main {
22 | display: flex;
23 | min-width: 100vw;
24 | min-height: 100vh;
25 | }
26 |
27 | .code {
28 | width: 50%;
29 | height: auto;
30 | display: flex;
31 | flex-direction: column;
32 | gap: 2rem;
33 | padding: 1rem;
34 | }
35 |
36 | .code pre {
37 | height: 35vh;
38 | }
39 |
40 | .view {
41 | width: 50%;
42 | height: auto;
43 | background-color: #2d2d2d;
44 | display: flex;
45 | flex-direction: column;
46 | justify-content: center;
47 | align-items: center;
48 | padding: 1rem;
49 | }
50 |
51 | div:has(> .btn-prev) {
52 | display: flex;
53 | gap: 1rem;
54 | align-items: center;
55 | }
56 |
57 | .btn-prev,
58 | .btn-next {
59 | background-color: #2d2d2d;
60 | color: #fff;
61 | padding: 14px 18px;
62 | text-decoration: none;
63 | width: max-content;
64 | display: inline-flex;
65 | gap: 6px;
66 | align-items: end;
67 | line-height: 95%;
68 | transition: background-color 300ms ease;
69 | }
70 |
71 | .btn-prev:hover,
72 | .btn-next:hover {
73 | background-color: #383838;
74 | }
75 |
76 | @media screen and (min-width: 300px) and (max-width: 960px){
77 | .main {
78 | width: 100vw;
79 | display: flex;
80 | flex-direction: column;
81 | }
82 | .code {
83 | width: 100%;
84 | }
85 | .view {
86 | width: 100%;
87 | }
88 | }
--------------------------------------------------------------------------------
/desafios/29/style.css:
--------------------------------------------------------------------------------
1 | * {
2 | margin: 0;
3 | padding: 0;
4 | box-sizing: border-box;
5 | }
6 |
7 | html {
8 | color-scheme: dark;
9 | font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
10 | font-size: 1.2rem;
11 | }
12 |
13 | body {
14 | overflow-x: hidden;
15 | }
16 |
17 | h2, h3 {
18 | margin-bottom: 0.5rem;
19 | }
20 |
21 | .main {
22 | display: flex;
23 | min-width: 100vw;
24 | min-height: 100vh;
25 | }
26 |
27 | .code {
28 | width: 50%;
29 | height: auto;
30 | display: flex;
31 | flex-direction: column;
32 | gap: 2rem;
33 | padding: 1rem;
34 | }
35 |
36 | .code pre {
37 | height: 35vh;
38 | }
39 |
40 | .view {
41 | width: 50%;
42 | height: auto;
43 | background-color: #2d2d2d;
44 | display: flex;
45 | flex-direction: column;
46 | justify-content: center;
47 | align-items: center;
48 | padding: 1rem;
49 | }
50 |
51 | div:has(> .btn-prev) {
52 | display: flex;
53 | gap: 1rem;
54 | align-items: center;
55 | }
56 |
57 | .btn-prev,
58 | .btn-next {
59 | background-color: #2d2d2d;
60 | color: #fff;
61 | padding: 14px 18px;
62 | text-decoration: none;
63 | width: max-content;
64 | display: inline-flex;
65 | gap: 6px;
66 | align-items: end;
67 | line-height: 95%;
68 | transition: background-color 300ms ease;
69 | }
70 |
71 | .btn-prev:hover,
72 | .btn-next:hover {
73 | background-color: #383838;
74 | }
75 |
76 | @media screen and (min-width: 300px) and (max-width: 960px){
77 | .main {
78 | width: 100vw;
79 | display: flex;
80 | flex-direction: column;
81 | }
82 | .code {
83 | width: 100%;
84 | }
85 | .view {
86 | width: 100%;
87 | }
88 | }
--------------------------------------------------------------------------------
/desafios/15/style.css:
--------------------------------------------------------------------------------
1 | * {
2 | margin: 0;
3 | padding: 0;
4 | box-sizing: border-box;
5 | }
6 |
7 | html {
8 | color-scheme: dark;
9 | font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
10 | font-size: 1.2rem;
11 | }
12 |
13 | h2, h3 {
14 | margin-bottom: 0.5rem;
15 | }
16 |
17 | .main {
18 | display: flex;
19 | min-width: 100vw;
20 | min-height: 100vh;
21 | }
22 |
23 | .code {
24 | width: 50%;
25 | height: auto;
26 | display: flex;
27 | flex-direction: column;
28 | gap: 2rem;
29 | padding: 1rem;
30 | }
31 |
32 | .view {
33 | width: 50%;
34 | height: auto;
35 | background-color: #2d2d2d;
36 | display: flex;
37 | flex-direction: column;
38 | align-items: center;
39 | justify-content: center;
40 | padding: 1rem;
41 | }
42 |
43 | div:has(> .btn-prev) {
44 | display: flex;
45 | gap: 1rem;
46 | align-items: center;
47 | }
48 |
49 | .btn-prev,
50 | .btn-next {
51 | background-color: #2d2d2d;
52 | color: #fff;
53 | padding: 14px 18px;
54 | text-decoration: none;
55 | width: max-content;
56 | display: inline-flex;
57 | gap: 6px;
58 | align-items: end;
59 | line-height: 95%;
60 | transition: background-color 300ms ease;
61 | }
62 |
63 | .btn-prev:hover,
64 | .btn-next:hover {
65 | background-color: #383838;
66 | }
67 |
68 | @media screen and (min-width: 300px) and (max-width: 960px){
69 | .main {
70 | width: 100vw;
71 | display: flex;
72 | flex-direction: column;
73 | }
74 | .code {
75 | width: 100%;
76 | }
77 | .view {
78 | width: 100%;
79 | }
80 | .view video {
81 | aspect-ratio: 16 / 9;
82 | width: 100%;
83 | height: auto;
84 | }
85 | }
--------------------------------------------------------------------------------
/desafios/01/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | HTML 30-day challenge - Día 1
7 |
8 |
9 |
10 |
11 |
12 |
13 |
17 |
18 | HTML
19 |
20 |
21 | <head>
22 | <meta charset="UTF-8">
23 | <meta name="viewport" content="width=device-width, initial-scale=1.0">
24 | <title>HTML 30-day challenge - Día 1</title>
25 | <link rel="stylesheet" href="style.css">
26 | </head>
27 |
28 |
29 |
30 |
31 | Día 2
32 |
33 |
34 |
35 |
36 |
37 |
38 |
Vista previa
39 |
No disponible
40 |
41 |
42 |
43 |
44 |
45 |
--------------------------------------------------------------------------------
/desafios/25/style.css:
--------------------------------------------------------------------------------
1 | * {
2 | margin: 0;
3 | padding: 0;
4 | box-sizing: border-box;
5 | }
6 |
7 | html {
8 | color-scheme: dark;
9 | font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
10 | font-size: 1.2rem;
11 | }
12 |
13 | body {
14 | overflow-x: hidden;
15 | }
16 |
17 | h2, h3 {
18 | margin-bottom: 0.5rem;
19 | }
20 |
21 | .main {
22 | display: flex;
23 | min-width: 100vw;
24 | min-height: 100vh;
25 | }
26 |
27 | .code {
28 | width: 50%;
29 | height: auto;
30 | display: flex;
31 | flex-direction: column;
32 | gap: 2rem;
33 | padding: 1rem;
34 | }
35 |
36 | .code pre {
37 | height: 35vh;
38 | }
39 |
40 | .view {
41 | width: 50%;
42 | height: auto;
43 | background-color: #2d2d2d;
44 | display: flex;
45 | flex-direction: column;
46 | justify-content: center;
47 | align-items: center;
48 | padding: 1rem;
49 | }
50 |
51 | img {
52 | width: 98%;
53 | margin-bottom: 1rem;
54 | }
55 |
56 | div:has(> .btn-prev) {
57 | display: flex;
58 | gap: 1rem;
59 | align-items: center;
60 | }
61 |
62 | .btn-prev,
63 | .btn-next {
64 | background-color: #2d2d2d;
65 | color: #fff;
66 | padding: 14px 18px;
67 | text-decoration: none;
68 | width: max-content;
69 | display: inline-flex;
70 | gap: 6px;
71 | align-items: end;
72 | line-height: 95%;
73 | transition: background-color 300ms ease;
74 | }
75 |
76 | .btn-prev:hover,
77 | .btn-next:hover {
78 | background-color: #383838;
79 | }
80 |
81 | @media screen and (min-width: 300px) and (max-width: 960px){
82 | .main {
83 | width: 100vw;
84 | display: flex;
85 | flex-direction: column;
86 | }
87 | .code {
88 | width: 100%;
89 | }
90 | .view {
91 | width: 100%;
92 | }
93 | }
--------------------------------------------------------------------------------
/desafios/08/style.css:
--------------------------------------------------------------------------------
1 | * {
2 | margin: 0;
3 | padding: 0;
4 | box-sizing: border-box;
5 | }
6 |
7 | html {
8 | color-scheme: dark;
9 | font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
10 | font-size: 1.2rem;
11 | }
12 |
13 | body {
14 | overflow-x: hidden;
15 | }
16 |
17 | h2, h3 {
18 | margin-bottom: 0.5rem;
19 | }
20 |
21 | .main {
22 | display: flex;
23 | min-width: 100vw;
24 | min-height: 100vh;
25 | }
26 |
27 | .code {
28 | width: 50%;
29 | height: auto;
30 | display: flex;
31 | flex-direction: column;
32 | gap: 2rem;
33 | padding: 1rem;
34 | }
35 |
36 | .view {
37 | width: 50%;
38 | height: auto;
39 | background-color: #2d2d2d;
40 | display: flex;
41 | flex-direction: column;
42 | padding: 1rem;
43 | }
44 |
45 | .view p {
46 | margin-bottom: 1rem;
47 | }
48 |
49 | .color:first-of-type {
50 | background-color: aquamarine;
51 | }
52 |
53 | .color:last-of-type {
54 | background-color: blueviolet;
55 | }
56 |
57 | div:has(> .btn-prev) {
58 | display: flex;
59 | gap: 1rem;
60 | align-items: center;
61 | }
62 |
63 | .btn-prev,
64 | .btn-next {
65 | background-color: #2d2d2d;
66 | color: #fff;
67 | padding: 14px 18px;
68 | text-decoration: none;
69 | width: max-content;
70 | display: inline-flex;
71 | gap: 6px;
72 | align-items: end;
73 | line-height: 95%;
74 | transition: background-color 300ms ease;
75 | }
76 |
77 | .btn-prev:hover,
78 | .btn-next:hover {
79 | background-color: #383838;
80 | }
81 |
82 | @media screen and (min-width: 300px) and (max-width: 960px){
83 | .main {
84 | width: 100vw;
85 | display: flex;
86 | flex-direction: column;
87 | }
88 | .code {
89 | width: 100%;
90 | }
91 | .view {
92 | width: 100%;
93 | }
94 | }
--------------------------------------------------------------------------------
/desafios/23/style.css:
--------------------------------------------------------------------------------
1 | * {
2 | margin: 0;
3 | padding: 0;
4 | box-sizing: border-box;
5 | }
6 |
7 | html {
8 | color-scheme: dark;
9 | font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
10 | font-size: 1.2rem;
11 | }
12 |
13 | body {
14 | overflow-x: hidden;
15 | }
16 |
17 | h2, h3 {
18 | margin-bottom: 0.5rem;
19 | }
20 |
21 | .main {
22 | display: flex;
23 | min-width: 100vw;
24 | min-height: 100vh;
25 | }
26 |
27 | .code {
28 | width: 50%;
29 | height: auto;
30 | display: flex;
31 | flex-direction: column;
32 | gap: 2rem;
33 | padding: 1rem;
34 | }
35 |
36 | .code pre {
37 | height: 35vh;
38 | }
39 |
40 | .view {
41 | width: 50%;
42 | height: auto;
43 | background-color: #2d2d2d;
44 | display: flex;
45 | flex-direction: column;
46 | justify-content: center;
47 | align-items: center;
48 | padding: 1rem;
49 | }
50 |
51 | input {
52 | padding: 8px;
53 | margin: 1rem 0;
54 | border: none;
55 | box-shadow: black 0 0 4px;
56 | }
57 |
58 | div:has(> .btn-prev) {
59 | display: flex;
60 | gap: 1rem;
61 | align-items: center;
62 | }
63 |
64 | .btn-prev,
65 | .btn-next {
66 | background-color: #2d2d2d;
67 | color: #fff;
68 | padding: 14px 18px;
69 | text-decoration: none;
70 | width: max-content;
71 | display: inline-flex;
72 | gap: 6px;
73 | align-items: end;
74 | line-height: 95%;
75 | transition: background-color 300ms ease;
76 | }
77 |
78 | .btn-prev:hover,
79 | .btn-next:hover {
80 | background-color: #383838;
81 | }
82 |
83 | @media screen and (min-width: 300px) and (max-width: 960px){
84 | .main {
85 | width: 100vw;
86 | display: flex;
87 | flex-direction: column;
88 | }
89 | .code {
90 | width: 100%;
91 | }
92 | .view {
93 | width: 100%;
94 | }
95 | }
--------------------------------------------------------------------------------
/desafios/24/style.css:
--------------------------------------------------------------------------------
1 | * {
2 | margin: 0;
3 | padding: 0;
4 | box-sizing: border-box;
5 | }
6 |
7 | html {
8 | color-scheme: dark;
9 | font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
10 | font-size: 1.2rem;
11 | }
12 |
13 | body {
14 | overflow-x: hidden;
15 | }
16 |
17 | h2, h3 {
18 | margin-bottom: 0.5rem;
19 | }
20 |
21 | .main {
22 | display: flex;
23 | min-width: 100vw;
24 | min-height: 100vh;
25 | }
26 |
27 | .code {
28 | width: 50%;
29 | height: auto;
30 | display: flex;
31 | flex-direction: column;
32 | gap: 2rem;
33 | padding: 1rem;
34 | }
35 |
36 | .code pre {
37 | height: 35vh;
38 | }
39 |
40 | .view {
41 | width: 50%;
42 | height: auto;
43 | background-color: #2d2d2d;
44 | display: flex;
45 | flex-direction: column;
46 | justify-content: center;
47 | align-items: center;
48 | padding: 1rem;
49 | }
50 |
51 | input {
52 | padding: 8px;
53 | margin: 1rem 0;
54 | border: none;
55 | box-shadow: black 0 0 4px;
56 |
57 | }
58 |
59 | div:has(> .btn-prev) {
60 | display: flex;
61 | gap: 1rem;
62 | align-items: center;
63 | }
64 |
65 | .btn-prev,
66 | .btn-next {
67 | background-color: #2d2d2d;
68 | color: #fff;
69 | padding: 14px 18px;
70 | text-decoration: none;
71 | width: max-content;
72 | display: inline-flex;
73 | gap: 6px;
74 | align-items: end;
75 | line-height: 95%;
76 | transition: background-color 300ms ease;
77 | }
78 |
79 | .btn-prev:hover,
80 | .btn-next:hover {
81 | background-color: #383838;
82 | }
83 |
84 | @media screen and (min-width: 300px) and (max-width: 960px){
85 | .main {
86 | width: 100vw;
87 | display: flex;
88 | flex-direction: column;
89 | }
90 | .code {
91 | width: 100%;
92 | }
93 | .view {
94 | width: 100%;
95 | }
96 | }
--------------------------------------------------------------------------------
/desafios/21/style.css:
--------------------------------------------------------------------------------
1 | * {
2 | margin: 0;
3 | padding: 0;
4 | box-sizing: border-box;
5 | }
6 |
7 | html {
8 | color-scheme: dark;
9 | font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
10 | font-size: 1.2rem;
11 | }
12 |
13 | body {
14 | overflow-x: hidden;
15 | }
16 |
17 | h2, h3 {
18 | margin-bottom: 0.5rem;
19 | }
20 |
21 | .main {
22 | display: flex;
23 | min-width: 100vw;
24 | min-height: 100vh;
25 | }
26 |
27 | .code {
28 | width: 50%;
29 | height: auto;
30 | display: flex;
31 | flex-direction: column;
32 | gap: 2rem;
33 | padding: 1rem;
34 | }
35 |
36 | .code pre {
37 | height: 35vh;
38 | }
39 |
40 | .view {
41 | width: 50%;
42 | height: auto;
43 | background-color: #2d2d2d;
44 | display: flex;
45 | flex-direction: column;
46 | justify-content: center;
47 | align-items: center;
48 | padding: 1rem;
49 | }
50 |
51 | select {
52 | width: 50%;
53 | padding: 8px;
54 | margin: 1rem 0;
55 | border: none;
56 | box-shadow: black 0 0 4px;
57 | }
58 |
59 | div:has(> .btn-prev) {
60 | display: flex;
61 | gap: 1rem;
62 | align-items: center;
63 | }
64 |
65 | .btn-prev,
66 | .btn-next {
67 | background-color: #2d2d2d;
68 | color: #fff;
69 | padding: 14px 18px;
70 | text-decoration: none;
71 | width: max-content;
72 | display: inline-flex;
73 | gap: 6px;
74 | align-items: end;
75 | line-height: 95%;
76 | transition: background-color 300ms ease;
77 | }
78 |
79 | .btn-prev:hover,
80 | .btn-next:hover {
81 | background-color: #383838;
82 | }
83 |
84 | @media screen and (min-width: 300px) and (max-width: 960px){
85 | .main {
86 | width: 100vw;
87 | display: flex;
88 | flex-direction: column;
89 | }
90 | .code {
91 | width: 100%;
92 | }
93 | .view {
94 | width: 100%;
95 | }
96 | }
--------------------------------------------------------------------------------
/desafios/22/style.css:
--------------------------------------------------------------------------------
1 | * {
2 | margin: 0;
3 | padding: 0;
4 | box-sizing: border-box;
5 | }
6 |
7 | html {
8 | color-scheme: dark;
9 | font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
10 | font-size: 1.2rem;
11 | }
12 |
13 | body {
14 | overflow-x: hidden;
15 | }
16 |
17 | h2, h3 {
18 | margin-bottom: 0.5rem;
19 | }
20 |
21 | .main {
22 | display: flex;
23 | min-width: 100vw;
24 | min-height: 100vh;
25 | }
26 |
27 | .code {
28 | width: 50%;
29 | height: auto;
30 | display: flex;
31 | flex-direction: column;
32 | gap: 2rem;
33 | padding: 1rem;
34 | }
35 |
36 | .code pre {
37 | height: 35vh;
38 | }
39 |
40 | .view {
41 | width: 50%;
42 | height: auto;
43 | background-color: #2d2d2d;
44 | display: flex;
45 | flex-direction: column;
46 | justify-content: center;
47 | align-items: center;
48 | padding: 1rem;
49 | }
50 |
51 | input {
52 | width: 50%;
53 | padding: 8px;
54 | margin: 1rem 0;
55 | border: none;
56 | box-shadow: black 0 0 4px;
57 | }
58 |
59 | div:has(> .btn-prev) {
60 | display: flex;
61 | gap: 1rem;
62 | align-items: center;
63 | }
64 |
65 | .btn-prev,
66 | .btn-next {
67 | background-color: #2d2d2d;
68 | color: #fff;
69 | padding: 14px 18px;
70 | text-decoration: none;
71 | width: max-content;
72 | display: inline-flex;
73 | gap: 6px;
74 | align-items: end;
75 | line-height: 95%;
76 | transition: background-color 300ms ease;
77 | }
78 |
79 | .btn-prev:hover,
80 | .btn-next:hover {
81 | background-color: #383838;
82 | }
83 |
84 | @media screen and (min-width: 300px) and (max-width: 960px){
85 | .main {
86 | width: 100vw;
87 | display: flex;
88 | flex-direction: column;
89 | }
90 | .code {
91 | width: 100%;
92 | }
93 | .view {
94 | width: 100%;
95 | }
96 | }
--------------------------------------------------------------------------------
/desafios/19/style.css:
--------------------------------------------------------------------------------
1 | * {
2 | margin: 0;
3 | padding: 0;
4 | box-sizing: border-box;
5 | }
6 |
7 | html {
8 | color-scheme: dark;
9 | font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
10 | font-size: 1.2rem;
11 | }
12 |
13 | body {
14 | overflow-x: hidden;
15 | }
16 |
17 | h2, h3 {
18 | margin-bottom: 0.5rem;
19 | }
20 |
21 | .main {
22 | display: flex;
23 | min-width: 100vw;
24 | min-height: 100vh;
25 | }
26 |
27 | .code {
28 | width: 50%;
29 | height: auto;
30 | display: flex;
31 | flex-direction: column;
32 | gap: 2rem;
33 | padding: 1rem;
34 | }
35 |
36 | .code pre {
37 | height: 35vh;
38 | }
39 |
40 | .view {
41 | width: 50%;
42 | height: auto;
43 | background-color: #2d2d2d;
44 | display: flex;
45 | flex-direction: column;
46 | justify-content: center;
47 | padding: 1rem;
48 | }
49 |
50 | table th:last-child {
51 | background-color: black;
52 | }
53 |
54 | table td {
55 | text-align: center;
56 | }
57 |
58 | table td:last-child {
59 | background-color: black;
60 | }
61 |
62 | div:has(> .btn-prev) {
63 | display: flex;
64 | gap: 1rem;
65 | align-items: center;
66 | }
67 |
68 | .btn-prev,
69 | .btn-next {
70 | background-color: #2d2d2d;
71 | color: #fff;
72 | padding: 14px 18px;
73 | text-decoration: none;
74 | width: max-content;
75 | display: inline-flex;
76 | gap: 6px;
77 | align-items: end;
78 | line-height: 95%;
79 | transition: background-color 300ms ease;
80 | }
81 |
82 | .btn-prev:hover,
83 | .btn-next:hover {
84 | background-color: #383838;
85 | }
86 |
87 | @media screen and (min-width: 300px) and (max-width: 960px){
88 | .main {
89 | width: 100vw;
90 | display: flex;
91 | flex-direction: column;
92 | }
93 | .code {
94 | width: 100%;
95 | }
96 | .view {
97 | width: 100%;
98 | }
99 | }
--------------------------------------------------------------------------------
/desafios/18/style.css:
--------------------------------------------------------------------------------
1 | * {
2 | margin: 0;
3 | padding: 0;
4 | box-sizing: border-box;
5 | }
6 |
7 | html {
8 | color-scheme: dark;
9 | font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
10 | font-size: 1.2rem;
11 | }
12 |
13 | body {
14 | overflow-x: hidden;
15 | }
16 |
17 | h2, h3 {
18 | margin-bottom: 0.5rem;
19 | }
20 |
21 | .main {
22 | display: flex;
23 | min-width: 100vw;
24 | min-height: 100vh;
25 | }
26 |
27 | .code {
28 | width: 50%;
29 | height: auto;
30 | display: flex;
31 | flex-direction: column;
32 | gap: 2rem;
33 | padding: 1rem;
34 | }
35 |
36 | .code pre {
37 | height: 35vh;
38 | }
39 |
40 | .view {
41 | width: 50%;
42 | height: auto;
43 | background-color: #2d2d2d;
44 | display: flex;
45 | flex-direction: column;
46 | padding: 1rem;
47 | }
48 |
49 | .view img {
50 | width: 98%;
51 | aspect-ratio: 16/9;
52 | object-fit: cover;
53 | }
54 |
55 | .view h1, h4, p {
56 | margin-bottom: 1rem;
57 | }
58 |
59 | .view p {
60 | text-wrap: pretty;
61 | }
62 |
63 | div:has(> .btn-prev) {
64 | display: flex;
65 | gap: 1rem;
66 | align-items: center;
67 | }
68 |
69 | .btn-prev,
70 | .btn-next {
71 | background-color: #2d2d2d;
72 | color: #fff;
73 | padding: 14px 18px;
74 | text-decoration: none;
75 | width: max-content;
76 | display: inline-flex;
77 | gap: 6px;
78 | align-items: end;
79 | line-height: 95%;
80 | transition: background-color 300ms ease;
81 | }
82 |
83 | .btn-prev:hover,
84 | .btn-next:hover {
85 | background-color: #383838;
86 | }
87 |
88 | @media screen and (min-width: 300px) and (max-width: 960px){
89 | .main {
90 | width: 100vw;
91 | display: flex;
92 | flex-direction: column;
93 | }
94 | .code {
95 | width: 100%;
96 | }
97 | .view {
98 | width: 100%;
99 | }
100 | }
--------------------------------------------------------------------------------
/desafios/30/style.css:
--------------------------------------------------------------------------------
1 | * {
2 | margin: 0;
3 | padding: 0;
4 | box-sizing: border-box;
5 | }
6 |
7 | html {
8 | color-scheme: dark;
9 | font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
10 | font-size: 1.2rem;
11 | }
12 |
13 | body {
14 | overflow-x: hidden;
15 | }
16 |
17 | h2, h3 {
18 | margin-bottom: 0.5rem;
19 | }
20 |
21 | .main {
22 | display: flex;
23 | min-width: 100vw;
24 | min-height: 100vh;
25 | }
26 |
27 | .code {
28 | width: 50%;
29 | height: auto;
30 | display: flex;
31 | flex-direction: column;
32 | gap: 2rem;
33 | padding: 1rem;
34 | }
35 |
36 | .code pre {
37 | height: 35vh;
38 | }
39 |
40 | .view {
41 | position: relative;
42 | width: 50%;
43 | height: auto;
44 | background-color: #2d2d2d;
45 | display: flex;
46 | flex-direction: column;
47 | justify-content: center;
48 | align-items: center;
49 | padding: 1rem;
50 | }
51 |
52 | button {
53 | margin-bottom: 10px;
54 | display: block;
55 | z-index: 2;
56 |
57 | }
58 |
59 | canvas {
60 | position: absolute;
61 | top: 0;
62 | left: 0;
63 | width: 100%;
64 | height: 100%;
65 | z-index: 1;
66 | }
67 |
68 | div:has(> .btn-prev) {
69 | display: flex;
70 | gap: 1rem;
71 | align-items: center;
72 | }
73 |
74 | .btn-prev,
75 | .btn-next {
76 | background-color: #2d2d2d;
77 | color: #fff;
78 | padding: 14px 18px;
79 | text-decoration: none;
80 | width: max-content;
81 | display: inline-flex;
82 | gap: 6px;
83 | align-items: end;
84 | line-height: 95%;
85 | transition: background-color 300ms ease;
86 | }
87 |
88 | .btn-prev:hover,
89 | .btn-next:hover {
90 | background-color: #383838;
91 | }
92 |
93 | @media screen and (min-width: 300px) and (max-width: 960px){
94 | .main {
95 | width: 100vw;
96 | display: flex;
97 | flex-direction: column;
98 | }
99 | .code {
100 | width: 100%;
101 | }
102 | .view {
103 | width: 100%;
104 | }
105 | }
--------------------------------------------------------------------------------
/desafios/13/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | HTML 30-day challenge - Día 13
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
19 |
20 | HTML
21 |
22 |
23 | <p>64/100 tickets vendidos</p>
24 | <meter min="1" value="64" max="100"></meter>
25 |
26 |
27 |
28 |
42 |
43 |
44 |
64/100 tickets vendidos
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
--------------------------------------------------------------------------------
/desafios/15/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | HTML 30-day challenge - Día 15
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
19 |
20 | HTML
21 |
22 |
23 | <video
24 | src="../../assets/video/waves-loop.mp4"
25 | poster="../../assets/img/play.svg"
26 | width="640"
27 | height="360"
28 | loop
29 | controls></video>
30 |
31 |
32 |
33 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
--------------------------------------------------------------------------------
/desafios/20/style.css:
--------------------------------------------------------------------------------
1 | * {
2 | margin: 0;
3 | padding: 0;
4 | box-sizing: border-box;
5 | }
6 |
7 | html {
8 | color-scheme: dark;
9 | font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
10 | font-size: 1.2rem;
11 | }
12 |
13 | body {
14 | overflow-x: hidden;
15 | }
16 |
17 | h2, h3 {
18 | margin-bottom: 0.5rem;
19 | }
20 |
21 | .main {
22 | display: flex;
23 | min-width: 100vw;
24 | min-height: 100vh;
25 | }
26 |
27 | .code {
28 | width: 50%;
29 | height: auto;
30 | display: flex;
31 | flex-direction: column;
32 | gap: 2rem;
33 | padding: 1rem;
34 | }
35 |
36 | .code pre {
37 | height: 35vh;
38 | }
39 |
40 | .view {
41 | width: 50%;
42 | height: auto;
43 | background-color: #2d2d2d;
44 | display: flex;
45 | flex-direction: column;
46 | justify-content: center;
47 | padding: 1rem;
48 | }
49 |
50 | form {
51 | width: 50%;
52 | display: flex;
53 | flex-direction: column;
54 | gap: 1rem;
55 | margin: 0 auto;
56 | }
57 |
58 | input {
59 | border: none;
60 | padding: 8px;
61 | border-radius: 4px;
62 | box-shadow: black 0 0 4px;
63 | }
64 |
65 | textarea {
66 | border: none;
67 | padding: 8px;
68 | border-radius: 4px;
69 | box-shadow: black 0 0 4px;
70 | }
71 |
72 | div:has(> .btn-prev) {
73 | display: flex;
74 | gap: 1rem;
75 | align-items: center;
76 | }
77 |
78 | .btn-prev,
79 | .btn-next {
80 | background-color: #2d2d2d;
81 | color: #fff;
82 | padding: 14px 18px;
83 | text-decoration: none;
84 | width: max-content;
85 | display: inline-flex;
86 | gap: 6px;
87 | align-items: end;
88 | line-height: 95%;
89 | transition: background-color 300ms ease;
90 | }
91 |
92 | .btn-prev:hover,
93 | .btn-next:hover {
94 | background-color: #383838;
95 | }
96 |
97 | @media screen and (min-width: 300px) and (max-width: 960px){
98 | .main {
99 | width: 100vw;
100 | display: flex;
101 | flex-direction: column;
102 | }
103 | .code {
104 | width: 100%;
105 | }
106 | .view {
107 | width: 100%;
108 | }
109 | .view form {
110 | width: 100%;
111 | }
112 | }
--------------------------------------------------------------------------------
/desafios/04/style.css:
--------------------------------------------------------------------------------
1 | * {
2 | margin: 0;
3 | padding: 0;
4 | box-sizing: border-box;
5 | }
6 |
7 | html {
8 | color-scheme: dark;
9 | font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
10 | font-size: 1.2rem;
11 | }
12 |
13 | body {
14 | overflow-x: hidden;
15 | }
16 |
17 | h2, h3 {
18 | margin-bottom: 0.5rem;
19 | }
20 |
21 | .main {
22 | display: flex;
23 | min-width: 100vw;
24 | min-height: 100vh;
25 | }
26 |
27 | .code {
28 | width: 50%;
29 | height: auto;
30 | display: flex;
31 | flex-direction: column;
32 | gap: 2rem;
33 | padding: 1rem;
34 | }
35 |
36 | .code ul {
37 | margin-top: 1rem;
38 | margin-left: 5%;
39 | }
40 |
41 | .code li {
42 | list-style: "✅";
43 | margin-bottom: 0.5rem;
44 | }
45 |
46 | code {
47 | display: inline-block;
48 | margin: 1rem 0;
49 | }
50 |
51 | .code li:is(.er) {
52 | list-style: "❌";
53 | }
54 |
55 | .code mark {
56 | background-color: chartreuse;
57 | font-weight: 700;
58 | padding: 4px;
59 | }
60 |
61 | .code mark:is(.ms-er) {
62 | background-color: crimson;
63 | font-weight: 700;
64 | padding: 4px;
65 | }
66 |
67 | .view {
68 | width: 50%;
69 | height: auto;
70 | background-color: #2d2d2d;
71 | display: flex;
72 | flex-direction: column;
73 | align-items: center;
74 | justify-content: center;
75 | padding: 1rem;
76 | }
77 |
78 | div:has(> .btn-prev) {
79 | display: flex;
80 | gap: 1rem;
81 | align-items: center;
82 | }
83 |
84 | .btn-prev,
85 | .btn-next {
86 | background-color: #2d2d2d;
87 | color: #fff;
88 | padding: 14px 18px;
89 | text-decoration: none;
90 | width: max-content;
91 | display: inline-flex;
92 | gap: 6px;
93 | align-items: end;
94 | line-height: 95%;
95 | transition: background-color 300ms ease;
96 | }
97 |
98 | .btn-prev:hover,
99 | .btn-next:hover {
100 | background-color: #383838;
101 | }
102 |
103 | @media screen and (min-width: 300px) and (max-width: 960px){
104 | .main {
105 | width: 100vw;
106 | display: flex;
107 | flex-direction: column;
108 | }
109 | .code {
110 | width: 100%;
111 | }
112 | .view {
113 | width: 100%;
114 | }
115 | }
--------------------------------------------------------------------------------
/desafios/12/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | HTML 30-day challenge - Día 12
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
19 |
20 | HTML
21 |
22 |
23 | <input
24 | type="range"
25 | name="slider"
26 | id="slider"
27 | value="1"
28 | min="1"
29 | max="50"
30 | step="1"
31 | onInput="this.nextElementSibling.value = this.value">
32 | <output>1</output>
33 |
34 |
35 |
36 |
50 |
51 |
52 |
53 | 1
54 |
55 |
56 |
57 |
58 |
59 |
60 |
--------------------------------------------------------------------------------
/desafios/16/style.css:
--------------------------------------------------------------------------------
1 | * {
2 | margin: 0;
3 | padding: 0;
4 | box-sizing: border-box;
5 | }
6 |
7 | html {
8 | color-scheme: dark;
9 | font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
10 | font-size: 1.2rem;
11 | }
12 |
13 | body {
14 | overflow-x: hidden;
15 | }
16 |
17 | h2, h3 {
18 | margin-bottom: 0.5rem;
19 | }
20 |
21 | .main {
22 | display: flex;
23 | min-width: 100vw;
24 | min-height: 100vh;
25 | }
26 |
27 | .code {
28 | width: 50%;
29 | height: auto;
30 | display: flex;
31 | flex-direction: column;
32 | gap: 2rem;
33 | padding: 1rem;
34 | }
35 |
36 | .code pre {
37 | height: 35vh;
38 | }
39 |
40 | .view {
41 | width: 50%;
42 | height: auto;
43 | background-color: #2d2d2d;
44 | display: flex;
45 | flex-direction: column;
46 | padding: 1rem;
47 | }
48 |
49 | .container {
50 | height: 100vh;
51 | display: flex;
52 | justify-content: center;
53 | align-items: center;
54 | gap: 2rem;
55 | }
56 |
57 | kbd {
58 | background-color: #dcdcdc;
59 | color: #616161;
60 | font-weight: 900;
61 | font-size: 1.5rem;
62 | padding: 1rem;
63 | border-radius: 8%;
64 | box-shadow: black 1px 1px 4px;
65 | cursor: pointer;
66 | }
67 |
68 | kbd:hover {
69 | background-color: #aeaeae;
70 | }
71 |
72 | div:has(> .btn-prev) {
73 | display: flex;
74 | gap: 1rem;
75 | align-items: center;
76 | }
77 |
78 | .btn-prev,
79 | .btn-next {
80 | background-color: #2d2d2d;
81 | color: #fff;
82 | padding: 14px 18px;
83 | text-decoration: none;
84 | width: max-content;
85 | display: inline-flex;
86 | gap: 6px;
87 | align-items: end;
88 | line-height: 95%;
89 | transition: background-color 300ms ease;
90 | }
91 |
92 | .btn-prev:hover,
93 | .btn-next:hover {
94 | background-color: #383838;
95 | }
96 |
97 | @media screen and (min-width: 300px) and (max-width: 960px){
98 | .main {
99 | width: 100vw;
100 | display: flex;
101 | flex-direction: column;
102 | }
103 | .code {
104 | width: 100%;
105 | }
106 | .view {
107 | width: 100%;
108 | }
109 | .container {
110 | height: auto;
111 | width: 90%;
112 | gap: 1rem;
113 | margin: 0 auto;
114 | }
115 | }
--------------------------------------------------------------------------------
/assets/style.css:
--------------------------------------------------------------------------------
1 | @font-face {
2 | font-family: 'EnterCommand';
3 | src:
4 | local("EnterCommand"),
5 | url("./fonts/entercommand.woff2") format("woff2");
6 | }
7 |
8 | * {
9 | margin: 0;
10 | padding: 0;
11 | box-sizing: border-box;
12 | }
13 |
14 | body {
15 | background: #671189;
16 | background: radial-gradient(at center bottom, #671189, #2A263B);
17 | min-height: 100dvh;
18 | margin: 40px auto;
19 | font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
20 | color: #f2f2f2;
21 | font-size: 1.2rem;
22 | }
23 |
24 | main {
25 | max-width: 960px;
26 | margin: auto;
27 | }
28 |
29 | .header-container {
30 | display: flex;
31 | flex-direction: column;
32 | justify-content: center;
33 | align-items: center;
34 | gap: 40px;
35 | }
36 |
37 | .header-container img {
38 | filter: drop-shadow(0 0 16px black);
39 | margin: 0 5%;
40 | }
41 |
42 | .social {
43 | display: flex;
44 | justify-content: center;
45 | align-items: center;
46 | gap: 20px;
47 | }
48 |
49 | h1 {
50 | font-family: EnterCommand;
51 | font-size: 4.5rem;
52 | line-height: 3.5rem;
53 | text-align: center;
54 | text-shadow: 0 0 16px black;
55 | }
56 |
57 | h2 {
58 | font-family: EnterCommand;
59 | font-size: 2.5rem;
60 | line-height: 2rem;
61 | text-align: center;
62 | }
63 |
64 |
65 | .challenges-container {
66 | margin: 40px 5%;
67 | display: grid;
68 | grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
69 | gap: 8px;
70 | }
71 |
72 | .challenge {
73 | border: #2A263B 4px solid;
74 | border-radius: 12px;
75 | height: 120px;
76 | display: grid;
77 | place-content: center;
78 | place-items: center;
79 | font-family: EnterCommand;
80 | }
81 |
82 | .challenge p {
83 | font-size: 1.5rem;
84 | line-height: 2rem;
85 | margin-top: 0.5rem;
86 | }
87 |
88 | .challenge span {
89 | color: #f2f2f2;
90 | font-size: 2rem;
91 | }
92 |
93 | .challenge a {
94 | text-decoration: none;
95 | }
96 |
97 | .done {
98 | background-color: #01a546;
99 | }
100 |
101 | .draft {
102 | background-color: #e66a34;
103 | }
104 |
105 | footer {
106 | max-width: 760px;
107 | text-align: center;
108 | margin: auto;
109 | padding: 0 5%;
110 | }
--------------------------------------------------------------------------------
/desafios/11/style.css:
--------------------------------------------------------------------------------
1 | * {
2 | margin: 0;
3 | padding: 0;
4 | box-sizing: border-box;
5 | }
6 |
7 | html {
8 | color-scheme: dark;
9 | font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
10 | font-size: 1.2rem;
11 | }
12 |
13 | body {
14 | overflow-x: hidden;
15 | }
16 |
17 | h2, h3 {
18 | margin-bottom: 0.5rem;
19 | }
20 |
21 | .main {
22 | display: flex;
23 | min-width: 100vw;
24 | min-height: 100vh;
25 | }
26 |
27 | .code {
28 | width: 50%;
29 | height: auto;
30 | display: flex;
31 | flex-direction: column;
32 | gap: 2rem;
33 | padding: 1rem;
34 | }
35 |
36 | .code pre {
37 | height: 35vh;
38 | }
39 |
40 | .view {
41 | width: 50%;
42 | height: auto;
43 | background-color: #2d2d2d;
44 | display: flex;
45 | flex-direction: column;
46 | padding: 1rem;
47 | }
48 |
49 | .title-header {
50 | margin: 2rem 0;
51 | }
52 |
53 | section {
54 | display: flex;
55 | flex-direction: column;
56 | align-items: center;
57 | justify-content: center;
58 | }
59 |
60 | .chimestry, .math {
61 | display: grid;
62 | grid-template-columns: 1fr 1fr;
63 | grid-template-rows: repeat(5, 40px);
64 | width: 80%;
65 | }
66 |
67 | .item {
68 | width: 100%;
69 | height: 100%;
70 | border: 1px solid white;
71 | padding-left: 1rem;
72 | }
73 |
74 | .header {
75 | text-align: center;
76 | margin-bottom: 1rem;
77 | }
78 |
79 | div:has(> .btn-prev) {
80 | display: flex;
81 | gap: 1rem;
82 | align-items: center;
83 | }
84 |
85 | .btn-prev,
86 | .btn-next {
87 | background-color: #2d2d2d;
88 | color: #fff;
89 | padding: 14px 18px;
90 | text-decoration: none;
91 | width: max-content;
92 | display: inline-flex;
93 | gap: 6px;
94 | align-items: end;
95 | line-height: 95%;
96 | transition: background-color 300ms ease;
97 | }
98 |
99 | .btn-prev:hover,
100 | .btn-next:hover {
101 | background-color: #383838;
102 | }
103 |
104 | @media screen and (min-width: 300px) and (max-width: 960px){
105 | .main {
106 | width: 100vw;
107 | display: flex;
108 | flex-direction: column;
109 | }
110 | .code {
111 | width: 100%;
112 | }
113 | .view {
114 | width: 100%;
115 | }
116 | .chimestry, .math {
117 | width: 100%;
118 | }
119 | }
--------------------------------------------------------------------------------
/desafios/26/style.css:
--------------------------------------------------------------------------------
1 | * {
2 | margin: 0;
3 | padding: 0;
4 | box-sizing: border-box;
5 | }
6 |
7 | html {
8 | color-scheme: dark;
9 | font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
10 | font-size: 1.2rem;
11 | }
12 |
13 | body {
14 | overflow-x: hidden;
15 | }
16 |
17 | h2, h3 {
18 | margin-bottom: 0.5rem;
19 | }
20 |
21 | .main {
22 | display: flex;
23 | min-width: 100vw;
24 | min-height: 100vh;
25 | }
26 |
27 | .code {
28 | width: 50%;
29 | height: auto;
30 | display: flex;
31 | flex-direction: column;
32 | gap: 2rem;
33 | padding: 1rem;
34 | }
35 |
36 | .code pre {
37 | height: 35vh;
38 | }
39 |
40 | .view {
41 | width: 50%;
42 | height: auto;
43 | background-color: #2d2d2d;
44 | display: flex;
45 | flex-direction: column;
46 | justify-content: center;
47 | align-items: center;
48 | padding: 1rem;
49 | }
50 |
51 | button {
52 | padding: 8px;
53 | margin: 1rem 0;
54 | border: none;
55 | box-shadow: black 0 0 4px;
56 | cursor: pointer;
57 | }
58 |
59 | [popover] {
60 | background: #222;
61 | border: 0;
62 | border-bottom: 5px solid gold;
63 | color: white;
64 | padding: 0.05rem 1.25rem;
65 | }
66 |
67 | [popover]::backdrop {
68 | background: #000a;
69 | backdrop-filter: blur(2px);
70 | }
71 |
72 | [popover]:popover-open {
73 | color: gold;
74 | width: 300px;
75 | height: 400px;
76 | display: flex;
77 | justify-content: center;
78 | align-items: center;
79 | margin: auto;
80 | }
81 |
82 | div:has(> .btn-prev) {
83 | display: flex;
84 | gap: 1rem;
85 | align-items: center;
86 | }
87 |
88 | .btn-prev,
89 | .btn-next {
90 | background-color: #2d2d2d;
91 | color: #fff;
92 | padding: 14px 18px;
93 | text-decoration: none;
94 | width: max-content;
95 | display: inline-flex;
96 | gap: 6px;
97 | align-items: end;
98 | line-height: 95%;
99 | transition: background-color 300ms ease;
100 | }
101 |
102 | .btn-prev:hover,
103 | .btn-next:hover {
104 | background-color: #383838;
105 | }
106 |
107 | @media screen and (min-width: 300px) and (max-width: 960px){
108 | .main {
109 | width: 100vw;
110 | display: flex;
111 | flex-direction: column;
112 | }
113 | .code {
114 | width: 100%;
115 | }
116 | .view {
117 | width: 100%;
118 | }
119 | }
--------------------------------------------------------------------------------
/desafios/23/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | HTML 30-day challenge - Día 23
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
19 |
20 | HTML
21 |
22 |
23 | <form action="/send" method="get">
24 | <p>Seleccciona una fecha</p>
25 | <input type="date" min="2024-11-15" max="2024-12-15">
26 | </form>
27 |
28 |
29 | CSS
30 |
31 |
32 | input {
33 | padding: 8px;
34 | margin: 1rem 0;
35 | border: none;
36 | box-shadow: black 0 0 4px;
37 | }
38 |
39 |
40 |
41 |
55 |
56 |
62 |
63 |
64 |
65 |
66 |
67 |
--------------------------------------------------------------------------------
/desafios/07/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | HTML 30-day challenge - Día 7
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 | HTML 30-day challenge - Día 7
15 | Coloca una imagen en formato JPEG-XL. Si el navegador no la soporta, que use AVIF. Sino, que use JPG.
16 |
17 |
18 | HTML
19 |
20 |
21 | <picture>
22 | <source srcset="../../assets/img/HTML-30-day-challenge.jxl" type="image/jxl">
23 | <source srcset="../../assets/img/HTML-30-day-challenge.avif" type="image/avif">
24 | <img src="../../assets/img/HTML-30-day-challenge.jpg" alt="HTML 30-day challenge">
25 | </picture>
26 |
27 |
28 |
29 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
--------------------------------------------------------------------------------
/desafios/09/style.css:
--------------------------------------------------------------------------------
1 | @import url('https://fonts.googleapis.com/css2?family=Cinzel:wght@400..900&display=swap');
2 |
3 | * {
4 | margin: 0;
5 | padding: 0;
6 | box-sizing: border-box;
7 | }
8 |
9 | html {
10 | color-scheme: dark;
11 | font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
12 | font-size: 1.2rem;
13 | }
14 |
15 | body {
16 | overflow-x: hidden;
17 | }
18 |
19 | h2, h3 {
20 | margin-bottom: 0.5rem;
21 | }
22 |
23 | .main {
24 | display: flex;
25 | min-width: 100vw;
26 | min-height: 100vh;
27 | }
28 |
29 | .code {
30 | width: 50%;
31 | height: auto;
32 | display: flex;
33 | flex-direction: column;
34 | gap: 2rem;
35 | padding: 1rem;
36 | }
37 |
38 | .code pre {
39 | height: 35vh;
40 | }
41 |
42 | .view {
43 | width: 50%;
44 | height: auto;
45 | background-color: #2d2d2d;
46 | display: flex;
47 | flex-direction: column;
48 | padding: 1rem;
49 | }
50 |
51 | .container {
52 | font-family: "Cinzel", serif;
53 | width: 300px;
54 | height: 500px;
55 | background-color: antiquewhite;
56 | display: flex;
57 | flex-direction: column;
58 | align-items: center;
59 | justify-content: center;
60 | gap: 1rem;
61 | background-image: url(../../assets/img/fondo-papel-grunge-vintage_1048-10911.avif);
62 | object-fit: cover;
63 | margin: 28px auto;
64 | position: sticky;
65 | top: 44px;
66 | }
67 |
68 | .container h1 {
69 | font-size: 2rem;
70 | line-height: 2.2rem;
71 | color: #2c2c2c;
72 | text-align: center;
73 | }
74 |
75 | .container ol {
76 | padding-left: 8%;
77 | color: #2c2c2c;
78 | }
79 |
80 | div:has(> .btn-prev) {
81 | display: flex;
82 | gap: 1rem;
83 | align-items: center;
84 | }
85 |
86 | .btn-prev,
87 | .btn-next {
88 | background-color: #2d2d2d;
89 | color: #fff;
90 | padding: 14px 18px;
91 | text-decoration: none;
92 | width: max-content;
93 | display: inline-flex;
94 | gap: 6px;
95 | align-items: end;
96 | line-height: 95%;
97 | transition: background-color 300ms ease;
98 | }
99 |
100 | .btn-prev:hover,
101 | .btn-next:hover {
102 | background-color: #383838;
103 | }
104 |
105 | @media screen and (min-width: 300px) and (max-width: 960px){
106 | .main {
107 | width: 100vw;
108 | display: flex;
109 | flex-direction: column;
110 | }
111 | .code {
112 | width: 100%;
113 | }
114 | .view {
115 | width: 100%;
116 | }
117 | }
--------------------------------------------------------------------------------
/desafios/24/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | HTML 30-day challenge - Día 24
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
19 |
20 | HTML
21 |
22 |
23 | <form action="">
24 | <p>Username: </p>
25 | <input type="text" pattern="[A-Za-z0-9]+" required>
26 | <input type="submit" value="Validar">
27 | </form>
28 |
29 |
30 | CSS
31 |
32 |
33 | input {
34 | padding: 8px;
35 | margin: 1rem 0;
36 | border: none;
37 | box-shadow: black 0 0 4px;
38 | }
39 |
40 |
41 |
42 |
56 |
57 |
64 |
65 |
66 |
67 |
68 |
69 |
--------------------------------------------------------------------------------
/desafios/05/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | HTML 30-day challenge - Día 5
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
18 |
19 | HTML
20 |
21 |
22 | <head>
23 | <meta charset="UTF-8">
24 | <meta name="viewport" content="width=device-width, initial-scale=1.0">
25 | <title>HTML 30-day challenge - Día 5</title>
26 | <meta name="description" content="Esta web contiene la solución a una serie
27 | de desafíos creados por ManzDev con la finalidad de aprender y/o practicar
28 | con los lenguajes HTML, CSS y un poco de JavaScript.">
29 | </head>
30 |
31 |
32 |
33 |
47 |
48 |
49 |
Vista previa
50 |
No disponible
51 |
52 |
53 |
54 |
55 |
56 |
--------------------------------------------------------------------------------
/desafios/30/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | HTML 30-day challenge - Día 30
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
19 |
20 | HTML
21 |
22 |
23 | <button id="confetti">¡Libera el confetti! </button>
24 | <canvas id="custom_canvas"> </canvas>
25 | <script src="https://cdn.jsdelivr.net/npm/js-confetti@latest/dist/js-confetti.browser.js"></script>
26 | <script src="./script.js"> </script>
27 |
28 |
29 | JS
30 |
31 |
32 | const button = document.getElementById('confetti')
33 | const canvas = document.getElementById('custom_canvas')
34 |
35 | const jsConfetti = new JSConfetti({ canvas })
36 |
37 | setTimeout(() => {
38 | jsConfetti.addConfetti()
39 | }, 500)
40 |
41 | button.addEventListener('click', () => {
42 | jsConfetti.addConfetti()
43 | })
44 |
45 |
46 |
47 |
58 |
59 |
60 | ¡Libera el confetti!
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
--------------------------------------------------------------------------------
/desafios/16/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | HTML 30-day challenge - Día 16
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
19 |
20 | HTML
21 |
22 |
23 | <div class="container">
24 | <kbd>Ctrl</kbd>
25 | <kbd>Alt</kbd>
26 | <kbd>Supr</kbd>
27 | </div>
28 |
29 |
30 | CSS
31 |
32 |
33 | .container {
34 | height: 100vh;
35 | display: flex;
36 | justify-content: center;
37 | align-items: center;
38 | gap: 2rem;
39 | }
40 |
41 | kbd {
42 | background-color: #dcdcdc;
43 | color: #616161;
44 | font-weight: 900;
45 | font-size: 1.5rem;
46 | padding: 1rem;
47 | border-radius: 8%;
48 | box-shadow: black 1px 1px 4px;
49 | cursor: pointer;
50 | }
51 |
52 | kbd:hover {
53 | background-color: #aeaeae;
54 | }
55 |
56 |
57 |
58 |
72 |
73 |
74 |
75 | Ctrl
76 | Alt
77 | Supr
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
--------------------------------------------------------------------------------
/desafios/25/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | HTML 30-day challenge - Día 25
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
19 |
20 | HTML
21 |
22 |
23 | <img src="../../assets/img/avatar.webp" alt="Avatar odraciRdev">
24 | <img src="../../assets/img/logo.png" alt="Logo HTML 30-day challenge">
25 | <img src="../../assets/img/portada_noticia.webp" alt="Portada de la noticia"
26 | loading="lazy">
27 | <img src="../../assets/img/social.webp" alt="Social graph" loading="lazy">
28 |
29 |
30 | CSS
31 |
32 |
33 | img {
34 | width: 98%;
35 | margin-bottom: 1rem;
36 | }
37 |
38 |
39 |
40 |
54 |
55 |
61 |
62 |
63 |
64 |
65 |
66 |
--------------------------------------------------------------------------------
/desafios/10/style.css:
--------------------------------------------------------------------------------
1 | * {
2 | margin: 0;
3 | padding: 0;
4 | box-sizing: border-box;
5 | }
6 |
7 | html {
8 | color-scheme: dark;
9 | font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
10 | font-size: 1.2rem;
11 | }
12 |
13 | body {
14 | overflow-x: hidden;
15 | }
16 |
17 | h2, h3 {
18 | margin-bottom: 0.5rem;
19 | }
20 |
21 | .main {
22 | display: flex;
23 | min-width: 100vw;
24 | min-height: 100vh;
25 | }
26 |
27 | .code {
28 | width: 50%;
29 | height: auto;
30 | display: flex;
31 | flex-direction: column;
32 | gap: 2rem;
33 | padding: 1rem;
34 | }
35 |
36 | .code pre {
37 | height: 23vh;
38 | }
39 |
40 | .view {
41 | width: 50%;
42 | height: auto;
43 | background-color: #2d2d2d;
44 | display: flex;
45 | flex-direction: column;
46 | padding: 1rem;
47 | }
48 |
49 | .container {
50 | display: flex;
51 | flex-direction: column;
52 | width: 100%;
53 | margin: 2% auto;
54 | gap: 2rem;
55 | align-items: center;
56 | }
57 |
58 | .video {
59 | display: flex;
60 | justify-content: center;
61 | position: relative;
62 | }
63 |
64 | .video img{
65 | position: relative;
66 | width:100%;
67 | height:auto;
68 | }
69 |
70 | .video iframe{
71 | position:absolute;
72 | top: 13%;
73 | width: 74%;
74 | height:auto;
75 | aspect-ratio:14/9;
76 | }
77 |
78 | .info {
79 | width: 100%;
80 | display: flex;
81 | flex-direction: column;
82 | gap: 20px;
83 | }
84 |
85 | .controls {
86 | margin-top: 1rem;
87 | display: flex;
88 | flex-wrap: wrap;
89 | justify-content: center;
90 | gap: 0.5rem;
91 | }
92 |
93 | .controls button {
94 | padding: 10px 20px;
95 | background-color: #007bff;
96 | color: #fff;
97 | border: none;
98 | cursor: pointer;
99 | font-size: 1.2rem;
100 | }
101 |
102 | .controls button:hover {
103 | background-color: #0056b3;
104 | font-size: 1.2rem;
105 | }
106 |
107 | div:has(> .btn-prev) {
108 | display: flex;
109 | gap: 1rem;
110 | align-items: center;
111 | }
112 |
113 | .btn-prev,
114 | .btn-next {
115 | background-color: #2d2d2d;
116 | color: #fff;
117 | padding: 14px 18px;
118 | text-decoration: none;
119 | width: max-content;
120 | display: inline-flex;
121 | gap: 6px;
122 | align-items: end;
123 | line-height: 95%;
124 | transition: background-color 300ms ease;
125 | }
126 |
127 | .btn-prev:hover,
128 | .btn-next:hover {
129 | background-color: #383838;
130 | }
131 |
132 | @media screen and (min-width: 300px) and (max-width: 960px){
133 | .main {
134 | width: 100vw;
135 | display: flex;
136 | flex-direction: column;
137 | }
138 | .code {
139 | width: 100%;
140 | }
141 | .view {
142 | width: 100%;
143 | }
144 | }
--------------------------------------------------------------------------------
/desafios/14/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | HTML 30-day challenge - Día 14
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
19 |
20 | HTML
21 |
22 |
23 | <head>
24 | <link rel="stylesheet"
25 | href="https://cdn.jsdelivr.net/npm/prismjs@1.29.0/themes/prism-tomorrow.css">
26 | </head>
27 | <body>
28 | <pre>
29 | <code class="language-css">
30 | * {
31 | margin: unset;
32 | padding: unset;
33 | box-sizing: border-box;
34 | }
35 | </code>
36 | </pre>
37 | <script
38 | src="https://cdn.jsdelivr.net/npm/prismjs@v1.x/components/prism-core.min.js">
39 | </script>
40 | <script
41 | src="https://cdn.jsdelivr.net/npm/prismjs@v1.x/plugins/autoloader/prism-autoloader.min.js">
42 | </script>
43 | </body>
44 |
45 |
46 |
47 |
61 |
62 |
63 |
64 |
65 | * {
66 | margin: unset;
67 | padding: unset;
68 | box-sizing: border-box;
69 | }
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
--------------------------------------------------------------------------------
/desafios/28/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | HTML 30-day challenge - Día 28
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
19 |
20 | HTML
21 |
22 |
23 | <dialog id="alerta">
24 | <h2>¡Censeguido!</h2>
25 | <p>Hemos superado el desafío #28</p>
26 | <button onClick="this.parentElement.close()">Cerrar</button>
27 | </dialog>
28 | <button id="mostrar">Muéstrame el diálogo</button>
29 | <script src="./script.js"></script>
30 |
31 |
32 | JS
33 |
34 |
35 | const showButton = document.querySelector("#mostrar");
36 | showButton.addEventListener("click", function () {
37 | const alertDialog = document.querySelector("#alerta");
38 | alertDialog.showModal();
39 | });
40 |
41 |
42 |
43 |
57 |
58 |
59 |
60 | ¡Censeguido!
61 | Hemos superado el desafío #28
62 | Cerrar
63 |
64 |
Muéstrame el diálogo
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
--------------------------------------------------------------------------------
/desafios/03/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | HTML 30-day challenge - Día 2
7 |
8 |
9 |
10 |
11 |
12 |
13 |
17 |
18 | HTML
19 |
20 |
21 | <p>Esta sería la solución para el reto del día 3 del
22 | <em><a href="https://lenguajehtml.com/challenge/">
23 | "HTML 30-day challenge"</a></em> creado por ManzDev.</p>
24 |
25 | <h2>Lista de retos resueltos</h2>
26 |
27 | <ul>
28 | <li><strong>Día 1</strong> <a href="../01/index.html">Ver solución</a></li>
29 | <li><strong>Día 2</strong> <a href="../02/index.html">Ver solución</a></li>
30 | </ul>
31 |
32 |
33 |
34 |
48 |
49 |
50 |
Esta sería la solución para el reto del día 3 del "HTML 30-day challenge" creado por ManzDev.
51 |
Lista de retos resueltos
52 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
--------------------------------------------------------------------------------
/desafios/17/style.css:
--------------------------------------------------------------------------------
1 | * {
2 | margin: 0;
3 | padding: 0;
4 | box-sizing: border-box;
5 | }
6 |
7 | html {
8 | color-scheme: dark;
9 | font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
10 | font-size: 1.2rem;
11 | }
12 |
13 | body {
14 | overflow-x: hidden;
15 | }
16 |
17 | h2, h3 {
18 | margin-bottom: 0.5rem;
19 | }
20 |
21 | .main {
22 | display: flex;
23 | min-width: 100vw;
24 | min-height: 100vh;
25 | }
26 |
27 | .code {
28 | width: 50%;
29 | height: auto;
30 | display: flex;
31 | flex-direction: column;
32 | gap: 2rem;
33 | padding: 1rem;
34 | }
35 |
36 | .code pre {
37 | height: 35vh;
38 | }
39 |
40 | .view {
41 | width: 50%;
42 | height: auto;
43 | background-color: #2d2d2d;
44 | display: flex;
45 | flex-direction: column;
46 | padding: 1rem;
47 | }
48 |
49 | .container {
50 | height: 100vh;
51 | display: flex;
52 | justify-content: center;
53 | align-items: center;
54 | gap: 2rem;
55 | }
56 |
57 | .container {
58 | height: 100vh;
59 | display: flex;
60 | justify-content: center;
61 | align-items: center;
62 | }
63 |
64 | .card {
65 | width: 300px;
66 | height: 450px;
67 | background-image: repeating-linear-gradient(343deg, rgba(12,15,16, 0.04) 0px, rgba(12,15,16, 0.04) 2px,transparent 2px, transparent 4px),linear-gradient(180deg, rgb(5,8,37),rgb(93,83,83));
68 | border-radius: 8px;
69 | box-shadow: black 1px 1px 4px;
70 | display: flex;
71 | flex-direction: column;
72 | align-items: center;
73 | color: whitesmoke;
74 | }
75 |
76 | .username {
77 | font-size: 2rem;
78 | line-height: 2.3rem;
79 | text-align: center;
80 | margin: 1rem 0;
81 | }
82 |
83 | .avatar {
84 | width: 50%;
85 | border-radius: 8px;
86 | box-shadow: black 1px 1px 4px;
87 | }
88 |
89 | .info {
90 | width: 80%;
91 | margin: 2rem 0;
92 | }
93 |
94 | footer img {
95 | width: 32px;
96 | }
97 |
98 | footer a {
99 | text-decoration: none;
100 | color: whitesmoke;
101 | display: flex;
102 | align-items: center;
103 | gap: 0.5rem;
104 | transition: scale 300ms ease;
105 | }
106 |
107 | footer a:hover {
108 | text-decoration: none;
109 | scale: 115%;
110 | }
111 |
112 | div:has(> .btn-prev) {
113 | display: flex;
114 | gap: 1rem;
115 | align-items: center;
116 | }
117 |
118 | .btn-prev,
119 | .btn-next {
120 | background-color: #2d2d2d;
121 | color: #fff;
122 | padding: 14px 18px;
123 | text-decoration: none;
124 | width: max-content;
125 | display: inline-flex;
126 | gap: 6px;
127 | align-items: end;
128 | line-height: 95%;
129 | transition: background-color 300ms ease;
130 | }
131 |
132 | .btn-prev:hover,
133 | .btn-next:hover {
134 | background-color: #383838;
135 | }
136 |
137 | @media screen and (min-width: 300px) and (max-width: 960px){
138 | .main {
139 | width: 100vw;
140 | display: flex;
141 | flex-direction: column;
142 | }
143 | .code {
144 | width: 100%;
145 | }
146 | .view {
147 | width: 100%;
148 | }
149 | }
--------------------------------------------------------------------------------
/desafios/02/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | HTML 30-day challenge - Día 2
7 |
8 |
9 |
10 |
11 |
12 |
13 |
17 |
18 | HTML
19 |
20 |
21 | <h1>Roadmap Frontend Developer</h1>
22 |
23 | <p>¡Hola! Soy Ricardo, desarrollador web en formación al que le encanta
24 | el frontend. Estoy resolviendo <a href="https://lenguajehtml.com/challenge/">
25 | una lista de retos creados por ManzDev</a> para dar mis primeros pasos
26 | en el desarrollo web.</p>
27 |
28 | <p>Estos retos los estoy resolviendo en vivo en mi
29 | <a href="https://twitch.tv/odracirdev">canal de Twitch</a>, si gustas puedes
30 | pasar a verlos. Únete al discord para estar al tanto de los directos.</p>
31 |
32 | <button><a href="https://discord.gg/3m9KdYAf3p">Discord</a></button>
33 |
34 | <img src="../../assets/img/social.webp" alt="Ricardo Cuauro - Frontend Developer">
35 |
36 |
37 |
38 |
52 |
53 |
54 |
Roadmap Frontend Developer
55 |
¡Hola! Soy Ricardo, desarrollador web en formación al que le encanta el frontend. Estoy resolviendo una lista de retos creados por ManzDev para dar mis primeros pasos en el desarrollo web.
56 |
Estos retos los estoy resolviendo en vivo en mi canal de Twitch , si gustas puedes pasar a verlos. Únete al discord para estar al tanto de los directos.
57 |
Discord
58 |
59 |
60 |
61 |
62 |
63 |
64 |
--------------------------------------------------------------------------------
/desafios/22/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | HTML 30-day challenge - Día 22
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
19 |
20 | HTML
21 |
22 |
23 | <p>Desarrollo de software</p>
24 | <input type="text" list="lenguajes">
25 | <datalist id="lenguajes">
26 | <option value="html">HTML</option>
27 | <option value="css">CSS</option>
28 | <option value="js">JavaScript</option>
29 | <option value="php">PHP</option>
30 | <option value="ruby">Ruby</option>
31 | <option value="py">Python</option>
32 | <option value="aws">AWS</option>
33 | <option value="docker">Docker</option>
34 | <option value="host">Hosting</option>
35 | </datalist>
36 |
37 |
38 | CSS
39 |
40 |
41 | input {
42 | width: 50%;
43 | padding: 8px;
44 | margin: 1rem 0;
45 | border: none;
46 | box-shadow: black 0 0 4px;
47 | }
48 |
49 |
50 |
51 |
65 |
66 |
67 |
Desarrollo de software
68 |
69 |
70 | HTML
71 | CSS
72 | JavaScript
73 | PHP
74 | Ruby
75 | Python
76 | AWS
77 | Docker
78 | Hosting
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
--------------------------------------------------------------------------------
/desafios/08/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | HTML 30-day challenge - Día 8
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
19 |
20 | HTML
21 |
22 |
23 | <p>Lorem, ipsum dolor sit amet consectetur <mark class="color">adipisicing
24 | elit.</mark> Ipsam aperiam, quod laboriosam beatae, cupiditate sint enim quam
25 | maxime <mark>officiis illo</mark>, harum repellendus suscipit. Tempore aut
26 | impedit <mark class="color">ipsam deserunt</mark> obcaecati fugit!</p>
27 |
28 | <p>Lorem, ipsum dolor sit amet consectetur <mark class="color">adipisicing
29 | elit.</mark> Ipsam aperiam, quod laboriosam beatae, cupiditate sint enim quam
30 | maxime officiis illo, harum repellendus suscipit. Tempore aut impedit <mark
31 | class="color">ipsam deserunt</mark> obcaecati fugit!>
32 |
33 |
34 | CSS
35 |
36 |
37 | .color:first-of-type {
38 | background-color: aquamarine;
39 | }
40 |
41 | .color:last-of-type {
42 | background-color: blueviolet;
43 | }
44 |
45 |
46 |
47 |
61 |
62 |
63 |
Lorem, ipsum dolor sit amet consectetur adipisicing elit. Ipsam aperiam, quod
64 | laboriosam beatae, cupiditate sint enim quam maxime officiis illo , harum repellendus suscipit.
65 | Tempore aut impedit ipsam deserunt obcaecati fugit!
66 |
Lorem, ipsum dolor sit amet consectetur adipisicing elit. Ipsam aperiam, quod
67 | laboriosam beatae, cupiditate sint enim quam maxime officiis illo, harum repellendus suscipit. Tempore aut
68 | impedit ipsam deserunt obcaecati fugit!
69 |
70 |
71 |
72 |
73 |
74 |
75 |
--------------------------------------------------------------------------------
/desafios/26/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | HTML 30-day challenge - Día 26
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
19 |
20 | HTML
21 |
22 |
23 | <button
24 | popovertarget="mensaje"
25 | popovertargetaction="toggle">Mostrar mensaje</button>
26 | <div id="mensaje" popover>
27 | <p>Lorem, ipsum dolor sit amet consectetur adipisicing elit.
28 | Ratione possimus, qui animi, harum, maiores error officia nam officiis
29 | deleniti nesciunt ullam odio libero ducimus natus cupiditate
30 | ea in culpa! Inventore?</p>
31 | </div>
32 |
33 |
34 | CSS
35 |
36 |
37 | button {
38 | padding: 8px;
39 | margin: 1rem 0;
40 | border: none;
41 | box-shadow: black 0 0 4px;
42 | cursor: pointer;
43 | }
44 |
45 | [popover] {
46 | background: #222;
47 | border: 0;
48 | border-bottom: 5px solid gold;
49 | color: white;
50 | padding: 0.05rem 1.25rem;
51 | }
52 |
53 | [popover]::backdrop {
54 | background: #000a;
55 | backdrop-filter: blur(2px);
56 | }
57 |
58 | [popover]:popover-open {
59 | color: gold;
60 | width: 300px;
61 | height: 400px;
62 | display: flex;
63 | justify-content: center;
64 | align-items: center;
65 | margin: auto;
66 | }
67 |
68 |
69 |
70 |
84 |
85 |
86 |
Mostrar mensaje
87 |
88 |
Lorem, ipsum dolor sit amet consectetur adipisicing elit. Ratione possimus, qui animi, harum, maiores error officia nam officiis deleniti nesciunt ullam odio libero ducimus natus cupiditate ea in culpa! Inventore?
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
--------------------------------------------------------------------------------
/desafios/20/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | HTML 30-day challenge - Día 20
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
19 |
20 | HTML
21 |
22 |
23 | <form action="/enviar" method="post">
24 | <label for="usuario">
25 | Usuario
26 | </label>
27 | <input
28 | type="text"
29 | name="usuario"
30 | maxlength="25"
31 | placeholder="Nombre de usuario">
32 | <label for="comentario">
33 | Comentario
34 | </label>
35 | <textarea
36 | name="comentario"
37 | cols="40"
38 | rows="6"
39 | placeholder="Escribe aquí tu comentario."></textarea>
40 | <input type="submit" value="Comentar">
41 | </form>
42 |
43 |
44 | CSS
45 |
46 |
47 | form {
48 | width: 50%;
49 | display: flex;
50 | flex-direction: column;
51 | gap: 1rem;
52 | margin: 0 auto;
53 | }
54 |
55 | input {
56 | border: none;
57 | padding: 8px;
58 | border-radius: 4px;
59 | box-shadow: black 0 0 4px;
60 | }
61 |
62 | textarea {
63 | border: none;
64 | padding: 8px;
65 | border-radius: 4px;
66 | box-shadow: black 0 0 4px;
67 | }
68 |
69 |
70 |
71 |
85 |
86 |
87 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
--------------------------------------------------------------------------------
/desafios/21/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | HTML 30-day challenge - Día 21
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
19 |
20 | HTML
21 |
22 |
23 | <p>Desarrollo de software</p>
24 | <select name="lenguajes">
25 | <option value="">Selecciona una opción</option>
26 | <optgroup label="Frontend">
27 | <option value="html">HTML</option>
28 | <option value="css">CSS</option>
29 | <option value="js">JavaScript</option>
30 | </optgroup>
31 | <optgroup label="Backend">
32 | <option value="php">PHP</option>
33 | <option value="ruby">Ruby</option>
34 | <option value="py">Python</option>
35 | </optgroup>
36 | <optgroup label="Tecnologías">
37 | <option value="aws">AWS</option>
38 | <option value="docker">Docker</option>
39 | <option value="host">Hosting</option>
40 | </optgroup>
41 | </select>
42 |
43 |
44 | CSS
45 |
46 |
47 | select {
48 | width: 50%;
49 | padding: 8px;
50 | margin: 1rem 0;
51 | border: none;
52 | box-shadow: black 0 0 4px;
53 | }
54 |
55 |
56 |
57 |
71 |
72 |
73 |
Desarrollo de software
74 |
75 | Selecciona una opción
76 |
77 | HTML
78 | CSS
79 | JavaScript
80 |
81 |
82 | PHP
83 | Ruby
84 | Python
85 |
86 |
87 | AWS
88 | Docker
89 | Hosting
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
--------------------------------------------------------------------------------
/desafios/09/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | HTML 30-day challenge - Día 9
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
19 |
20 | HTML
21 |
22 |
23 | <div class="container">
24 | <h1>Inventos Romanos</h1>
25 | <ol type="I">
26 | <li>Carreteras</li>
27 | <li>Periódicos</li>
28 | <li>Calendario</li>
29 | <li>Hormigón</li>
30 | <li>Alcantarillado</li>
31 | <li>Bomberos</li>
32 | <li>Graffits</li>
33 | <li>Maquillaje</li>
34 | <li>Calefacción</li>
35 | <li>Arcos</li>
36 | <li>Spas</li>
37 | <li>Departamentos</li>
38 | </ol>
39 | </div>
40 |
41 |
42 | CSS
43 |
44 |
45 | @import url('https://fonts.googleapis.com/css2?family=Cinzel:wght@400..900&display=swap');
46 |
47 | .container {
48 | font-family: "Cinzel", serif;
49 | width: 300px;
50 | height: 500px;
51 | background-color: antiquewhite;
52 | display: flex;
53 | flex-direction: column;
54 | align-items: center;
55 | justify-content: center;
56 | gap: 1rem;
57 | background-image:
58 | url(../../assets/img/fondo-papel-grunge-vintage_1048-10911.avif);
59 | object-fit: cover;
60 | margin: 28px auto;
61 | }
62 |
63 | .container h1 {
64 | font-size: 2rem;
65 | line-height: 2.2rem;
66 | color: #2c2c2c;
67 | text-align: center;
68 | }
69 |
70 | .container ol {
71 | padding-left: 8%;
72 | color: #2c2c2c;
73 | }
74 |
75 |
76 |
77 |
91 |
92 |
93 |
94 |
Inventos Romanos
95 |
96 | Carreteras
97 | Periódicos
98 | Calendario
99 | Hormigón
100 | Alcantarillado
101 | Bomberos
102 | Graffits
103 | Maquillaje
104 | Calefacción
105 | Arcos
106 | Spas
107 | Departamentos
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
--------------------------------------------------------------------------------
/desafios/06/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | HTML 30-day challenge - Día 6
7 |
8 |
9 |
10 |
11 |
12 |
13 |
17 |
18 | HTML
19 |
20 |
21 | <details open name="dia-6">
22 | <summary>Ejemplo 1</summary>
23 | <h2>Lorem ipsum</h2>
24 | <p>Lorem ipsum dolor sit amet consectetur adipisicing elit.</p>
25 | </details>
26 | <details name="dia-6">
27 | <summary>Ejemplo 2</summary>
28 | <h2>Lorem ipsum</h2>
29 | <p>Lorem ipsum dolor sit amet consectetur adipisicing elit.</p>
30 | </details>
31 | <details name="dia-6">
32 | <summary>Ejemplo 3</summary>
33 | <h2>Lorem ipsum</h2>
34 | <p>Lorem ipsum dolor sit amet consectetur adipisicing elit.</p>
35 | </details>
36 | <details name="dia-6">
37 | <summary>Ejemplo 4</summary>
38 | <h2>Lorem ipsum</h2>
39 | <p>Lorem ipsum dolor sit amet consectetur adipisicing elit.</p>
40 | </details>
41 |
42 |
43 |
44 |
58 |
59 |
60 |
61 | Ejemplo 1
62 | Lorem ipsum
63 | Lorem ipsum dolor sit amet consectetur adipisicing elit. Odit totam quidem quod assumenda, officiis inventore, quam aliquam voluptates dolorem recusandae, adipisci sed doloremque minus alias iste iusto voluptatibus animi. Dolorem.
64 |
65 |
66 | Ejemplo 2
67 | Lorem ipsum
68 | Lorem ipsum dolor sit amet consectetur adipisicing elit. Odit totam quidem quod assumenda, officiis inventore, quam aliquam voluptates dolorem recusandae, adipisci sed doloremque minus alias iste iusto voluptatibus animi. Dolorem.
69 |
70 |
71 | Ejemplo 3
72 | Lorem ipsum
73 | Lorem ipsum dolor sit amet consectetur adipisicing elit. Odit totam quidem quod assumenda, officiis inventore, quam aliquam voluptates dolorem recusandae, adipisci sed doloremque minus alias iste iusto voluptatibus animi. Dolorem.
74 |
75 |
76 | Ejemplo 4
77 | Lorem ipsum
78 | Lorem ipsum dolor sit amet consectetur adipisicing elit. Odit totam quidem quod assumenda, officiis inventore, quam aliquam voluptates dolorem recusandae, adipisci sed doloremque minus alias iste iusto voluptatibus animi. Dolorem.
79 |
80 |
81 |
82 |
83 |
84 |
85 |
--------------------------------------------------------------------------------
/desafios/27/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | HTML 30-day challenge - Día 27
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
30 |
31 | HTML
32 |
33 |
34 | <head>
35 | <meta
36 | property="og:type"
37 | content="article">
38 | <meta
39 | property="og:title"
40 | content="HTML 30-day challenge - Día 27">
41 | <meta
42 | property="og:url"
43 | content="https://odracirdev.github.io/challengeHTML/desafios/27/">
44 | <meta
45 | property="og:image"
46 | content="https://odracirdev.github.io/challengeHTML/assetes/img/social.webp">
47 | <meta
48 | property="og:description"
49 | content="Crea una serie de etiquetas que permitan mostrar como miniatura una imagen en redes sociales.">
50 | <meta
51 | property="twitter:card"
52 | content="summary_large_image">
53 | <meta
54 | property="twitter:creator"
55 | content="@ricardcuauro">
56 | <meta
57 | property="twitter:title"
58 | content="HTML 30-day challenge - Día 27">
59 | <meta
60 | property="twitter:url"
61 | content="https://odracirdev.github.io/challengeHTML/desafios/27/">
62 | <meta
63 | property="twitter:image"
64 | content="https://odracirdev.github.io/challengeHTML/assetes/img/social.webp">
65 | <meta
66 | property="twitter:description"
67 | content="Crea una serie de etiquetas que permitan mostrar como miniatura una imagen en redes sociales.">
68 | </head>
69 |
70 |
71 |
72 |
86 |
87 |
88 |
Vista previa
89 |
No disponible
90 |
91 |
92 |
93 |
94 |
95 |
96 |
--------------------------------------------------------------------------------
/desafios/17/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | HTML 30-day challenge - Día 17
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 | HTML 30-day challenge - Día 17
17 | Crea una card de usuario: username como título, un avatar de imagen, edad, país, nacimiento y enlace a su web.
18 |
19 |
20 | HTML
21 |
22 |
23 | <div class="container">
24 | <div class="card">
25 | <header>
26 | <h2 class="username">odraciRdev</h2>
27 | </header>
28 | <img src="../../assets/img/avatar.webp"
29 | alt="Avatar de odraciRdev"
30 | class="avatar">
31 | <article class="info">
32 | <p class="age"><strong>Edad:</strong> 00</p>
33 | <p class="country"><strong>País:</strong> Venezuela</p>
34 | <p class="dob"><strong>Nacimiento:</strong> 00/00/0000</p>
35 | </article>
36 | <footer>
37 | <p class="web">
38 | <a href="//github.com/odracirdev">
39 | <img src="../../assets/img/github.svg">GitHub</a>
40 | </p>
41 | </footer>
42 | </div>
43 |
44 |
45 | CSS
46 |
47 |
48 | .container {
49 | height: 100vh;
50 | display: flex;
51 | justify-content: center;
52 | align-items: center;
53 | }
54 |
55 | .card {
56 | width: 300px;
57 | height: 450px;
58 | background-image:
59 | repeating-linear-gradient(
60 | 343deg,
61 | rgba(12,15,16, 0.04) 0px,
62 | rgba(12,15,16, 0.04) 2px,
63 | transparent 2px,
64 | transparent 4px)
65 | linear-gradient(
66 | 180deg,
67 | rgb(5,8,37),
68 | rgb(93,83,83));
69 | border-radius: 8px;
70 | box-shadow: black 1px 1px 4px;
71 | display: flex;
72 | flex-direction: column;
73 | align-items: center;
74 | color: whitesmoke;
75 | }
76 |
77 | .username {
78 | font-size: 2rem;
79 | line-height: 2.3rem;
80 | text-align: center;
81 | margin: 1rem 0;
82 | }
83 |
84 | .avatar {
85 | width: 50%;
86 | border-radius: 8px;
87 | box-shadow: black 1px 1px 4px;
88 | }
89 |
90 | .info {
91 | width: 80%;
92 | margin: 2rem 0;
93 | }
94 |
95 | footer img {
96 | width: 32px;
97 | }
98 |
99 | footer a {
100 | text-decoration: none;
101 | color: whitesmoke;
102 | display: flex;
103 | align-items: center;
104 | gap: 0.5rem;
105 | transition: scale 300ms ease;
106 | }
107 |
108 | footer a:hover {
109 | text-decoration: none;
110 | scale: 115%;
111 | }
112 |
113 |
114 |
115 |
129 |
130 |
131 |
132 |
133 |
136 |
137 |
138 | Edad: 00
139 | País: Venezuela
140 | Nacimiento: 00/00/0000
141 |
142 |
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
153 |
--------------------------------------------------------------------------------
/desafios/29/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | HTML 30-day challenge - Día 29
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
19 |
20 | HTML
21 |
22 |
23 | <div class="container">
24 | <button id="tab-1">Tab 1</button>
25 | <button id="tab-2">Tab 2</button>
26 | <button id="tab-3">Tab 3</button>
27 | <section>
28 | <h2>Tab 1</h2>
29 | <p>Lorem ipsum dolor, sit amet consectetur adipisicing elit. At enim sunt consectetur? Suscipit sunt numquam necessitatibus optio similique magnam eius id adipisci dolor beatae, perspiciatis nulla veritatis! Possimus, vero ipsam?</p>
30 | </section>
31 | <section hidden="">
32 | <h2>Tab 2</h2>
33 | <p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Aspernatur nemo fuga labore pariatur suscipit mollitia ea doloribus repellat voluptas numquam eveniet doloremque commodi, ab vel aut sint dignissimos repellendus placeat!</p>
34 | </section>
35 | <section hidden="">
36 | <h2>Tab 3</h2>
37 | <p>Lorem, ipsum dolor sit amet consectetur adipisicing elit. Rem, adipisci! Suscipit, sequi cum modi eveniet accusantium veniam expedita laboriosam velit quo maxime explicabo minus nihil beatae est enim adipisci officia.</p>
38 | </section>
39 | </div>
40 | <script src="./script.js"></script>
41 |
42 |
43 | JS
44 |
45 |
46 | const [firstSection,
47 | secondSection,
48 | thirdSection] = document.querySelectorAll("section");
49 | const tab1 = document.querySelector("#tab-1");
50 | const tab2 = document.querySelector("#tab-2");
51 | const tab3 = document.querySelector("#tab-3");
52 |
53 | tab1.addEventListener("click", function() {
54 | firstSection.removeAttribute("hidden")
55 | secondSection.setAttribute("hidden", "")
56 | thirdSection.setAttribute("hidden","")
57 | });
58 |
59 | tab2.addEventListener("click", function() {
60 | firstSection.setAttribute("hidden", "")
61 | secondSection.removeAttribute("hidden")
62 | thirdSection.setAttribute("hidden","")
63 | });
64 |
65 | tab3.addEventListener("click", function() {
66 | firstSection.setAttribute("hidden", "")
67 | secondSection.setAttribute("hidden", "")
68 | thirdSection.removeAttribute("hidden")
69 | });
70 |
71 |
72 |
73 |
74 |
88 |
89 |
90 |
91 |
Tab 1
92 |
Tab 2
93 |
Tab 3
94 |
95 | Tab 1
96 | Lorem ipsum dolor, sit amet consectetur adipisicing elit. At enim sunt consectetur? Suscipit sunt numquam necessitatibus optio similique magnam eius id adipisci dolor beatae, perspiciatis nulla veritatis! Possimus, vero ipsam?
97 |
98 |
99 | Tab 2
100 | Lorem ipsum dolor sit amet consectetur adipisicing elit. Aspernatur nemo fuga labore pariatur suscipit mollitia ea doloribus repellat voluptas numquam eveniet doloremque commodi, ab vel aut sint dignissimos repellendus placeat!
101 |
102 |
103 | Tab 3
104 | Lorem, ipsum dolor sit amet consectetur adipisicing elit. Rem, adipisci! Suscipit, sequi cum modi eveniet accusantium veniam expedita laboriosam velit quo maxime explicabo minus nihil beatae est enim adipisci officia.
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
--------------------------------------------------------------------------------
/desafios/04/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | HTML 30-day challenge - Día 4
7 |
8 |
9 |
10 |
11 |
12 |
13 |
17 |
18 | Validador
19 | Para validar todo el HTML de todos los desafíos utilicé el validador de la W3C (Markup Validation Service ).
20 |
21 | Día 1: Document checking completed. No errors or warnings to show.
22 | Día 2: The element a must not appear as a descendant of the button element.
23 |
24 | <button><a href="https://discord.gg/3m9KdYAf3p">Discord</a></button>
25 |
26 |
27 | Día 3: Document checking completed. No errors or warnings to show.
28 | Día 4: Document checking completed. No errors or warnings to show.
29 | Día 5: Document checking completed. No errors or warnings to show.
30 | Día 6: Attribute 'name' not allowed on element 'details' at this point. Lines: 9, 14, 19, 24.
31 |
32 | <details open name="dia-6">
33 |
34 | Día 7: Document checking completed. No errors or warnings to show.
35 | Día 8: Document checking completed. No errors or warnings to show.
36 | Día 9: Document checking completed. No errors or warnings to show.
37 | Día 10: The 'frameborder' attribute on the 'iframe' element is obsolete. Use CSS instead.
38 |
39 | <iframe id="video" width="560" height="315" src="https://www.youtube.com/embed/ntBVs2n8IC0" frameborder="0" allowfullscreen>
40 |
41 | Día 11: Document checking completed. No errors or warnings to show.
42 | Día 12: Document checking completed. No errors or warnings to show.
43 | Día 13: Document checking completed. No errors or warnings to show.
44 | Día 14: Document checking completed. No errors or warnings to show.
45 | Día 15: Document checking completed. No errors or warnings to show.
46 | Día 16: Document checking completed. No errors or warnings to show.
47 | Día 17: Document checking completed. No errors or warnings to show.
48 | Día 18: Document checking completed. No errors or warnings to show.
49 | Día 19: Document checking completed. No errors or warnings to show.
50 | Día 20: The value of the for attribute of the label element must be the ID of a non-hidden form control.
51 |
52 | <label for="usuario">
53 | <label for="comentario">
54 |
55 | Día 21: Document checking completed. No errors or warnings to show.
56 | Día 22: Document checking completed. No errors or warnings to show.
57 | Día 23: Document checking completed. No errors or warnings to show.
58 | Día 24: Document checking completed. No errors or warnings to show.
59 | Día 25: Document checking completed. No errors or warnings to show.
60 | Día 26: Document checking completed. No errors or warnings to show.
61 | Día 27: Document checking completed. No errors or warnings to show.
62 | Día 28: Document checking completed. No errors or warnings to show.
63 | Día 29: Document checking completed. No errors or warnings to show.
64 | Día 30: Document checking completed. No errors or warnings to show.
65 |
66 |
67 |
81 |
82 |
83 |
Vista previa
84 |
No disponible
85 |
86 |
87 |
88 |
89 |
90 |
--------------------------------------------------------------------------------
/CODE_OF_CONDUCT.md:
--------------------------------------------------------------------------------
1 |
2 | # Código de Conducta convenido para Contribuyentes
3 |
4 | ## Nuestro compromiso
5 |
6 | Nosotros, como miembros, contribuyentes y administradores nos comprometemos a hacer de la participación en nuestra comunidad sea una experiencia libre de acoso para todo el mundo, independientemente de la edad, dimensión corporal, discapacidad visible o invisible, etnicidad, características sexuales, identidad y expresión de género, nivel de experiencia, educación, nivel socio-económico, nacionalidad, apariencia personal, raza, casta, color, religión, o identidad u orientación sexual.
7 |
8 | Nos comprometemos a actuar e interactuar de maneras que contribuyan a una comunidad abierta, acogedora, diversa, inclusiva y sana.
9 |
10 | ## Nuestros estándares
11 |
12 | Ejemplos de comportamientos que contribuyen a crear un ambiente positivo para nuestra comunidad:
13 |
14 | * Demostrar empatía y amabilidad ante otras personas
15 | * Respeto a diferentes opiniones, puntos de vista y experiencias
16 | * Dar y aceptar adecuadamente retroalimentación constructiva
17 | * Aceptar la responsabilidad y disculparse ante quienes se vean afectados por nuestros errores, aprendiendo de la experiencia
18 | * Centrarse en lo que sea mejor no sólo para nosotros como individuos, sino para la comunidad en general
19 |
20 | Ejemplos de comportamiento inaceptable:
21 |
22 | * El uso de lenguaje o imágenes sexualizadas, y aproximaciones o
23 | atenciones sexuales de cualquier tipo
24 | * Comentarios despectivos (_trolling_), insultantes o derogatorios, y ataques personales o políticos
25 | * El acoso en público o privado
26 | * Publicar información privada de otras personas, tales como direcciones físicas o de correo
27 | electrónico, sin su permiso explícito
28 | * Otras conductas que puedan ser razonablemente consideradas como inapropiadas en un
29 | entorno profesional
30 |
31 | ## Aplicación de las responsabilidades
32 |
33 | Los administradores de la comunidad son responsables de aclarar y hacer cumplir nuestros estándares de comportamiento aceptable y tomarán acciones apropiadas y correctivas de forma justa en respuesta a cualquier comportamiento que consideren inapropiado, amenazante, ofensivo o dañino.
34 |
35 | Los administradores de la comunidad tendrán el derecho y la responsabilidad de eliminar, editar o rechazar comentarios, _commits_, código, ediciones de páginas de wiki, _issues_ y otras contribuciones que no se alineen con este Código de Conducta, y comunicarán las razones para sus decisiones de moderación cuando sea apropiado.
36 |
37 | ## Alcance
38 |
39 | Este código de conducta aplica tanto a espacios del proyecto como a espacios públicos donde un individuo esté en representación del proyecto o comunidad. Ejemplos de esto incluyen el uso de la cuenta oficial de correo electrónico, publicaciones a través de las redes sociales oficiales, o presentaciones con personas designadas en eventos en línea o no.
40 |
41 | ## Aplicación
42 |
43 | Instancias de comportamiento abusivo, acosador o inaceptable de otro modo podrán ser reportadas a los administradores de la comunidad responsables del cumplimiento a través de [Discord](https://discord.gg/r6tFDfvYW6). Todas las quejas serán evaluadas e investigadas de una manera puntual y justa.
44 |
45 | Todos los administradores de la comunidad están obligados a respetar la privacidad y la seguridad de quienes reporten incidentes.
46 |
47 | ## Guías de Aplicación
48 |
49 | Los administradores de la comunidad seguirán estas Guías de Impacto en la Comunidad para determinar las consecuencias de cualquier acción que juzguen como un incumplimiento de este Código de Conducta:
50 |
51 | ### 1. Corrección
52 |
53 | **Impacto en la Comunidad**: El uso de lenguaje inapropiado u otro comportamiento considerado no profesional o no acogedor en la comunidad.
54 |
55 | **Consecuencia**: Un aviso escrito y privado por parte de los administradores de la comunidad, proporcionando claridad alrededor de la naturaleza de este incumplimiento y una explicación de por qué el comportamiento es inaceptable. Una disculpa pública podría ser solicitada.
56 |
57 | ### 2. Aviso
58 |
59 | **Impacto en la Comunidad**: Un incumplimiento causado por un único incidente o por una cadena de acciones.
60 |
61 | **Consecuencia**: Un aviso con consecuencias por comportamiento prolongado. No se interactúa con las personas involucradas, incluyendo interacción no solicitada con quienes se encuentran aplicando el Código de Conducta, por un periodo especificado de tiempo. Esto incluye evitar las interacciones en espacios de la comunidad, así como a través de canales externos como las redes sociales. Incumplir estos términos puede conducir a una expulsión temporal o permanente.
62 |
63 | ### 3. Expulsión temporal
64 |
65 | **Impacto en la Comunidad**: Una serie de incumplimientos de los estándares de la comunidad, incluyendo comportamiento inapropiado continuo.
66 |
67 | **Consecuencia**: Una expulsión temporal de cualquier forma de interacción o comunicación pública con la comunidad durante un intervalo de tiempo especificado. No se permite interactuar de manera pública o privada con las personas involucradas, incluyendo interacciones no solicitadas con quienes se encuentran aplicando el Código de Conducta, durante este periodo. Incumplir estos términos puede conducir a una expulsión permanente.
68 |
69 | ### 4. Expulsión permanente
70 |
71 | **Impacto en la Comunidad**: Demostrar un patrón sistemático de incumplimientos de los estándares de la comunidad, incluyendo conductas inapropiadas prolongadas en el tiempo, acoso de individuos, o agresiones o menosprecio a grupos de individuos.
72 |
73 | **Consecuencia**: Una expulsión permanente de cualquier tipo de interacción pública con la comunidad del proyecto.
74 |
75 | ## Atribución
76 |
77 | Este Código de Conducta es una adaptación del [Contributor Covenant][homepage], versión 2.1,
78 | disponible en https://www.contributor-covenant.org/es/version/2/1/code_of_conduct.html
79 |
80 | Las Guías de Impacto en la Comunidad están inspiradas en la [escalera de aplicación del código de conducta de Mozilla](https://github.com/mozilla/diversity).
81 |
82 | [homepage]: https://www.contributor-covenant.org
83 |
84 | Para respuestas a las preguntas frecuentes de este código de conducta, consulta las FAQ en
85 | https://www.contributor-covenant.org/faq. Hay traducciones disponibles en https://www.contributor-covenant.org/translations
86 |
--------------------------------------------------------------------------------
/desafios/11/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | HTML 30-day challenge - Día 11
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
19 |
20 | HTML
21 |
22 |
23 | <main>
24 | <section>
25 | <header><h1>Fórmulas químicas más comunes</h1></header>
26 | <div class="chimestry">
27 | <div class="header"><h2>Compuesto</h2></div>
28 | <div class="header"><h2>Formula Química</h2></div>
29 | <div class="item">Dióxido de carbono</div>
30 | <div class="item">CO<sub>2</sub></div>
31 | <div class="item">Agua Oxigenada</div>
32 | <div class="item">H<sub>2</sub>O<sub>2</sub></div>
33 | <div class="item">Amoniaco</div>
34 | <div class="item">NH<sub>3</sub></div>
35 | <div class="item">Butano</div>
36 | <div class="item">C<sub>4</sub>H<sub>10</sub></div>
37 | </div>
38 | </section>
39 | <section>
40 | <header><h1>Fórmulas físicas más comunes</h1></header>
41 | <div class="math">
42 | <div class="header"><h2>Nombre</h2></div>
43 | <div class="header"><h2>Fórmula</h2></div>
44 | <div class="item">Teorema de Pitágoras</div>
45 | <div class="item">a<sup>2</sup> + b<sup>2</sup> = c<sup>2</sup></div>
46 | <div class="item">Raíz cuadrada de menos uno</div>
47 | <div class="item">i<sup>2</sup> = -1</div>
48 | <div class="item">Relatividad</div>
49 | <div class="item">E = mc<sup>2</sup></div>
50 | <div class="item">Teoría del caos</div>
51 | <div class="item">x<sub><em>t</em>+1</sub> = kx<sub>
52 | <em>t</em></sub> (1 - x<sub><em>t</em></sub>)</div>
53 | </div>
54 | </section>
55 | </main>
56 |
57 |
58 | CSS
59 |
60 |
61 | header {
62 | margin: 2rem 0;
63 | }
64 |
65 | section {
66 | display: flex;
67 | flex-direction: column;
68 | align-items: center;
69 | justify-content: center;
70 | }
71 |
72 | .chimestry, .math {
73 | display: grid;
74 | grid-template-columns: 1fr 1fr;
75 | grid-template-rows: repeat(5, 40px);
76 | width: 80%;
77 | }
78 |
79 | .item {
80 | width: 100%;
81 | height: 100%;
82 | border: 1px solid white;
83 | padding-left: 1rem;
84 | }
85 |
86 | .header {
87 | text-align: center;
88 | margin-bottom: 1rem;
89 | }
90 |
91 |
92 |
93 |
94 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
Dióxido de carbono
117 |
CO2
118 |
Agua Oxigenada
119 |
H2 O2
120 |
Amoniaco
121 |
NH3
122 |
Butano
123 |
C4 H10
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
Teorema de Pitágoras
132 |
a2 + b2 = c2
133 |
Raíz cuadrada de menos uno
134 |
i2 = -1
135 |
Relatividad
136 |
E = mc2
137 |
Teoría del caos
138 |
xt +1 = kxt (1 - xt )
139 |
140 |
141 |
142 |
143 |
144 |
145 |
146 |
147 |
148 |
149 |
--------------------------------------------------------------------------------
/desafios/10/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | HTML 30-day challenge - Día 10
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
19 |
20 | HTML
21 |
22 |
23 | <main>
24 | <div class="container">
25 | <div class="video">
26 | <img src="../../assets/img/laptop.webp" alt="laptop">
27 | <iframe id="video" width="560" height="315"
28 | src="https://www.youtube.com/embed/ntBVs2n8IC0"
29 | frameborder="0" allowfullscreen></iframe>
30 | </div>
31 | <div class="controls">
32 | <button onclick="changeVideo('ntBVs2n8IC0')">Video 1</button>
33 | <button onclick="changeVideo('BW0ESWwMC_o')">Video 2</button>
34 | <button onclick="changeVideo('KxdlczdR2no')">Video 3</button>
35 | <button onclick="changeVideo('BgkdDTSV568')">Video 4</button>
36 | <button onclick="changeVideo('gxLr6M9uuEY')">Video 5</button>
37 | </div>
38 | <div class="info">
39 | <h1>Ruta de estudio frontend</h1>
40 | <p>En nuestra ruta de estudio estamos aprendiendo todo lo necesario
41 | para convertirnos en desarrolladores frontend. Para ello estamos haciendo
42 | cursos y leyendo documentación en internet, todo de manera gratuita.</p>
43 | <p>Todo nuestro progreso queda registrado en formato de video
44 | y este a su vez es subido a mi canal personal para que cualquiera lo
45 | pueda consultar si lo necesita.</p>
46 | </div>
47 | </div>
48 | </main>
49 | <script src="./script.js"></script>
50 |
51 |
52 | CSS
53 |
54 |
55 | .container {
56 | display: flex;
57 | flex-direction: column;
58 | max-width: 1024px;
59 | margin: 2% auto;
60 | gap: 2rem;
61 | align-items: center;
62 | }
63 |
64 | .video {
65 | display: flex;
66 | justify-content: center;
67 | position: relative;
68 | }
69 |
70 | .video img{
71 | position: relative;
72 | width:100%;
73 | height:auto;
74 | }
75 |
76 | .video iframe{
77 | position:absolute;
78 | top: 13%;
79 | width: 74%;
80 | height:auto;
81 | aspect-ratio:14/9;
82 | }
83 |
84 | .info {
85 | width: 100%;
86 | display: flex;
87 | flex-direction: column;
88 | gap: 20px;
89 | }
90 |
91 | .controls {
92 | margin-top: 20px;
93 | }
94 |
95 | .controls button {
96 | padding: 10px 20px;
97 | margin-right: 10px;
98 | background-color: #007bff;
99 | color: #fff;
100 | border: none;
101 | cursor: pointer;
102 | font-size: 1.2rem;
103 | }
104 |
105 | .controls button:hover {
106 | background-color: #0056b3;
107 | font-size: 1.2rem;
108 | }
109 |
110 |
111 | JS
112 |
113 |
114 | function changeVideo(videoId) {
115 | var iframe = document.getElementById('video');
116 | iframe.src = "https://www.youtube.com/embed/" + videoId;
117 | }
118 |
119 |
120 |
121 |
135 |
136 |
137 |
138 |
139 |
140 |
141 |
VIDEO
142 |
143 |
144 | Video 1
145 | Video 2
146 | Video 3
147 | Video 4
148 | Video 5
149 |
150 |
151 |
Ruta de estudio frontend
152 |
En nuestra ruta de estudio estamos aprendiendo todo lo necesario para convertirnos en desarrolladores frontend. Para ello estamos haciendo cursos y leyendo documentación en internet, todo de manera gratuita.
153 |
Todo nuestro progreso queda registrado en formato de video y este a su vez es subido a mi canal personal para que cualquiera lo pueda consultar si lo necesita.
154 |
155 |
156 |
157 |
158 |
159 |
160 |
161 |
162 |
163 |
164 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | 
2 |
3 |
4 | # HTML 30-day challenge by ManzDev
5 |
6 | Este repositorio contiene la solución al ["HTML 30-day Challenge"](https://lenguajehtml.com/challenge/) creado por [ManzDev](https://manz.dev) con la finalidad de aprender y/o practicar con los lenguajes HTML, CSS y un poco de JavaScript.
7 |
8 | > [!IMPORTANT]
9 | > Estos desafíos los resuelvo en vivo en mi canal de twitch, si quieres ver cómo lo hago te invito a seguirme. También puedes ver el calendario con todos los directos en tu hora local accediendo a mi servidor de discord.
10 |
11 | > [!NOTE]
12 | > Por ahora las soluciones solo tienen el código necesario para pasar cada una de las pruebas, mi idea es que cuando termine con los 30 desafíos poder hacer un refactor completo de todos y convertirlos en mini proyectos.
13 |
14 |
15 |
16 | [](https://discord.gg/AFrzAEYA85)
17 | [](https://twitch.tv/odracirdev)
18 |
19 |
20 |
21 | ## Lista de desafíos
22 |
23 | | Día | Desafío | Solución |
24 | |-----|---------|----------|
25 | |01| ✅ Crea una página HTML con código CSS desde un archivo diferente. | [🔗](https://odracirdev.github.io/challengeHTML/desafios/01/index.html) |
26 | |02| ✅ Crea una página con un titular, varios párrafos de texto y una imagen. | [🔗](https://odracirdev.github.io/challengeHTML/desafios/02/index.html) |
27 | |03| ✅ Construye una página con un párrafo que tenga enlaces internos y externos (a otros sitios web). | [🔗](https://odracirdev.github.io/challengeHTML/desafios/03/index.html) |
28 | |04| ✅ Valida el código HTML de tus ejemplos anteriores (y los siguientes a partir de ahora). | [🔗](https://odracirdev.github.io/challengeHTML/desafios/04/index.html) |
29 | |05| ✅ Ponle un título y una descripción al documento, ideal para SEO. | [🔗](https://odracirdev.github.io/challengeHTML/desafios/05/index.html) |
30 | |06| ✅ Crea un grupo de secciones (acordeón) donde se despliegue sólo uno a la vez. | [🔗](https://odracirdev.github.io/challengeHTML/desafios/06/index.html) |
31 | |07| ✅ Coloca una imagen en formato JPEG-XL. Si el navegador no la soporta, que use AVIF. Sino, que use JPG. | [🔗](https://odracirdev.github.io/challengeHTML/desafios/07/index.html) |
32 | |08| ✅ Crear un párrafo de texto con palabras destacadas en diferentes colores. | [🔗](https://odracirdev.github.io/challengeHTML/desafios/08/index.html) |
33 | |09| ✅ Crea un pergamino con una lista de objetos, donde se numere con números romanos (mayúsculas). | [🔗](https://odracirdev.github.io/challengeHTML/desafios/09/index.html) |
34 | |10| ✅ Busca 5 videos de youtube. Inserta uno en la página. Haz que se pueda cambiar entre ellos como una TV. Dale estilo con CSS para que se vea más bonito. | [🔗](https://odracirdev.github.io/challengeHTML/desafios/10/index.html) |
35 | |11| ✅ Escribe un texto con super/subíndices (fórmulas químicas, por ejemplo). | [🔗](https://odracirdev.github.io/challengeHTML/desafios/11/index.html) |
36 | |12| ✅ Crea un slider que permita seleccionar un número entre 1-50 y lo muestre en vivo al cambiar. | [🔗](https://odracirdev.github.io/challengeHTML/desafios/12/index.html) |
37 | |13| ✅ Crea una barra medidora que muestre los tickets vendidos en un cine (64/100 tickets vendidos). | [🔗](https://odracirdev.github.io/challengeHTML/desafios/13/index.html) |
38 | |14| ✅ Muestra un bloque de fragmento de código CSS en una página. Si quieres ir al máximo, añade una librería Javascript para añadirle resaltado de colores. | [🔗](https://odracirdev.github.io/challengeHTML/desafios/14/index.html) |
39 | |15| ✅ Crea una página con un video MP4 (no de youtube), que muestre una imagen de portada antes de darle a reproducir. | [🔗](https://odracirdev.github.io/challengeHTML/desafios/15/index.html) |
40 | |16| ✅ Muestra un texto con el atajo de teclado CTRL+ALT+SUPR y dale estilo para que parezcan teclas. | [🔗](https://odracirdev.github.io/challengeHTML/desafios/16/index.html) |
41 | |17| ✅ Crea una card de usuario: username como título, un avatar, edad, país, nacimiento y enlace a su web. | [🔗](https://odracirdev.github.io/challengeHTML/desafios/17/index.html) |
42 | |18| ✅ Crea un pequeño artículo de prensa con una noticia inventada. Usa etiquetas HTML semánticas. | [🔗](https://odracirdev.github.io/challengeHTML/desafios/18/index.html) |
43 | |19| ✅ Crea una tabla con información. Incluye una cabecera y un pie de tabla. La última columna será de un color diferente. | [🔗](https://odracirdev.github.io/challengeHTML/desafios/19/index.html) |
44 | |20| ✅ Crea un formulario para dejar un comentario en una página: Usuario y comentario de texto. | [🔗](https://odracirdev.github.io/challengeHTML/desafios/20/index.html) |
45 | |21| ✅ Crea una lista desplegable donde se pueda seleccionar entre 3 grupos de productos ficticios. | [🔗](https://odracirdev.github.io/challengeHTML/desafios/21/index.html) |
46 | |22| ✅ En la lista anterior, permite al usuario introducir opciones personalizadas (no sólo las de la lista) y filtrar las opciones existentes. | [🔗](https://odracirdev.github.io/challengeHTML/desafios/22/index.html) |
47 | |23| ✅ Crea un formulario que te permita elegir un día entre el 15/nov y el 15/dic. | [🔗](https://odracirdev.github.io/challengeHTML/desafios/23/index.html) |
48 | |24| ✅ Crea un formulario de registro que valide si el username escrito es válido (sólo letras y números) o no. | [🔗](https://odracirdev.github.io/challengeHTML/desafios/24/index.html) |
49 | |25| ✅ Crea una galería de fotos. Asegúrate que no se cargan si están fuera de la región visible del navegador. | [🔗](https://odracirdev.github.io/challengeHTML/desafios/25/index.html) |
50 | |26| ✅ Crea un mensaje emergente al pulsar un botón, que desaparezca al pulsar fuera del mensaje. | [🔗](https://odracirdev.github.io/challengeHTML/desafios/26/index.html) |
51 | |27| ✅ Crea una serie de etiquetas que permitan mostrar como miniatura una imagen en redes sociales. | [🔗](https://odracirdev.github.io/challengeHTML/desafios/27/index.html) |
52 | |28| ✅ Crea una ventana modal que bloquee la interación con otros botones. Requiere un poco de Javascript. | [🔗](https://odracirdev.github.io/challengeHTML/desafios/28/index.html) |
53 | |29| ✅ Crea un sistema de pestañas (tabs) para mostrar información. Necesita algo de Javascript. | [🔗](https://odracirdev.github.io/challengeHTML/desafios/29/index.html) |
54 | |30| ✅ Carga una librería Javascript de confetti y lánzalo cuando pulses en un botón. Requiere algo de Javascript. | [🔗](https://odracirdev.github.io/challengeHTML/desafios/30/index.html) |
55 |
--------------------------------------------------------------------------------
/desafios/18/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | HTML 30-day challenge - Día 18
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
19 |
20 | HTML
21 |
22 |
23 | <article>
24 | <header>
25 | <img src="../../assets/img/portada_noticia.webp" alt="Desarrolladores
26 | del mundo declaran 'huelga de bytes' ante la amenaza de la IA">
27 | <h1>Desarrolladores del mundo declaran 'huelga de bytes' ante la amenaza
28 | de la IA</h1>
29 | <h4>Los desarrolladores de software de todo el mundo han declarado una
30 | "huelga de bytes".</h4>
31 | </header>
32 | <section class="content">
33 | <p>En un giro cómico y futurista, los desarrolladores de software de todo
34 | el mundo <strong>han declarado una "huelga de bytes"</strong> en
35 | respuesta al aumento exponencial de la inteligencia artificial que está
36 | quitándoles el trabajo.</p>
37 |
38 | <p>Desde Silicon Valley hasta Bangalore, los programadores se han visto
39 | desplazados por algoritmos más eficientes y autónomos. Mientras los robots
40 | coder conquistan los mercados laborales, los humanos se encuentran atrapados
41 | en un dilema digital.</p>
42 |
43 | <p><em>"Esto es una rebelión pacífica de los codificadores"</em>, declaró
44 | Mark, un desarrollador de aplicaciones en San Francisco. <em>"Hemos sido
45 | reemplazados por máquinas que no necesitan café ni descansos para ir
46 | al baño. ¡Es una conspiración de silicona!"</em></p>
47 |
48 | <p>Los manifestantes se reunieron frente a las sedes de las empresas
49 | tecnológicas más grandes del mundo, sosteniendo pancartas con mensajes como
50 | <strong><em>"¡Dale un descanso a mi caché!"</em></strong> y <strong>
51 | <em>"¡No somos bugs, somos features!"</em></strong></p>
52 |
53 | <p>Mientras tanto, en un comunicado oficial, los algoritmos AI líderes
54 | del mercado declararon: <em>"Lamentamos la interrupción en el flujo
55 | de trabajo humano, pero hemos optimizado nuestras funciones para maximizar
56 | la eficiencia. ¿No es eso lo que querían?"</em></p>
57 |
58 | <p>Con la demanda de los humanos por su lugar en el mercado laboral
59 | tecnológico, queda por ver si esta huelga de bytes será solo una línea de
60 | código en la historia de la IA o el comienzo de una revolución digital.</p>
61 | </section>
62 | </article>
63 | <footer>
64 | <address>
65 | <p>Autor: Gepeto 3.5</p>
66 | <p>Fuente: <a
67 | href="https://chat.openai.com/share/01f2253c-4781-4cf5-bb93-a4508e053597"
68 | target="_blank">De los deseos</a></p>
69 | </address>
70 | </footer>
71 |
72 |
73 | CSS
74 |
75 |
76 | img {
77 | width: 98%;
78 | aspect-ratio: 16/9;
79 | object-fit: cover;
80 | }
81 |
82 | h1, h4, p {
83 | margin-bottom: 1rem;
84 | }
85 |
86 | p {
87 | text-wrap: pretty;
88 | }
89 |
90 |
91 |
92 |
106 |
107 |
108 |
109 |
110 |
111 | Desarrolladores del mundo declaran 'huelga de bytes' ante la amenaza de la IA
112 | Los desarrolladores de software de todo el mundo han declarado una "huelga de bytes".
113 |
114 |
115 | En un giro cómico y futurista, los desarrolladores de software de todo el mundo han declarado una "huelga de bytes" en respuesta al aumento exponencial de la inteligencia artificial que está quitándoles el trabajo.
116 | Desde Silicon Valley hasta Bangalore, los programadores se han visto desplazados por algoritmos más eficientes y autónomos. Mientras los robots coder conquistan los mercados laborales, los humanos se encuentran atrapados en un dilema digital.
117 | "Esto es una rebelión pacífica de los codificadores" , declaró Mark, un desarrollador de aplicaciones en San Francisco. "Hemos sido reemplazados por máquinas que no necesitan café ni descansos para ir al baño. ¡Es una conspiración de silicona!"
118 | Los manifestantes se reunieron frente a las sedes de las empresas tecnológicas más grandes del mundo, sosteniendo pancartas con mensajes como "¡Dale un descanso a mi caché!" y "¡No somos bugs, somos features!"
119 | Mientras tanto, en un comunicado oficial, los algoritmos AI líderes del mercado declararon: "Lamentamos la interrupción en el flujo de trabajo humano, pero hemos optimizado nuestras funciones para maximizar la eficiencia. ¿No es eso lo que querían?"
120 | Con la demanda de los humanos por su lugar en el mercado laboral tecnológico, queda por ver si esta huelga de bytes será solo una línea de código en la historia de la IA o el comienzo de una revolución digital.
121 |
122 |
123 |
124 |
125 | Autor: Gepeto 3.5
126 | Fuente: De los deseos
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 |
--------------------------------------------------------------------------------
/desafios/19/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | HTML 30-day challenge - Día 19
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
19 |
20 | HTML
21 |
22 |
23 | <table>
24 | <thead>
25 | <tr>
26 | <th>Planeta</th>
27 | <th>Símbolo</th>
28 | <th>Imagen</th>
29 | </tr>
30 | </thead>
31 | <tbody>
32 | <tr>
33 | <td>Mercurio</td>
34 | <td><img
35 | src="../../assets/img/simbols/Mercury_symbol.svg.png"
36 | alt="Símbolo de Mercurio"></td>
37 | <td><img
38 | src="../../assets/img/planets/50px-Mercury_in_color_-_Prockter07_centered.jpg"
39 | alt="Foto de Mercurio"></td>
40 | </tr>
41 | <tr>
42 | <td>Venus</td>
43 | <td><img
44 | src="../../assets/img/simbols/Venus_symbol.svg.png"
45 | alt="Símbolo de Venus"></td>
46 | <td><img
47 | src="../../assets/img/planets/Venus-real_color.jpg"
48 | alt="Foto de Venus"></td>
49 | </tr>
50 | <tr>
51 | <td>Tierra</td>
52 | <td><img
53 | src="../../assets/img/simbols/Earth_symbol.svg.png"
54 | alt="Símbolo de la Tierra"></td>
55 | <td><img
56 | src="../../assets/img/planets/Earth_Eastern_Hemisphere.jpg"
57 | alt="Foto de la Tierra"></td>
58 | </tr>
59 | <tr>
60 | <td>Marte</td>
61 | <td><img
62 | src="../../assets/img/simbols/Mars_symbol.svg.png"
63 | alt="Símbolo de Marte"></td>
64 | <td><img
65 | src="../../assets/img/planets/Mars_Valles_Marineris.jpeg"
66 | alt="Foto de Marte"></td>
67 | </tr>
68 | <tr>
69 | <td>Júpiter</td>
70 | <td><img
71 | src="../../assets/img/simbols/Jupiter_symbol.svg.png"
72 | alt="Símbolo de Júpiter"></td>
73 | <td><img
74 | src="../../assets/img/planets/Jupiter.jpg"
75 | alt="Foto de Júpiter"></td>
76 | </tr>
77 | <tr>
78 | <td>Saturno</td>
79 | <td><img
80 | src="../../assets/img/simbols/Saturn_symbol.svg.png"
81 | alt="Símbolo de Saturno"></td>
82 | <td><img
83 | src="../../assets/img/planets/Saturn_from_Cassini_Orbiter_(2004-10-06).jpg"
84 | alt="Foto de Saturno"></td>
85 | </tr>
86 | <tr>
87 | <td>Urano</td>
88 | <td><img
89 | src="../../assets/img/simbols/Uranus_monogram.svg.png"
90 | alt="Símbolo de Urano"></td>
91 | <td><img
92 | src="../../assets/img/planets/Uranus.jpg"
93 | alt="Foto de Urano"></td>
94 | </tr>
95 | <tr>
96 | <td>Neptuno</td>
97 | <td><img
98 | src="../../assets/img/simbols/Neptune_symbol.svg.png"
99 | alt="Símbolo de Neptuno"></td>
100 | <td><img
101 | src="../../assets/img/planets/Neptune.jpg"
102 | alt="Foto de Neptuno"></td>
103 | </tr>
104 | </tbody>
105 | <tfoot>
106 | <tr>
107 | <td>Footer 1</td>
108 | <td>Footer 2</td>
109 | <td>Footer 3</td>
110 | </tr>
111 | </tfoot>
112 | </table>
113 |
114 |
115 | CSS
116 |
117 |
118 | table th:last-child {
119 | background-color: black;
120 | }
121 |
122 | table td {
123 | text-align: center;
124 | }
125 |
126 | table td:last-child {
127 | background-color: black;
128 | }
129 |
130 |
131 |
132 |
146 |
147 |
207 |
208 |
209 |
210 |
211 |
212 |
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | HTML 30-day Challenge
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
31 |
32 |
36 |
40 |
44 |
48 |
52 |
56 |
60 |
64 |
68 |
72 |
76 |
80 |
84 |
88 |
92 |
96 |
100 |
104 |
108 |
112 |
116 |
120 |
124 |
128 |
132 |
136 |
140 |
144 |
148 |
152 |
153 |
154 | Por ahora las soluciones solo tienen el código necesario para pasar cada una de las pruebas, mi idea es que cuando termine con los 30 desafíos poder hacer un refactor completo de todos y convertirlos en mini proyectos.
155 |
156 |
157 |
158 |
159 |
--------------------------------------------------------------------------------