EJERCICIO CSS GRID

Estructura Grid Principal

El grid se define en la clase .contenedor:

css
.contenedor {
    display: grid;              /* Activa Grid */
    grid-template-rows: auto 1fr; /* Define 2 filas */
    min-height: 100vh;           /* Altura mínima = toda la pantalla */
}

🏗️ Composición del Grid

text
┌─────────────────────────────────┐
│  FILA 1: auto (menú)            │
│  .menu                           │
│  Altura = según su contenido     │
├─────────────────────────────────┤
│  FILA 2: 1fr (contenido)        │
│  .contenido                      │
│  Ocupa el espacio restante       │
└─────────────────────────────────┘

📊 Distribución del Espacio

  1. Primera fila (auto):

    • El menú superior .menu

    • Su altura se ajusta automáticamente al contenido (en este caso, los links)

    • Si el menú crece, esta fila crece también

  2. Segunda fila (1fr):

    • El contenido principal .contenido

    • 1fr significa "1 fracción del espacio restante"

    • Ocupa TODO el espacio que sobra después del menú

    • La tabla se expande dentro de esta área

🎯 Ventajas de este Grid

  • Responsive automático: Al usar min-height: 100vh, siempre ocupa toda la pantalla

  • Flexible: Si el menú necesita más espacio (por ejemplo, si se añade más texto), la primera fila se adapta

  • Limpio: Solo necesitas 2 filas, sin necesidad de definir columnas

💡 Visualización Mental

Imagina que divides la pantalla en dos rectángulos horizontales:

  • El rectángulo superior contiene el menú (tamaño justo para los links)

  • El rectángulo inferior contiene todo lo demás (se estira hasta abajo)


<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Mi Página con Grid</title>
   <style>
    /* estilos.css - VERSIÓN SUPER SENCILLA */

/* Reset básico */
* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

body {
    font-family: Arial, sans-serif;
    background-color: #f0f0f0;
}

/* ===== CONTENEDOR PRINCIPAL CON GRID ===== */
.contenedor {
    display: grid;              /* Activamos Grid */
    grid-template-rows: auto 1fr; /* Dos filas: menú automático, contenido el resto */
    min-height: 100vh;           /* Ocupa toda la pantalla */
}

/* ===== MENÚ SUPERIOR ===== */
.menu {
    background-color: #333;      /* Fondo oscuro */
    padding: 15px;               /* Espacio interno */
    text-align: center;          /* Centrar el texto */
}

.menu a {
    color: white;                /* Texto blanco */
    text-decoration: none;       /* Quitar subrayado */
    margin: 0 15px;              /* Espacio entre links */
    font-size: 18px;             /* Tamaño de letra */
}

.menu a:hover {
    text-decoration: underline;  /* Subrayado al pasar el mouse */
}

/* ===== CONTENIDO PRINCIPAL ===== */
.contenido {
    padding: 20px;               /* Espacio alrededor */
    background-color: white;      /* Fondo blanco */
}

.contenido h2 {
    margin-bottom: 20px;          /* Espacio debajo del título */
    color: #333;
}

   </style>

   <style>
        /* ===== ESTILOS DE LA TABLA ===== */
    table {
        width: 100%;                  /* Que ocupe todo el ancho */
        border-collapse: collapse;    /* Bordes juntos */
        background-color: white;
        box-shadow: 0 2px 5px rgba(0,0,0,0.1);  /* Sombra ligera */
    }

    /* Bordes para celdas */
    th, td {
        border: 1px solid #ddd;       /* Borde gris claro */
        padding: 10px;                 /* Espacio interno */
        text-align: left;              /* Texto a la izquierda */
    }

    /* Encabezados */
    th {
        background-color: #4CAF50;    /* Fondo verde */
        color: white;                  /* Texto blanco */
        font-weight: bold;
    }
   </style>
</head>
<body>

    <!-- CONTENEDOR PRINCIPAL CON GRID -->
    <div class="contenedor">
       
        <!-- MENÚ SUPERIOR (sencillo) -->
        <div class="menu">
            <a href="#">Inicio</a>
            <a href="#">Productos</a>
            <a href="#">Ventas</a>
            <a href="#">Reportes</a>
        </div>
       
        <!-- CONTENIDO PRINCIPAL (la tabla) -->
        <div class="contenido">
            <h2>Lista de Productos</h2>
           
            <!-- TABLA NORMAL CON <table> -->
            <table>
                <thead>
                    <tr>
                        <th>ID</th>
                        <th>Descripción</th>
                        <th>Sección</th>
                        <th>Gross</th>
                    </tr>
                </thead>
                <tbody>
                    <tr>
                        <td>1</td>
                        <td>desenzilador das</td>
                        <td>henanienas</td>
                        <td>32.00</td>
                    </tr>
                    <tr>
                        <td>2</td>
                        <td>león bencetona</td>
                        <td>depotera</td>
                        <td>30.00</td>
                    </tr>
                    <tr>
                        <td>3</td>
                        <td>koo</td>
                        <td>depotera</td>
                        <td>13.43</td>
                    </tr>
                    <tr>
                        <td>4</td>
                        <td>alcoates</td>
                        <td>henanienas</td>
                        <td>22.50</td>
                    </tr>
         
                   
                 
               
                </tbody>
            </table>
        </div>
    </div>

</body>
</html>

Comentarios

Entradas más populares de este blog

Tutorial de CSS: De Cero a Estilizar tu Primera Página Web

layouts

Proyecto Práctico: Tarjeta de Perfil