Tablas HTML-CSS

Ejercicio para practicar habilidades de HTML y CSS. Ventana emergente o modal para todos los dispositivos sin framework. Distribución de tarjetas con grid.

Podés visitar el ejercicio que desarrollaremos aquí

💻 Ver explicación en video de youtube.

HTML

<!DOCTYPE html>
<html lang="es">
<head>
   <meta charset="UTF-8">
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   <link rel="stylesheet" href="style.css">
   <link rel="preconnect" href="https://fonts.googleapis.com">
   <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
   <link href="https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap" rel="stylesheet">
   <title>Ventanas Emergentes</title>
</head>
<body>
   <header>
       <h1>Explora la Riqueza de África</h1>
       <p>Un recorrido fascinante por 6 joyas del continente africano</p>
   </header>
   <main>
       <div class="tarjeta">
           <img src="imagenes/egipto.jpg" alt="">
           <div class="contenido">
               <h2>Egipto</h2>
               <h4>Capital: El Cairo</h4>
               <p>Tierra de faraones, pirámides milenarias y el majestuoso río Nilo.</p>
               <button class="btn" commandfor="emergente-1" command="show-modal">Explorar Más</button>
           </div>
           <dialog id="emergente-1" class="emergente">
               <div class="encabezado-dialog">
                   <form method="dialog">
                       <button class="cerrar-ventana">X</button>
                   </form>
                   <img src="imagenes/egipto.jpg" alt="">
               </div>
               <div class="contenido-dialog">
                   <h2>Egipto</h2>
                   <h4>Capital: El Cairo</h4>
                   <div class="tema">
                       <h3>Geografía</h3>
                       <p>Ubicado en el noreste de África. Dominado por el desierto del Sáhara, pero cruzado de sur a norte por el fértil valle del río Nilo.</p>
                   </div>
                   <div class="tema">
                       <h3>Actividades Importantes</h3>
                       <p>Ubicado en el noreste de África. Dominado por el desierto del Sáhara, pero cruzado de sur a norte por el fértil valle del río Nilo.</p>
                   </div>
                   <div class="tema">
                       <h3>Un poco de Historia</h3>
                       <p>Ubicado en el noreste de África. Dominado por el desierto del Sáhara, pero cruzado de sur a norte por el fértil valle del río Nilo.</p>
                   </div>
                   
               </div>
           </dialog>
       </div>
       <div class="tarjeta">
           <img src="imagenes/kenia.jpg" alt="">
           <div class="contenido">
               <h2>Kenia</h2>
               <h4>Capital: Nairobi</h4>
               <p>El corazón del safari africano y la increíble Gran Migración.</p>
               <button class="btn" commandfor="emergente-2" command="show-modal">Explorar Más</button>
           </div>
           <dialog id="emergente-2" class="emergente">
               <div class="encabezado-dialog">
                   <form method="dialog">
                       <button class="cerrar-ventana">X</button>
                   </form>
                   <img src="imagenes/kenia.jpg" alt="Kenia">
               </div>
               <div class="contenido-dialog">
                   <h2>Kenia</h2>
                   <h4>Capital: Nairobi</h4>
                   <div class="tema">
                       <h3>Geografía</h3>
                       <p>Ubicado en África Oriental, cuenta con costas en el Océano Índico, sabanas extensas, montañas altas como el Monte Kenia y el Valle del Gran Rift.</p>
                   </div>
                   <div class="tema">
                       <h3>Actividades Importantes</h3>
                       <p>Ecoturismo, safaris fotográficos en Masai Mara, exportación de té, café y flores de corte.</p>
                   </div>
                   <div class="tema">
                       <h3>Un poco de Historia</h3>
                       <p>Poblado por diversos grupos étnicos como los Masái. Fue colonia británica hasta obtener su independencia en 1963 liderada por Jomo Kenyatta.</p>
                   </div>
                   
               </div>
           </dialog>
       </div>
       <div class="tarjeta">
           <img src="imagenes/sudafrica.jpg" alt="">
           <div class="contenido">
               <h2>Sudáfrica</h2>
               <h4>Capital: Pretoria</h4>
               <p>La nación del arcoíris, famosa por su biodiversidad y riqueza cultural.</p>
               <button class="btn" commandfor="emergente-3" command="show-modal">Explorar Más</button>
           </div>
           <dialog id="emergente-3" class="emergente" >
               <div class="encabezado-dialog">
                   <form method="dialog">
                       <button class="cerrar-ventana">X</button>
                   </form>
                   <img src="imagenes/sudafrica.jpg" alt="">
               </div>
               <div class="contenido-dialog">
                   <h2>Sudáfrica</h2>
                   <h4>Capital: Pretoria</h4>
                   <div class="tema">
                       <h3>Geografía</h3>
                       <p>Extremo sur del continente. Abundan mesetas altas, sabanas y una vasta costa entre el Atlántico e Índico.</p>
                   </div>
                   <div class="tema">
                       <h3>Actividades Importantes</h3>
                       <p>Minería (oro y diamantes), producción vinícola, turismo de fauna silvestre.</p>
                   </div>
                   <div class="tema">
                       <h3>Un poco de Historia</h3>
                       <p>Marcada por el Apartheid y la histórica transición a la democracia liderada por Nelson Mandela.</p>
                   </div>
                   
               </div>
           </dialog>
       </div>
       <div class="tarjeta">
           <img src="https://images.unsplash.com/photo-1539037116277-4db20889f2d4?auto=format&fit=crop&w=600&q=80" alt="">
           <div class="contenido">
               <h2>Marruecos</h2>
               <h4>Capital: Rabat</h4>
               <p>Encrucijada entre el mundo árabe, berber y la influencia europea.</p>
               <button class="btn" commandfor="emergente-4" command="show-modal">Explorar Más</button>
           </div>
           <dialog id="emergente-4" class="emergente" >
               <div class="encabezado-dialog">
                   <form method="dialog">
                       <button class="cerrar-ventana">X</button>
                   </form>
                   <img src="https://images.unsplash.com/photo-1539037116277-4db20889f2d4?auto=format&fit=crop&w=600&q=80" alt="">
               </div>
               <div class="contenido-dialog">
                   <h2>Marruecos</h2>
                   <h4>Capital: Rabat</h4>
                   <div class="tema">
                       <h3>Geografía</h3>
                       <p>Noroeste de África. Posee costas en el Atlántico y el Mediterráneo, dominado por el Atlas y el Sáhara.</p>
                   </div>
                   <div class="tema">
                       <h3>Actividades Importantes</h3>
                       <p>Turismo cultural y de aventura, comercio de artesanías, pesca y extracción de fosfatos.</p>
                   </div>
                   <div class="tema">
                       <h3>Un poco de Historia</h3>
                       <p>Con una herencia bereber milenaria, ha sido punto de encuentro comercial y un reino independiente.</p>
                   </div>
                   
               </div>
           </dialog>
       </div>
       <div class="tarjeta">
           <img src="imagenes/madagascar.jpg" alt="">
           <div class="contenido">
               <h2>Madagascar</h2>
               <h4>Capital: Antananarivo</h4>
               <p>Una isla única llena de biodiversidad, baobabs y lémures extraordinarios.</p>
               <button class="btn" commandfor="emergente-4" command="show-modal">Explorar Más</button>
           </div>
           <dialog id="emergente-4" class="emergente" >
               <div class="encabezado-dialog">
                   <form method="dialog">
                       <button class="cerrar-ventana">X</button>
                   </form>
                   <img src="imagenes/madagascar.jpg" alt="">
               </div>
               <div class="contenido-dialog">
                   <h2>Madagascar</h2>
                   <h4>Capital: Antananarivo</h4>
                   <div class="tema">
                       <h3>Geografía</h3>
                       <p>Cuarta isla más grande del mundo en el Océano Índico. Selvas tropicales y bosques secos.</p>
                   </div>
                   <div class="tema">
                       <h3>Actividades Importantes</h3>
                       <p>Ecoturismo, agricultura (primer productor mundial de vainilla) y especias.</p>
                   </div>
                   <div class="tema">
                       <h3>Un poco de Historia</h3>
                       <p>Ecosistema aislado donde el 90% de su flora y fauna no existe en ninguna otra parte del mundo.</p>
                   </div>
                   
               </div>
           </dialog>
       </div>
       <div class="tarjeta">
           <img src="imagenes/nigeria.jpg" alt="">
           <div class="contenido">
               <h2>Nigeria</h2>
               <h4>Capital: Abuya</h4>
               <p>El gigante demográfico y económico del oeste del continente.</p>
               <button class="btn" commandfor="emergente-4" command="show-modal">Explorar Más</button>
           </div>
           <dialog id="emergente-4" class="emergente" >
               <div class="encabezado-dialog">
                   <form method="dialog">
                       <button class="cerrar-ventana">X</button>
                   </form>
                   <img src="imagenes/nigeria.jpg" alt="">
               </div>
               <div class="contenido-dialog">
                   <h2>Nigeria</h2>
                   <h4>Capital: Abuya</h4>
                   <div class="tema">
                       <h3>Geografía</h3>
                       <p>Golfo de Guinea. Transiciona de manglares costeros a sabanas tropicales y zonas áridas.</p>
                   </div>
                   <div class="tema">
                       <h3>Actividades Importantes</h3>
                       <p>Extracción y exportación de petróleo, industria del cine (Nollywood) y tecnología.</p>
                   </div>
                   <div class="tema">
                       <h3>Un poco de Historia</h3>
                       <p>Hogar de reinos antiguos como Benín. Hoy es la mayor economía y el país más poblado de África.</p>
                   </div>
                   
               </div>
           </dialog>
       </div>
   </main>
   <footer>
       <p>
           Creado con fines didácticos por <strong>caterinaweb.net</strong>
       </p>
   </footer>
