├── 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 |
14 |

HTML 30-day challenge - Día 1

15 |

Crea una página HTML con código CSS desde un archivo diferente.

16 |
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 |
16 |

HTML 30-day challenge - Día 13

17 |

Crea una barra medidora que muestre los tickets vendidos en un cine (Ejemplo: 64/100 tickets vendidos).

18 |
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 |
29 | 30 | 31 | 32 | 33 | Día 12 34 | 35 | 36 | Día 14 37 | 38 | 39 | 40 | 41 |
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 |
16 |

HTML 30-day challenge - Día 15

17 |

Crea una página con un video MP4 (no de youtube), que muestre una imagen de portada antes de darle a reproducir.

18 |
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 |
34 | 35 | 36 | 37 | 38 | Día 14 39 | 40 | 41 | Día 16 42 | 43 | 44 | 45 | 46 |
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 |
16 |

HTML 30-day challenge - Día 12

17 |

Crea un slider que permita seleccionar un número entre 1-50 y lo muestre en vivo al cambiar. Requiere algo de Javascript.

18 |
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 |
37 | 38 | 39 | 40 | 41 | Día 11 42 | 43 | 44 | Día 13 45 | 46 | 47 | 48 | 49 |
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 |
16 |

HTML 30-day challenge - Día 23

17 |

Crea un formulario que te permita elegir un día entre el 15/nov y el 15/dic.

18 |
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 |
42 | 43 | 44 | 45 | 46 | Día 22 47 | 48 | 49 | Día 24 50 | 51 | 52 | 53 | 54 |
55 |
56 |
57 |
58 |

Seleccciona una fecha

59 | 60 |
61 |
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 |
30 | 31 | 32 | 33 | 34 | Día 6 35 | 36 | 37 | Día 8 38 | 39 | 40 | 41 | 42 |
43 |
44 |
45 | 46 | 47 | 48 | HTML 30-day challenge 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 |
16 |

HTML 30-day challenge - Día 24

17 |

Crea un formulario de registro que valide si el username escrito es válido (sólo letras y números) o no.

18 |
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 |
43 | 44 | 45 | 46 | 47 | Día 23 48 | 49 | 50 | Día 25 51 | 52 | 53 | 54 | 55 |
56 |
57 |
58 |
59 |

Username:

60 | 61 | 62 |
63 |
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 |
15 |

HTML 30-day challenge - Día 5

16 |

Ponle un título y una descripción al documento, ideal para SEO.

17 |
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 |
34 | 35 | 36 | 37 | 38 | Día 4 39 | 40 | 41 | Día 6 42 | 43 | 44 | 45 | 46 |
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 |
16 |

HTML 30-day challenge - Día 30

17 |

Carga una librería Javascript de confetti y lánzalo cuando pulses en un botón. Requiere algo de Javascript.

18 |
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 |
48 | 49 | 50 | 51 | 52 | Día 29 53 | 54 | 55 | Inicio 56 | 57 |
58 |
59 |
60 | 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 |
16 |

HTML 30-day challenge - Día 16

17 |

Muestra un texto con el atajo de teclado CTRL+ALT+SUPR y dale estilo para que parezcan teclas.

18 |
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 |
59 | 60 | 61 | 62 | 63 | Día 15 64 | 65 | 66 | Día 17 67 | 68 | 69 | 70 | 71 |
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 |
16 |

HTML 30-day challenge - Día 25

17 |

Crea una galería de fotos. Asegúrate que no se cargan si están fuera de la región visible del navegador.

18 |
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 |
41 | 42 | 43 | 44 | 45 | Día 24 46 | 47 | 48 | Día 26 49 | 50 | 51 | 52 | 53 |
54 |
55 |
56 | Avatar odraciRdev 57 | Logo HTML 30-day challenge 58 | Portada de la noticia 59 | Social graph 60 |
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 |
16 |

HTML 30-day challenge - Día 14

17 |

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.

18 |
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 |
48 | 49 | 50 | 51 | 52 | Día 13 53 | 54 | 55 | Día 15 56 | 57 | 58 | 59 | 60 |
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 |
16 |

HTML 30-day challenge - Día 28

17 |

Crea una ventana modal que bloquee la interación con otros botones. Requiere un poco de Javascript.

18 |
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 |
44 | 45 | 46 | 47 | 48 | Día 27 49 | 50 | 51 | Día 29 52 | 53 | 54 | 55 | 56 |
57 |
58 |
59 | 60 |

¡Censeguido!

61 |

Hemos superado el desafío #28

62 | 63 |
64 | 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 |
14 |

HTML 30-day challenge - Día 3

15 |

Construye una página con un párrafo que tenga enlaces internos y externos (a otros sitios web).

16 |
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 |
35 | 36 | 37 | 38 | 39 | Día 2 40 | 41 | 42 | Día 4 43 | 44 | 45 | 46 | 47 |
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 |
14 |

HTML 30-day challenge - Día 2

15 |

Crea una página con un titular, varios párrafos de texto y una imagen.

