jerarquía usando un container

 ¡Sí! Aquí te muestro la jerarquía usando un container:

html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Card con Container</title>
    <style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }

        body {
            background: #f0f0f0;
            font-family: Arial, sans-serif;
            min-height: 100vh;
        }

        /* CONTAINER: centra todo lo que tenga dentro */
        .container {
            display: flex;
            justify-content: center;
            align-items: center;
            min-height: 100vh;
            padding: 20px;
        }

        /* CARD: estructura interna */
        .card {
            width: 300px;
            background: white;
            border-radius: 8px;
            box-shadow: 0 2px 4px rgba(0,0,0,0.1);
            border: 2px solid red;
        }

        .card-header {
            height: 40px;
            background: #f8f9fa;
            border-bottom: 1px solid #dee2e6;
            border-radius: 8px 8px 0 0;
            border: 2px solid blue;
        }

        .card-body {
            min-height: 150px;
            padding: 15px;
            border: 2px solid green;
        }

        .card-footer {
            height: 40px;
            background: #f8f9fa;
            border-top: 1px solid #dee2e6;
            border-radius: 0 0 8px 8px;
            border: 2px solid orange;
        }
    </style>
</head>
<body>
    <!-- JERARQUÍA: body > container > card -->
    <div class="container">    <!-- 1. Container padre que centra -->
        <div class="card">      <!-- 2. Card hija centrada -->
            <div class="card-header"></div>  <!-- 3. Nietos -->
            <div class="card-body"></div>
            <div class="card-footer"></div>
        </div>
    </div>
</body>
</html>

📐 Jerarquía y responsabilidades:

text
body (fondo gris, sin posicionamiento)
│
└── container (FLEX: centra todo su contenido)
    │
    └── card (estructura interna, NO flex)
        │
        ├── card-header (parte superior)
        ├── card-body (contenido principal)
        └── card-footer (parte inferior)

🎯 Ventajas de esta estructura:

  1. Body más limpio: Solo define fondo y fuente

  2. Container reutilizable: Puedes tener múltiples containers en la página

  3. Card independiente: La card no sabe que está centrada, solo es un bloque

  4. Flexible para añadir más elementos:

html
<body>
    <div class="container">   <!-- Centra la primera card -->
        <div class="card">...</div>
    </div>
    
    <div class="container">   <!-- Centra la segunda card -->
        <div class="card">...</div>
    </div>
    
    <!-- O varias cards en un mismo container -->
    <div class="container" style="gap: 20px;">
        <div class="card">...</div>
        <div class="card">...</div>
        <div class="card">...</div>
    </div>
</body>

¡Así tienes una jerarquía clara y cada elemento hace una sola cosa!

Jerarquía Padre, Hijo y Nieto en tu Card

text
<body>                          ← ABUELO (fondo, fuente)
│   (le da estilo al fondo)
│
└── <div class="container">      ← PADRE (flex)
    │   (centra a sus hijos)
    │   display: flex
    │   justify-content: center
    │   align-items: center
    │
    └── <div class="card">       ← HIJO (estructura)
        │   (hereda la posición del padre)
        │   width: 300px
        │   background: white
        │
        ├── <div class="card-header">  ← NIETO 1
        │   (parte de arriba)
        │   height: 40px
        │
        ├── <div class="card-body">    ← NIETO 2
        │   (contenido principal)
        │   min-height: 150px
        │
        └── <div class="card-footer">  ← NIETO 3
            (parte de abajo)
            height: 40px

📊 Responsabilidades por nivel:

ABUELO (<body>)

css
body {
    background: #f0f0f0;    /* Da el fondo a toda la página */
    font-family: Arial;      /* Define la fuente para todos */
    min-height: 100vh;       /* Ocupa todo el alto */
    /* NO centra nada, solo prepara el terreno */
}

PADRE (.container)

css
.container {
    display: flex;           /* ACTIVA FLEX - SOLO AQUÍ */
    justify-content: center; /* Centra al HIJO horizontalmente */
    align-items: center;     /* Centra al HIJO verticalmente */
    min-height: 100vh;       /* Para ocupar todo el alto */
    /* RESPONSABILIDAD: Centrar a sus HIJOS */
}

HIJO (.card)

css
.card {
    width: 300px;           /* Tamaño fijo */
    background: white;      /* Color de fondo */
    border-radius: 8px;     /* Bordes redondeados */
    box-shadow: 0 2px 4px rgba(0,0,0,0.1); /* Sombra */
    /* RESPONSABILIDAD: Ser la estructura principal */
    /* IGNORA que está centrado, solo es un bloque */
}

NIETOS (.card-header.card-body.card-footer)

css
.card-header {
    height: 40px;           /* Altura fija */
    background: #f8f9fa;    /* Color diferente */
    border-bottom: 1px solid #dee2e6; /* Separador */
    /* RESPONSABILIDAD: Ser partes de la card */
    /* IGNORAN todo lo demás, solo son secciones */
}

🔄 Flujo de la herencia:

text
PROPIEDADES QUE HEREDAN:
body (font-family: Arial)
    ↓
.container (hereda Arial)
    ↓
.card (hereda Arial)
    ↓
.header, .body, .footer (heredan Arial)

PROPIEDADES QUE NO HEREDAN:
.container (flex) → NO pasa a .card
.card (width) → NO pasa a los nietos

🎯 Regla de oro:

  • El PADRE (container) solo CENTRA

  • El HIJO (card) solo SE ESTRUCTURA

  • Los NIETOS solo SON PARTES

¡Así cada quien hace su trabajo y el código es más fácil de mantener!




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