</body>
</html>

CSS

/*Colores que usaremos. En general en el diseño siempre tenemos que elegir colores para mantener la uniformidad del sitio web*/

:root {

   --color-texto: #2b2d42;
   --color-texto-titulos: #3d405b;
   --color-texto-parrafos: #6c757d;

   --color-resaltador-fuerte: #e07a5f;    
   --color-resaltador-suave: #f4a261;
   
   --color-fondo: #f4f1de;
   --fondo-tarjeta: #ffffff;
   
}
       /* CSS RESET & VARIABLES */
* {
   box-sizing: border-box;
   margin: 0;
   padding: 0;
   font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
}

body {
   background-color: var(--color-fondo);
   color: var(--color-texto);
   padding: 2rem 1rem;
}
header {
   text-align: center;
   margin-bottom: 3rem;
}

header h1 {
   font-size: 2.5rem;
   color: var(--color-texto-titulos);
   margin-bottom: 0.5rem;
}

header p {
   font-size: 1.1rem;
   color: var(--color-texto-parrafos);
}
/* GRID DE TARJETAS . En nuestro caso , el contenedor de las tarjetas va a ser el main*/
main {
   display: grid;
   grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
   gap: 2rem;
   max-width: 1200px;
   margin: 0 auto;
}

/* TARJETAS */
main .tarjeta {
   max-width: 390px;
   margin: 0 auto;
   background-color: var(--fondo-tarjeta);
   border-radius: 16px;
   overflow: hidden;
   box-shadow: 0 10px 20px rgba(0,0,0,0.05);
   transition: transform 0.3s ease, box-shadow 0.3s ease;
   display: flex;
   flex-direction: column;
}