16 |
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 |
39 | 40 | 41 | 42 | 43 | Día 1 44 | 45 | 46 | Día 3 47 | 48 | 49 | 50 | 51 |
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 | 58 | Ricardo Cuauro - Frontend Developer 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 |
16 |

HTML 30-day challenge - Día 22

17 |

En la lista anterior, permite al usuario introducir opciones personalizadas (no sólo las de la lista) y filtrar las opciones existentes.

18 |
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 |
52 | 53 | 54 | 55 | 56 | Día 21 57 | 58 | 59 | Día 23 60 | 61 | 62 | 63 | 64 |
65 |
66 |
67 |

Desarrollo de software

68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 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 |
16 |

HTML 30-day challenge - Día 8

17 |

Crear un párrafo de texto con palabras destacadas en diferentes colores.

18 |
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 |
48 | 49 | 50 | 51 | 52 | Día 7 53 | 54 | 55 | Día 9 56 | 57 | 58 | 59 | 60 |
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 |
16 |

HTML 30-day challenge - Día 26

17 |

Crea un mensaje emergente al pulsar un botón, que desaparezca al pulsar fuera del mensaje.

18 |
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 |
71 | 72 | 73 | 74 | 75 | Día 25 76 | 77 | 78 | Día 27 79 | 80 | 81 | 82 | 83 |
84 |
85 |
86 | 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 |
16 |

HTML 30-day challenge - Día 20

17 |

Crea un formulario para dejar un comentario en una página: Usuario y comentario de texto.

18 |
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 |
72 | 73 | 74 | 75 | 76 | Día 19 77 | 78 | 79 | Día 21 80 | 81 | 82 | 83 | 84 |
85 |
86 |
87 |
88 | 91 | 92 | 95 | 96 | 97 |
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 |
16 |

HTML 30-day challenge - Día 21

17 |

Crea una lista desplegable donde se pueda seleccionar entre 3 grupos de productos ficticios.

18 |
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 |
58 | 59 | 60 | 61 | 62 | Día 20 63 | 64 | 65 | Día 22 66 | 67 | 68 | 69 | 70 |
71 |
72 |
73 |

Desarrollo de software

74 | 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 |
16 |

HTML 30-day challenge - Día 9

17 |

Crea un pergamino con una lista de objetos, donde se numere con números romanos (mayúsculas).

18 |
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 |
78 | 79 | 80 | 81 | 82 | Día 8 83 | 84 | 85 | Día 10 86 | 87 | 88 | 89 | 90 |
91 |
92 |
93 |
94 |

Inventos Romanos

95 |
    96 |
  1. Carreteras
  2. 97 |
  3. Periódicos
  4. 98 |
  5. Calendario
  6. 99 |
  7. Hormigón
  8. 100 |
  9. Alcantarillado
  10. 101 |
  11. Bomberos
  12. 102 |
  13. Graffits
  14. 103 |
  15. Maquillaje
  16. 104 |
  17. Calefacción
  18. 105 |
  19. Arcos
  20. 106 |
  21. Spas
  22. 107 |
  23. Departamentos
  24. 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 |
14 |

HTML 30-day challenge - Día 6

15 |

Crea un grupo de secciones (acordeón) donde se despliegue sólo uno a la vez.

16 |
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 |
45 | 46 | 47 | 48 | 49 | Día 5 50 | 51 | 52 | Día 7 53 | 54 | 55 | 56 | 57 |
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 |
27 |

HTML 30-day challenge - Día 27

28 |

Crea una serie de etiquetas que permitan mostrar como miniatura una imagen en redes sociales.

29 |
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 |
73 | 74 | 75 | 76 | 77 | Día 26 78 | 79 | 80 | Día 28 81 | 82 | 83 | 84 | 85 |
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 |
116 | 117 | 118 | 119 | 120 | Día 16 121 | 122 | 123 | Día 18 124 | 125 | 126 | 127 | 128 |
129 |
130 |
131 |
132 |
133 |
134 |

odraciRdev

135 |
136 | Avatar de odraciRdev 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 |
16 |

HTML 30-day challenge - Día 29

17 |

Crea un sistema de pestañas (tabs) para mostrar información. Necesita algo de Javascript.

18 |
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 |
75 | 76 | 77 | 78 | 79 | Día 28 80 | 81 | 82 | Día 30 83 | 84 | 85 | 86 | 87 |
88 |
89 |
90 |
91 | 92 | 93 | 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 | 102 | 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 |
14 |

HTML 30-day challenge - Día 4

15 |

Valida el código HTML de tus ejemplos anteriores (y los siguientes a partir de ahora).

16 |
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 |
68 | 69 | 70 | 71 | 72 | Día 3 73 | 74 | 75 | Día 5 76 | 77 | 78 | 79 | 80 |
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 |
16 |

HTML 30-day challenge - Día 11

17 |

Escribe un texto con super/subíndices (fórmulas químicas, por ejemplo).

18 |
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 |
95 | 96 | 97 | 98 | 99 | Día 10 100 | 101 | 102 | Día 12 103 | 104 | 105 | 106 | 107 |
108 |
109 |
110 |
111 |
112 |

