layout-simple

 Claro, aquí tienes exactamente el código de las imágenes sin mejoras ni cambios adicionales:

html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Template</title>
    <style>
        nav{
            position:relative;
            margin:auto;
            width:100%;
            height:auto;
            background:black;
        }
        
        nav ul{
            position:relative;
            margin:auto;
            width:50%;
            text-align: center;
        }
        
        nav ul li{
            display:inline-block;
            width:24%;
            line-height: 50px;
            list-style: none;
        }
        
        nav ul li a{
            color:white;
            text-decoration: none;
        }
        
        section{
            position: relative;
            margin: auto;
            width:400px;
        }
        
        section h1{
            position: relative;
            margin: auto;
        }

        section form input{
            display:inline-block;
            padding:10px;
            width:95%;
            margin:5px;
        }

        section form input[type="submit"]{
            position:relative;
            margin:20px auto;
            left:4.5%;
        }

        table{
            position:relative;
            margin:auto;
            width:100%;
            left:-10%;
        }

        table head tr th{
            padding:10px;
        }

        table tbody tr td{
            padding:10px;
        }
    </style>
</head>
<body>
    <nav>
        <ul>
            <li><a href="index.php">Registro</a></li>
            <li><a href="index.php?action=ingresar">Ingreso</a></li>
            <li><a href="index.php?action=usuarios">Usuarios</a></li>
            <li><a href="index.php?action=salir">Salir</a></li>
        </ul>
    </nav>
    
    <section>
        <h1>REGISTRO DE USUARIO</h1>
        <form method="post" action="">
            <input type="text" placeholder="Usuario" name="usuario" required>
            <input type="password" placeholder="Contraseña" name="password" required>
            <input type="email" placeholder="Email" name="email" required>
            <input type="submit" value="Enviar">
        </form>
    </section>
</body>
</html>

Vamos a analizar este layout paso a paso. Es un diseño funcional pero con algunos problemas que te explicaré para que los entiendas y sepas cómo mejorarlos.

Análisis del Layout

1. NAV - Barra de navegación

css
nav {
    position:relative;  /* No es necesario aquí, pero no hace daño */
    margin:auto;        /* No afecta porque width:100% */
    width:100%;         /* Ocupa todo el ancho */
    background:black;
}

nav ul {
    position:relative;
    margin:auto;        /* Intenta centrar, pero... */
    width:50%;          /* El menú ocupa la mitad de la pantalla */
    text-align: center;
}

nav ul li {
    display:inline-block;  /* Elementos en horizontal */
    width:24%;            /* 4 elementos * 24% = 96% (sobra 4%) */
    line-height: 50px;
    list-style: none;
}

📝 ¿Qué está pasando aquí?

  • El menú tiene 4 elementos que ocupan el 24% cada uno (total 96%)

  • El text-align:center del ul no afecta a los li porque tienen display:inline-block

  • El menú se ve centrado porque el ul ocupa el 50% de la pantalla y está centrado con margin:auto

🔍 Visualmente:

text
[PANTALLA COMPLETA]
[  [Inicio][Ingreso][Usuarios][Salir]  ]
         (menú centrado al 50%)

2. SECTION - Formulario de registro

css
section {
    position: relative;
    margin: auto;        /* Centra la sección */
    width:400px;         /* Ancho fijo de 400px */
}

section h1 {
    position: relative;
    margin: auto;        /* Centra el título dentro de la sección */
}

section form input {
    display:inline-block;
    padding:10px;
    width:95%;           /* Ocupa el 95% de la sección */
    margin:5px;          /* Margen entre inputs */
}

📝 ¿Qué está pasando?

  • La sección tiene 400px de ancho y está centrada

  • Los inputs ocupan el 95% de 400px = 380px

  • Pero tienen margin:5px y padding:10px... ¡Esto hace que se desborden!

⚠️ Problema:
Si haces cálculos: 380px (ancho) + 20px (padding) + 10px (margen) = 410px > 400px
Esto probablemente hace que los inputs se salgan de la sección.