main .tarjeta:hover {
   transform: translateY(-8px);
   box-shadow: 0 15px 30px rgba(0,0,0,0.12);
}

main .tarjeta img {
   width: 100%;
   height: 200px;
   object-fit: cover;
}

main .tarjeta .contenido {
   padding: 1.5rem;
   display: flex;
   flex-direction: column;
   flex-grow: 1;
}

main .tarjeta .contenido h2 {
   font-size: 1.5rem;
   color: var(--color-texto-titulos);
   margin-bottom: 0.5rem;
}

main .tarjeta .contenido h4 {
   font-size: 0.95rem;
   font-weight: 600;
   color: var(--color-resaltador-fuerte);
   margin-bottom: 1rem;
}

main .tarjeta .contenido p {
   font-size: 0.9rem;
   color: var(--color-texto-parrafos);
   margin-bottom: 1.5rem;
   line-height: 1.4;
   flex-grow: 1;
}
.btn {
   background-color: var(--color-resaltador-fuerte);
   color: white;
   border: none;
   padding: 0.8rem 1.2rem;
   border-radius: 8px;
   font-weight: bold;
   cursor: pointer;
   transition: background-color 0.2s ease;
   width: 100%;
   text-align: center;
}

.btn:hover {
   background-color: #d0694e;
}

 /* ESTILOS DE LA ETIQUETA DIALOG (NATIVO) */
dialog {
   margin: auto;
   border: none;
   border-radius: 16px;
   max-width: 600px;
   width: 90%;
   max-height: 85vh;
   padding: 0;
   box-shadow: 0 20px 40px rgba(0, 0, 0, 0.3);
   overflow: hidden;
}

/* Fondo oscuro nativo con ::backdrop */
dialog::backdrop {
   background: rgba(0, 0, 0, 0.6);
   backdrop-filter: blur(4px);
}
dialog.emergente .encabezado-dialog {
   position: relative;
}

dialog.emergente .encabezado-dialog img {
   width: 100%;
   height: 220px;
   object-fit: cover;
   display: block;
}
dialog.emergente .encabezado-dialog button{
   position: absolute;
   top: 15px;
   right: 15px;
   background: rgba(0, 0, 0, 0.6);
   color: white;
   border: none;
   width: 35px;
   height: 35px;
   border-radius: 50%;
   font-size: 1.2rem;
   cursor: pointer;
   display: flex;
   align-items: center;
   justify-content: center;
}
dialog.emergente .contenido-dialog {
   padding: 1.5rem 2rem 2rem;
   overflow-y: auto;
   max-height: calc(85vh - 220px);
}

dialog.emergente .contenido-dialog h2 {
   color: var(--secondary-color);
}

dialog.emergente .contenido-dialog h4 {
   color: var(--color-resaltador-fuerte);
   margin-bottom: 1.2rem;
}

dialog.emergente .contenido-dialog .tema {
   margin-bottom: 1rem;
}

dialog.emergente .contenido-dialog .tema h3 {
   font-size: 1rem;
   color: var(--secondary-color);
   margin-bottom: 0.3rem;
   border-bottom: 2px solid var(--color-resaltador-suave);
   display: inline-block;
}

dialog.emergente .contenido-dialog .tema p {
   font-size: 0.95rem;
   line-height: 1.5;
}

footer{
   margin: 2rem 0;
   text-align: center;
}

Recursos

Íconos y fuentes: https://fonts.google.com