layout-simple
Claro, aquí tienes exactamente el código de las imágenes sin mejoras ni cambios adicionales:
<!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
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:
[PANTALLA COMPLETA]
[ [Inicio][Ingreso][Usuarios][Salir] ]
(menú centrado al 50%)2. SECTION - Formulario de registro
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
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
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
/* 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 top, left, etc., no necesitas position.
2. Mezcla de métodos de centrado
/* 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:
/* 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
No uses position:relative si no lo necesitas - Es como llevar un paraguas cuando no llueve
Para centrar, elige UN método:
margin:0 auto → para cajas
text-align:center → para texto
flexbox → para todo lo demás
No mezcles margin:auto con left:X% - Se pelean entre ellos
Borra el CSS que no uses - Si no hay tabla, no hay CSS de tabla
Comentarios
Publicar un comentario