3. BOTÓN DE ENVÍO - El más problemático

css
section form input[type="submit"] {
    position:relative;
    margin:20px auto;    /* Intentando centrar */
    left:4.5%;           /* ¡Empujándolo a la derecha! */
}

📝 ¿Qué está pasando?

  • El margin:20px auto intenta centrar el botón

  • Pero luego left:4.5% lo mueve a la derecha

  • Esto es como decir: "centrado... pero no del todo"

4. TABLE - La tabla fantasma

css
table {
    position:relative;
    margin:auto;        /* Centrada */
    width:100%;
    left:-10%;          /* ¡Desplazada 10% a la izquierda! */
}

📝 ¿Qué está pasando?

  • Hay una tabla definida en CSS... ¡pero no existe en el HTML!

  • Si en el futuro añades una tabla, estará centrada pero desplazada 10% a la izquierda


Problemas principales que encontré

1. Uso excesivo de position:relative

css
/* Está en casi todas partes pero no se necesita */
nav { position:relative; }        /* ❌ Innecesario */
nav ul { position:relative; }     /* ❌ Innecesario */
section { position:relative; }    /* ❌ Innecesario */

A menos que vayas a usar topleft, etc., no necesitas position.

2. Mezcla de métodos de centrado

css
/* Demasiadas formas de centrar a la vez */
margin:auto;
text-align:center;
left:4.5%;  /* ❌ Esto descentra */

3. La tabla no existe

Hay estilos para una tabla que no está en la página.


Versión mejorada con Flexbox

Aquí te muestro cómo haría yo este mismo layout, pero más limpio:

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

/* NAV - Barra de navegación */
nav {
    background: black;
    padding: 0 20px;
}

nav ul {
    display: flex;
    justify-content: center;     /* Centra los items */
    list-style: none;
    max-width: 600px;            /* Ancho máximo */
    margin: 0 auto;              /* Centra el menú */
    gap: 10px;                   /* Espacio entre items */
}

nav ul li {
    flex: 1;                     /* Todos los items iguales */
    text-align: center;
    line-height: 50px;
}

nav ul li a {
    color: white;
    text-decoration: none;
    display: block;              /* Toda el área clickable */
}

nav ul li a:hover {
    background: #333;            /* Efecto hover */
}

/* SECTION - Formulario */
section {
    max-width: 400px;
    margin: 40px auto;           /* Centrado con margen superior */
    padding: 20px;
    background: #f9f9f9;
    border-radius: 8px;
    box-shadow: 0 2px 4px rgba(0,0,0,0.1);
}

section h1 {
    text-align: center;
    margin-bottom: 20px;
    font-size: 24px;
}

section form {
    display: flex;
    flex-direction: column;
    gap: 10px;
}

section form input {
    padding: 10px;
    border: 1px solid #ddd;
    border-radius: 4px;
    font-size: 16px;
}

section form input[type="submit"] {
    background: black;
    color: white;
    border: none;
    padding: 12px;
    cursor: pointer;
    transition: background 0.3s;
}

section form input[type="submit"]:hover {
    background: #333;
}

/* Si necesitas la tabla después */
table {
    width: 100%;
    max-width: 600px;
    margin: 20px auto;
    border-collapse: collapse;
}

table th, table td {
    padding: 10px;
    border: 1px solid #ddd;
    text-align: center;
}

Consejos para recordar

  1. No uses position:relative si no lo necesitas - Es como llevar un paraguas cuando no llueve

  2. Para centrar, elige UN método:

    • margin:0 auto → para cajas

    • text-align:center → para texto

    • flexbox → para todo lo demás

  3. No mezcles margin:auto con left:X% - Se pelean entre ellos

  4. Borra el CSS que no uses - Si no hay tabla, no hay CSS de tabla

Comentarios

Entradas más populares de este blog

token

¿Qué es un token y cómo se utiliza en una API?

Generación de Credenciales API