Fórmulas químicas más comunes

113 |
114 |

Compuesto

115 |

Fórmula

116 |
Dióxido de carbono
117 |
CO2
118 |
Agua Oxigenada
119 |
H2O2
120 |
Amoniaco
121 |
NH3
122 |
Butano
123 |
C4H10
124 |
125 |
126 |
127 |

Fórmulas físicas más comunes

128 |
129 |

Nombre

130 |

Fórmula

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 |
16 |

HTML 30-day challenge - Día 10

17 |

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.

18 |
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 |
122 | 123 | 124 | 125 | 126 | Día 9 127 | 128 | 129 | Día 11 130 | 131 | 132 | 133 | 134 |
135 |
136 |
137 |
138 |
139 |
140 | laptop 141 | 142 |
143 |
144 | 145 | 146 | 147 | 148 | 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 | ![HTML 30-day challenge](./assets/img/HTML-30-day-challenge.webp) 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 | [![Discord](https://img.shields.io/badge/Discord-5865F2.svg?style=for-the-badge&logo=Discord&logoColor=white)](https://discord.gg/AFrzAEYA85) 17 | [![Twitch](https://img.shields.io/badge/Twitch-9146FF.svg?style=for-the-badge&logo=Twitch&logoColor=white)](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 |
16 |

HTML 30-day challenge - Día 18

17 |

Crea un pequeño artículo de prensa con una noticia inventada. Usa etiquetas HTML semánticas.

18 |
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 |
93 | 94 | 95 | 96 | 97 | Día 17 98 | 99 | 100 | Día 19 101 | 102 | 103 | 104 | 105 |
106 |
107 |
108 |
109 |
110 | Desarrolladores del mundo declaran 'huelga de bytes' ante la amenaza de la IA 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 | 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 |
16 |

HTML 30-day challenge - Día 19

17 |

Crea una tabla con información. Incluye una cabecera y un pie de tabla. La última columna será de un color diferente.

18 |
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 |
133 | 134 | 135 | 136 | 137 | Día 18 138 | 139 | 140 | Día 20 141 | 142 | 143 | 144 | 145 |
146 |
147 |
148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 |
PlanetaSímboloImagen
MercurioSímbolo de MercurioFoto de Mercurio
VenusSímbolo de VenusFoto de Venus
TierraSímbolo de la TierraFoto de la Tierra
MarteSímbolo de MarteFoto de Marte
JúpiterSímbolo de JúpiterFoto de Júpiter
SaturnoSímbolo de SaturnoFoto de Saturno
UranoSímbolo de UranoFoto de Urano
NeptunoSímbolo de NeptunoFoto de Neptuno
Footer 1Footer 2Footer 3
206 |
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 |
17 | Logo HTML 30-day Challenge 18 |

HTML 30-day Challenge

19 | 30 |
31 |
32 |
33 |

Día 1

34 |

captive_portal

35 |
36 |
37 |

Día 2

38 |

captive_portal

39 |
40 |
41 |

Día 3

42 |

captive_portal

43 |
44 |
45 |

Día 4

46 |

captive_portal

47 |
48 |
49 |

Día 5

50 |

captive_portal

51 |
52 |
53 |

Día 6

54 |

captive_portal

55 |
56 |
57 |

Día 7

58 |

captive_portal

59 |
60 |
61 |

Día 8

62 |

captive_portal

63 |
64 |
65 |

Día 9

66 |

captive_portal

67 |
68 |
69 |

Día 10

70 |

captive_portal

71 |
72 |
73 |

Día 11

74 |

captive_portal

75 |
76 |
77 |

Día 12

78 |

captive_portal

79 |
80 |
81 |

Día 13

82 |

captive_portal

83 |
84 |
85 |

Día 14

86 |

captive_portal

87 |
88 |
89 |

Día 15

90 |

captive_portal

91 |
92 |
93 |

Día 16

94 |

captive_portal

95 |
96 |
97 |

Día 17

98 |

captive_portal

99 |
100 |
101 |

Día 18

102 |

captive_portal

103 |
104 |
105 |

Día 19

106 |

captive_portal

107 |
108 |
109 |

Día 20

110 |

captive_portal

111 |
112 |
113 |

Día 21

114 |

captive_portal

115 |
116 |
117 |

Día 22

118 |

captive_portal

119 |
120 |
121 |

Día 23

122 |

captive_portal

123 |
124 |
125 |

Día 24

126 |

captive_portal

127 |
128 |
129 |

Día 25

130 |

captive_portal

131 |
132 |
133 |

Día 26

134 |

captive_portal

135 |
136 |
137 |

Día 27

138 |

captive_portal

139 |
140 |
141 |

Día 28

142 |

captive_portal

143 |
144 |
145 |

Día 29

146 |

captive_portal

147 |
148 |
149 |

Día 30

150 |

captive_portal

151 |
152 |
153 | 156 |
157 | 158 | 159 | --------------------------------------------------------------------------------