ejer2
📄 MÓDULO 1: Formulario de Ingreso Secretaria
<!DOCTYPE html> <html lang="es"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Ingreso Secretaria</title> <style> /* ============================================================ */ /* DOCUMENTACIÓN COMPLETA - CADA LÍNEA DE CSS EXPLICADA */ /* ============================================================ */ /* ===== CONTENEDOR PRINCIPAL (centra la tarjeta en pantalla) ===== */ .cont-secre { padding-top: 10px; /* Espacio superior de 10px antes de la tarjeta */ border: 1px solid red; /* Borde rojo (útil para depuración/ver límites) */ display: flex; /* Activa Flexbox para centrar horizontalmente */ justify-content: center; /* Centra el contenido hijo (.card-secre) horizontalmente */ } /* ===== TARJETA PRINCIPAL (card) ===== */ .card-secre { border: 1px solid #ddd; /* Borde gris claro alrededor de toda la tarjeta */ background-color: white; /* Fondo blanco para la tarjeta */ display: flex; /* Activa Flexbox para organizar el contenido interno */ flex-direction: column; /* Apila los elementos VERTICALMENTE: header → body → footer */ border-radius: 8px; /* Bordes redondeados (esquinas suaves) */ box-shadow: 0 4px 8px rgba(0,0,0,0.1); /* Sombra sutil: 0px horizontal, 4px vertical, 8px difuminado */ /* rgba(0,0,0,0.1) = negro con 10% de opacidad */ } /* ===== ENCABEZADO DE LA TARJETA ===== */ .secre-header { background-color: #f8f9fa; /* Fondo gris muy claro para diferenciar el encabezado */ border-bottom: 1px solid #dee2e6; /* Línea divisoria gris debajo del encabezado */ padding: 20px; /* Espacio interno de 20px en todos los lados */ text-align: center; /* Centra el texto horizontalmente */ border-radius: 8px 8px 0 0; /* Bordes redondeados SOLO arriba: arriba-izq, arriba-der, abajo-izq, abajo-der */ /* Así el encabezado se funde con el borde redondeado de la tarjeta */ } /* ===== CUERPO DE LA TARJETA (contiene el formulario) ===== */ .secre-body { padding: 30px 20px; /* Relleno: 30px arriba/abajo, 20px izquierda/derecha */ text-align: center; /* Centra el texto horizontalmente */ } /* ===== PIE DE LA TARJETA (contiene el enlace "Volver") ===== */ .secre-footer { padding: 20px; /* Espacio interno de 20px en todos los lados */ border-top: 1px solid #dee2e6; /* Línea divisoria gris encima del pie */ text-align: center; /* Centra el contenido horizontalmente */ } /* ===== CONTENEDOR DE CADA CAMPO DEL FORMULARIO ===== */ .form-group { margin-bottom: 20px; /* Separación inferior de 20px entre campos */ text-align: left; /* Alinea las etiquetas y campos a la izquierda */ } /* Estilo de las etiquetas (labels) de los campos */ .form-group label { display: block; /* La etiqueta ocupa toda la línea (apila arriba del input) */ margin-bottom: 8px; /* Separación inferior entre la etiqueta y el input */ font-weight: bold; /* Texto en negrita para destacar */ color: #333; /* Color gris oscuro (casi negro) */ } /* Estilo de los campos de entrada (input) */ .form-group input { width: 100%; /* El input ocupa el 100% del ancho disponible */ padding: 10px; /* Espacio interno para hacer el campo más cómodo */ border: 1px solid #ddd; /* Borde gris claro por defecto */ border-radius: 4px; /* Bordes ligeramente redondeados */ font-size: 14px; /* Tamaño de fuente estándar */ box-sizing: border-box; /* Incluye padding y borde en el width:100% */ /* Sin esto, el input sería más ancho que su contenedor */ } /* Efecto visual cuando el usuario hace clic en un campo (focus) */ .form-group input:focus { outline: none; /* Elimina el borde azul predeterminado del navegador */ border-color: #007bff; /* Cambia el borde a azul cuando el campo está activo */ } /* ===== BOTÓN DE INGRESO ===== */ .btn-ingreso { background-color: #007bff; /* Fondo azul (color corporativo de Bootstrap) */ color: white; /* Texto blanco para contraste */ border: none; /* Sin borde (el color de fondo ya define el botón) */ padding: 12px 30px; /* Relleno: 12px arriba/abajo, 30px izquierda/derecha */ border-radius: 4px; /* Bordes ligeramente redondeados */ cursor: pointer; /* Cambia el cursor a "mano" al pasar sobre el botón */ font-size: 16px; /* Tamaño de fuente ligeramente mayor */ width: 100%; /* El botón ocupa todo el ancho disponible */ } /* Efecto hover (cuando el mouse pasa por encima) */ .btn-ingreso:hover { background-color: #0056b3; /* Oscurece el azul para feedback visual */ } /* ===== TÍTULO DEL ENCABEZADO ===== */ .secre-header h1 { margin: 0; /* Elimina el margen por defecto del h1 */ font-size: 24px; /* Tamaño de fuente específico */ color: #333; /* Color gris oscuro */ } /* ===== PÁRRAFO DEL CUERPO ===== */ .secre-body p { color: #666; /* Color gris más claro para texto secundario */ margin-bottom: 20px; /* Separación inferior antes del formulario */ } /* ============================================================ */ /* RESUMEN DEL FUNCIONAMIENTO: */ /* - .cont-secre: contenedor flex que centra la tarjeta */ /* - .card-secre: tarjeta blanca con sombra y bordes redondeados */ /* - Flexbox layout vertical: header → body → footer */ /* - Formulario con campos estilizados y botón de envío */ /* - El formulario envía datos a "ingresoSecretaria.php" */ /* ============================================================ */ </style> </head> <body> <!-- CONTENEDOR PRINCIPAL: centra toda la tarjeta en la pantalla --> <div class="cont-secre"> <!-- TARJETA PRINCIPAL: contiene todo el formulario --> <div class="card-secre"> <!-- ENCABEZADO: título de la sección --> <div class="secre-header"> <h1>INGRESO SECRETARIA</h1> </div> <!-- CUERPO: formulario de ingreso --> <div class="secre-body"> <p>Ingrese sus credenciales</p> <!-- Formulario que envía datos a ingresoSecretaria.php mediante método POST --> <form action="ingresoSecretaria.php" method="POST"> <!-- Campo de usuario --> <div class="form-group"> <label for="usuario">Usuario:</label> <input type="text" id="usuario" name="usuario" required> <!-- required: el navegador exige que se complete este campo --> </div> <!-- Campo de contraseña --> <div class="form-group"> <label for="password">Contraseña:</label> <input type="password" id="password" name="password" required> <!-- type="password" oculta los caracteres escritos --> </div> <!-- Botón de envío --> <button type="submit" class="btn-ingreso">Ingresar</button> </form> </div> <!-- PIE: enlace para volver al inicio --> <div class="secre-footer"> <a href="index.php">Volver al inicio</a> </div> </div> </div> </body> </html>
📄 MÓDULO 2: Menú de Selección
<!DOCTYPE html> <html lang="es"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Seleccionar · Menú Principal</title> <style> /* ============================================================ */ /* DOCUMENTACIÓN COMPLETA - CADA LÍNEA DE CSS EXPLICADA */ /* ============================================================ */ /* ===== CONTENEDOR PRINCIPAL (centra la tarjeta) ===== */ .cont-selec { padding-top: 10px; /* Espacio superior de 10px antes de la tarjeta */ border: 1px solid red; /* Borde rojo (útil para depuración/ver límites) */ display: flex; /* Activa Flexbox para centrar horizontalmente */ justify-content: center; /* Centra el contenido hijo (.card-selec) horizontalmente */ } /* ===== TARJETA PRINCIPAL ===== */ .card-selec { border: 5px solid green; /* Borde verde de 5px de grosor (más grueso que la otra tarjeta) */ /* Esto la hace visualmente diferente */ background-color: white; /* Fondo blanco para la tarjeta */ display: flex; /* Activa Flexbox para organización interna */ flex-direction: column; /* Apila elementos verticalmente: header → body → footer */ border-radius: 8px; /* Bordes redondeados de 8px */ } /* ===== ENCABEZADO DE LA TARJETA ===== */ .selec-header { background-color: #f8f9fa; /* Fondo gris muy claro */ border-bottom: 1px slid #dee2e6; /* ¡ERROR TYPO! "slid" debería ser "solid" */ /* Como está mal escrito, NO se aplica la línea inferior */ /* En una corrección sería: border-bottom: 1px solid #dee2e6; */ } /* ===== CUERPO DE LA TARJETA ===== */ .selec-body { text-align: center; /* Centra el texto horizontalmente */ /* NOTA: No tiene padding, el texto queda pegado a los bordes */ } /* ===== PIE DE LA TARJETA (contiene el botón) ===== */ .selec-footer { padding: 20px 20px 0 20px; /* Relleno: 20px arriba, 20px derecha, 0px abajo, 20px izquierda */ /* Abajo tiene 0px para que no haya espacio extra después del botón */ } /* ===== NOTA SOBRE ESTILOS FALTANTES ===== */ /* Este módulo NO tiene estilos para: */ /* - Título h1 (usa estilos del navegador por defecto) */ /* - Párrafo p (usa estilos del navegador por defecto) */ /* - Botón (usa estilos del navegador por defecto) */ /* - Enlaces (usa estilos del navegador por defecto) */ /* */ /* Para mejor apariencia, se recomienda añadir: */ /* .selec-header h1 { margin: 15px; font-size: 24px; } */ /* .selec-body p { color: #666; padding: 20px; } */ /* button { background-color: #007bff; color: white; ... } */ /* ============================================================ */ </style> </head> <body> <!-- CONTENEDOR PRINCIPAL: centra la tarjeta horizontalmente --> <div class="cont-selec"> <!-- TARJETA PRINCIPAL --> <div class="card-selec"> <!-- ENCABEZADO: título de selección --> <div class="selec-header"> <h1>SELECCIONAR</h1> <!-- NOTA: Este h1 usa los estilos por defecto del navegador --> </div> <!-- CUERPO: mensaje de bienvenida --> <div class="selec-body"> <p>Bienvenido al menú principal</p> <!-- NOTA: Este párrafo usa los estilos por defecto del navegador --> </div> <!-- PIE: botón para navegar a otra página --> <div class="selec-footer"> <!-- Enlace que envuelve un botón --> <a href="index.php?action=ingresoS"> <button>Ir a otra página</button> <!-- NOTA: Este botón usa los estilos por defecto del navegador --> </a> </div> </div> </div> </body> </html>
📖 EXPLICACIÓN DETALLADA DE CÓMO FUNCIONAN
Comparativa de los dos módulos
| Característica | Módulo 1: Ingreso Secretaria | Módulo 2: Selección |
|---|---|---|
| Propósito | Formulario de autenticación | Menú de navegación simple |
| Estructura | Header + Body + Footer | Header + Body + Footer |
| Contenido Body | Formulario (2 campos + botón) | Texto de bienvenida |
| Contenido Footer | Enlace "Volver al inicio" | Botón "Ir a otra página" |
| Estilos | Completos y detallados | Mínimos (casi por defecto) |
| Borde tarjeta | 1px sólido gris (#ddd) | 5px sólido verde |
| Sombra | Sí (box-shadow) | No |
| Interactividad | Hover en botón, focus en inputs | Sin estilos interactivos |
Arquitectura visual de cada módulo
MÓDULO 1 (Ingreso) MÓDULO 2 (Selección) ┌─────────────────────────┐ ┌─────────────────────────┐ │ ┌───────────────────┐ │ │ ┌───────────────────┐ │ │ │ HEADER │ │ │ │ HEADER │ │ │ │ "INGRESO SECRETARIA"│ │ │ "SELECCIONAR" │ │ │ └───────────────────┘ │ │ └───────────────────┘ │ │ ┌───────────────────┐ │ │ ┌───────────────────┐ │ │ │ BODY │ │ │ │ BODY │ │ │ │ • Texto instruc. │ │ │ │ "Bienvenido..." │ │ │ │ • Campo Usuario │ │ │ └───────────────────┘ │ │ │ • Campo Password │ │ │ ┌───────────────────┐ │ │ │ • Botón Ingresar │ │ │ │ FOOTER │ │ │ └───────────────────┘ │ │ │ [Botón] │ │ │ ┌───────────────────┐ │ │ └───────────────────┘ │ │ │ FOOTER │ │ └─────────────────────────┘ │ │ "Volver al inicio"│ │ │ └───────────────────┘ │ └─────────────────────────┘
🧠 CÓMO APRENDER Y MEMORIZAR ESTA TÉCNICA
1. Patrón común: Tarjeta (Card) con Flexbox vertical
Ambos módulos siguen el mismo PATRÓN DE DISEÑO:
/* PLANTILLA DE TARJETA REUTILIZABLE */ .contenedor-externo { display: flex; /* Para centrar */ justify-content: center; /* Centrado horizontal */ } .tarjeta { display: flex; /* Para organización interna */ flex-direction: column; /* Apilar verticalmente */ background-color: white; border-radius: 8px; } .header { /* estilos del encabezado */ } .body { /* estilos del cuerpo */ } .footer { /* estilos del pie */ }
Regla mnemotécnica: "C-T-H-B-F"
Contenedor (centra)
Tarjeta (el rectángulo blanco)
Header (título)
Body (contenido principal)
Footer (acciones al final)
2. Propiedades clave que debes memorizar
| Propiedad | Valor | Qué hace | Cuándo usarla |
|---|---|---|---|
display: flex | - | Activa Flexbox | En cualquier contenedor que quieras alinear |
justify-content | center | Centra horizontalmente | Para centrar tarjetas o elementos |
flex-direction | column | Apila verticalmente | Para organizar header/body/footer |
box-shadow | 0 4px 8px rgba(0,0,0,0.1) | Añade profundidad | Para que la tarjeta "flote" |
border-radius | 8px | Esquinas redondeadas | Para diseño moderno y amigable |
box-sizing: border-box | - | Incluye padding en width | ¡Siempre en inputs para que quepan! |
3. Analogías para recordar
Analogía de la tarjeta postal
Imagina una tarjeta postal:
El sobre (
.cont-secre) es lo que la contiene y la centraLa tarjeta en sí (
.card-secre) tiene borde y fondo blancoLa parte superior (
.secre-header) tiene el título como el encabezado de una cartaEl cuerpo (
.secre-body) es donde escribes el mensaje (o formulario)El pie (
.secre-footer) es donde pones la despedida o acciones
Analogía del edificio
.cont-secre= el terreno donde se construye
.card-secre= el edificio (estructura principal)
flex-direction: column= los pisos (uno arriba del otro)
header= recepcion (primer piso)
body= oficinas (segundo piso - contenido)
footer= estacionamiento (último piso - acciones)
4. Ejercicios prácticos para memorizar
📝 Ejercicio 1 (5 min) - Crea una tarjeta desde cero
Escribe SOLO la estructura mínima:
<style> .container { display: flex; justify-content: center; } .card { display: flex; flex-direction: column; border: 1px solid #ddd; border-radius: 8px; } .header { padding: 20px; background: #f8f9fa; } .body { padding: 30px; } .footer { padding: 20px; border-top: 1px solid #ddd; text-align: center; } </style> <div class="container"> <div class="card"> <div class="header">Título</div> <div class="body">Contenido</div> <div class="footer">Acciones</div> </div> </div>
🎯 Ejercicio 2 (10 min) - Mejora el Módulo 2
El Módulo 2 tiene estilos incompletos. Complétalo:
/* Agrega estos estilos al Módulo 2 */ .selec-header h1 { margin: 15px 0; font-size: 24px; text-align: center; } .selec-body p { padding: 20px; color: #666; } .selec-footer button { background-color: #28a745; /* Verde en lugar de azul */ color: white; border: none; padding: 12px 30px; border-radius: 4px; cursor: pointer; font-size: 16px; width: 100%; } .selec-footer button:hover { background-color: #218838; }
🔄 Ejercicio 3 (15 min) - Crea un tercer módulo
Crea una "Tarjeta de Perfil de Usuario" con:
Header: foto de perfil y nombre
Body: datos de contacto (email, teléfono)
Footer: botones "Editar" y "Eliminar"
5. Errores comunes que debes memorizar
| ❌ Error | ✅ Solución | ¿Por qué pasa? |
|---|---|---|
Olvidar box-sizing: border-box en inputs | Añadirlo al input o al reset universal * | El width:100% no incluye padding por defecto |
Poner border: 1px slid (typo) | border: 1px solid | "slid" no es una palabra clave válida |
No poner justify-content: center | Añadirlo al contenedor flex | Los hijos se quedan a la izquierda |
Usar <a><button></button></a> | Usar solo <button> o estilizar el <a> como botón | El botón dentro de enlace es HTML inválido |
Olvidar cursor: pointer en botones | Añadirlo | El cursor no cambia a "mano" |
6. Diferencias clave entre módulos para recordar
| Elemento | Módulo 1 (Completo) | Módulo 2 (Simple) |
|---|---|---|
| Borde tarjeta | 1px solid #ddd (sutil) | 5px solid green (llamativo) |
| Sombra | Sí (box-shadow) | No |
| Padding en body | 30px 20px | Ninguno |
| Estilo de inputs | Sí (border, focus, padding) | No hay inputs |
| Estilo de botones | Sí (hover, colores) | No (usa estilo por defecto) |
7. Checklist de verificación rápida
Para crear una tarjeta correctamente:
¿El contenedor externo tiene
display: flexyjustify-content: center?¿La tarjeta tiene
display: flexyflex-direction: column?¿La tarjeta tiene
border-radiuspara esquinas redondeadas?¿Header, Body y Footer están en el orden correcto?
¿Los inputs tienen
box-sizing: border-box?¿Los botones tienen
cursor: pointery efecto:hover?
8. Resumen final en 4 líneas (para memorizar)
/* Contenedor centrador */ .container { display: flex; justify-content: center; } /* Tarjeta apilada */ .card { display: flex; flex-direction: column; border-radius: 8px; background: white; } /* Partes de la tarjeta */ .header { padding: 20px; background: #f8f9fa; } .body { padding: 30px 20px; } .footer { padding: 20px; border-top: 1px solid #ddd; text-align: center; }
🎓 Plan de estudio para dominar tarjetas en 3 días
| Día | Actividad | Tiempo |
|---|---|---|
| Día 1 | Copia el Módulo 1, modifica colores y texto | 15 min |
| Día 2 | Mejora el Módulo 2 (agrega los estilos faltantes) | 10 min |
| Día 3 | Crea una tarjeta nueva para "Registro de Usuario" | 15 min |
La clave está en reconocer el patrón: contenedor centrador → tarjeta apilada → header/body/footer


Comentarios
Publicar un comentario