html.html--css.html
PÁGINA 1: Inicio (html.html)
<!DOCTYPE html> <html lang="es"> <head> <meta charset="UTF-8"> <!-- Define codificación UTF-8 para soportar caracteres especiales como ñ o tildes --> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <!-- Hace la página responsive en móviles: escala 1:1 --> <title>Inicio · Tutoriales</title> <!-- Título que aparece en la pestaña del navegador --> <style> /* ============================================================ */ /* DOCUMENTACIÓN COMPLETA - CADA LÍNEA DE CSS EXPLICADA */ /* ============================================================ */ /* ---------- RESET UNIVERSAL ---------- */ * { margin: 0; /* Elimina el margen exterior por defecto de TODOS los elementos */ padding: 0; /* Elimina el relleno interior por defecto de TODOS los elementos */ box-sizing: border-box; /* Hace que el ancho/alto incluyan padding y borde, no solo el contenido */ /* Ej: un div con width:100px y padding:10px sigue midiendo 100px totales */ } /* ---------- CUERPO PRINCIPAL ---------- */ body { font-family: Arial, Helvetica, sans-serif; /* Fuente genérica limpia y legible en todos los sistemas */ height: 100vh; /* Altura total = 100% del viewport (ventana del navegador) */ display: flex; /* Activa Flexbox para organizar los elementos hijos */ flex-direction: column; /* Los hijos se apilan VERTICALMENTE (uno abajo del otro) */ } /* ===== MENÚ SUPERIOR (barra de navegación horizontal) ===== */ .menu-superior { background-color: #333; /* Fondo gris oscuro para destacar el menú */ } .menu-superior a { color: white; /* Texto blanco para contraste sobre fondo oscuro */ text-decoration: none; /* Elimina el subrayado predeterminado de los enlaces */ padding: 12px 15px; /* Espaciado interno: 12px arriba/abajo, 15px izquierda/derecha */ display: inline-block; /* Permite aplicar padding/margin pero mantiene disposición horizontal */ } .menu-superior a:hover { background-color: #555; /* Cambia a gris más claro al pasar el mouse (feedback visual) */ } .menu-superior a.activo { background-color: #007bff; /* Resalta la página actual con fondo azul */ } /* ===== CONTENEDOR CENTRADO (vertical y horizontal) ===== */ .contenedor-centrado { flex: 1; /* Ocupa TODO el espacio restante después del menú superior */ display: flex; /* Activa Flexbox dentro de este contenedor */ justify-content: center; /* Centra el contenido horizontalmente (izquierda-derecha) */ align-items: center; /* Centra el contenido verticalmente (arriba-abajo) */ text-align: center; /* Asegura que el texto dentro también esté centrado */ } /* Contenido interno con ancho limitado */ .contenido { max-width: 600px; /* Ancho máximo para no estirarse demasiado en pantallas grandes */ padding: 20px; /* Espacio interno alrededor del texto */ } /* Estilo del título principal */ h1 { margin-bottom: 20px; /* Separación inferior respecto al párrafo siguiente */ } /* Estilo del párrafo */ p { font-size: 18px; /* Tamaño de letra cómodo para lectura */ } /* ============================================================ */ /* RESUMEN DEL FUNCIONAMIENTO: */ /* - body con display:flex y flex-direction:column → estructura vertical */ /* - .menu-superior → barra fija arriba sin scroll */ /* - .contenedor-centrado con flex:1 → ocupa todo el espacio restante */ /* - justify-content:center + align-items:center → centrado perfecto */ /* ============================================================ */ </style> </head> <body> <!-- ===== BARRA DE NAVEGACIÓN SUPERIOR ===== --> <!-- Esta barra aparece en todas las páginas del sitio para navegar entre tutoriales --> <div class="menu-superior"> <a href="html.html" class="activo">Inicio</a> <!-- Enlace a página de inicio (página actual, por eso class="activo") --> <a href="js.html">JavaScript</a> <!-- Enlace a tutorial de JavaScript --> <a href="css.html">CSS</a> <!-- Enlace a tutorial de CSS --> </div> <!-- ===== CONTENIDO CENTRADO ===== --> <!-- Este bloque ocupa todo el espacio disponible y centra su contenido --> <div class="contenedor-centrado"> <div class="contenido"> <h1>Bienvenido a los Tutoriales</h1> <p>Selecciona un tema en el menú superior para comenzar.</p> </div> </div> <!-- NOTA: Esta página es la pantalla de inicio/presentación del sitio web --> </body> </html>
📄 PÁGINA 2: Tutorial de CSS (css.html)
<!DOCTYPE html> <html lang="es"> <head> <meta charset="UTF-8"> <!-- Codificación UTF-8 para caracteres especiales --> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <!-- Responsive design básico --> <title>CSS · Tutorial</title> <!-- Título de la página (aparece en pestaña) --> <style> /* ============================================================ */ /* DOCUMENTACIÓN COMPLETA - CADA LÍNEA DE CSS EXPLICADA */ /* ============================================================ */ /* ---------- RESET UNIVERSAL ---------- */ * { margin: 0; /* Elimina márgenes por defecto de todos los elementos */ padding: 0; /* Elimina paddings por defecto de todos los elementos */ box-sizing: border-box; /* El width/height incluye padding y borde en el cálculo */ } /* ---------- CUERPO PRINCIPAL ---------- */ body { font-family: Arial, Helvetica, sans-serif; /* Fuente limpia y universal */ height: 100vh; /* Altura total = 100% del viewport */ display: flex; /* Activa Flexbox en el body */ flex-direction: column; /* Apila elementos verticalmente (menú arriba, luego el resto) */ } /* ===== MENÚ SUPERIOR ===== */ .menu-superior { background-color: #333; /* Fondo oscuro para el menú principal */ } .menu-superior a { color: white; /* Texto blanco para contraste */ text-decoration: none; /* Sin subrayado en los enlaces */ padding: 12px 15px; /* Espaciado interno cómodo para hacer clic */ display: inline-block; /* Enlaces en línea horizontal pero con padding respetado */ } .menu-superior a:hover { background-color: #555; /* Oscurece el fondo al pasar el mouse (efecto hover) */ } .menu-superior a.activo { background-color: #007bff; /* Fondo azul para indicar en qué página estamos */ } /* ===== CONTENEDOR FLEX PRINCIPAL (menú lateral + contenido) ===== */ .contenedor-flex { display: flex; /* Divide en dos columnas: menú lateral | contenido */ flex: 1; /* Ocupa todo el espacio restante después del menú superior */ min-height: 0; /* CRUCIAL: permite que el contenido con overflow funcione correctamente */ /* Sin esto, el contenido grande rompe el diseño Flex */ } /* ===== MENÚ LATERAL ===== */ .menu-lateral { width: 200px; /* Ancho fijo para el menú de navegación lateral */ background-color: #f5f5f5; /* Fondo gris muy claro para diferenciar del contenido */ padding: 15px; /* Espacio interno alrededor de los enlaces */ overflow-y: auto; /* Scroll vertical propio si hay muchos temas (independiente) */ border-right: 1px solid #ddd; /* Línea divisoria sutil entre menú y contenido */ } .menu-lateral h3 { margin-bottom: 15px; /* Separación entre el título "Temas de CSS" y los enlaces */ color: #007bff; /* Color azul para destacar el título del menú */ } .menu-lateral a { display: block; /* Cada enlace ocupa toda la línea (apilados verticalmente) */ padding: 8px 0; /* Espaciado vertical: 8px arriba/abajo, 0 izquierda/derecha */ color: #333; /* Color gris oscuro para el texto */ text-decoration: none; /* Elimina subrayado de los enlaces */ } .menu-lateral a:hover { color: #007bff; /* Cambia a azul al pasar el mouse (feedback visual) */ } /* ===== ZONA DE CONTENIDO (donde ocurre el scroll suave) ===== */ .contenedor-centrado { flex: 1; /* Ocupa todo el espacio restante a la derecha del menú lateral */ padding: 20px; /* Espacio interno alrededor del contenido */ overflow-y: auto; /* Scroll vertical INTERNO (el contenido se desplaza aquí) */ scroll-behavior: smooth; /* ¡CLAVE! Hace que la navegación por anclas sea suave y animada */ } /* Contenido interno con ancho limitado para mejor legibilidad */ .contenido { max-width: 800px; /* Ancho máximo para que las líneas de texto no sean demasiado largas */ margin: 0 auto; /* Centra el contenido horizontalmente dentro del contenedor */ } /* ===== ESTILOS TIPOGRÁFICOS PARA EL CONTENIDO ===== */ h1 { margin-bottom: 20px; /* Separación debajo del título principal */ } h2 { margin-top: 30px; /* Espacio superior grande para separar secciones */ margin-bottom: 10px; /* Espacio inferior antes del contenido */ border-bottom: 2px solid #007bff; /* Línea azul debajo de cada título de sección */ padding-bottom: 5px; /* Espacio entre el texto y la línea inferior */ } /* Bloques de código preformateados */ pre { background-color: #f4f4f4; /* Fondo gris claro para destacar el código */ padding: 10px; /* Espacio interno alrededor del código */ overflow-x: auto; /* Scroll horizontal si el código es muy ancho */ margin: 15px 0; /* Separación vertical con otros elementos */ font-family: monospace; /* Fuente monoespaciada para código */ } /* Código en línea (dentro de párrafos) */ code { background-color: #f4f4f4; /* Mismo fondo gris claro que pre */ padding: 2px 5px; /* Relleno pequeño alrededor del código */ } /* ============================================================ */ /* RESUMEN DEL FUNCIONAMIENTO: */ /* 1. Menú superior fijo arriba (navegación entre páginas) */ /* 2. Menú lateral izquierdo con anclas (#ids) */ /* 3. Zona de contenido con scroll-behavior: smooth */ /* 4. Al hacer clic en enlace del menú lateral: */ /* - El navegador busca el elemento con el ID correspondiente */ /* - El scroll ocurre DENTRO de .contenedor-centrado */ /* - El menú lateral NO se mueve (está fuera del scroll) */ /* ============================================================ */ </style> </head> <body> <!-- ===== MENÚ SUPERIOR (navegación entre páginas) ===== --> <div class="menu-superior"> <a href="html.html">Inicio</a> <!-- Enlace a la página de inicio --> <a href="js.html">JavaScript</a> <!-- Enlace a tutorial de JavaScript --> <a href="css.html" class="activo">CSS</a> <!-- Página actual, resaltada con class="activo" --> </div> <!-- ===== CONTENEDOR FLEX: menú lateral + contenido ===== --> <div class="contenedor-flex"> <!-- MENÚ LATERAL: contiene los enlaces de navegación interna (anclas) --> <div class="menu-lateral"> <h3>Temas de CSS</h3> <!-- Cada enlace apunta a un ID dentro del contenido usando href="#nombre" --> <a href="#css-intro">🎨 Introducción</a> <a href="#css-selectores">🔍 Selectores</a> <a href="#css-colores">🌈 Colores</a> <a href="#css-modelo-caja">📦 Modelo de Caja</a> <a href="#css-flexbox">🧩 Flexbox</a> <a href="#css-grid">📐 Grid</a> </div> <!-- ZONA DE CONTENIDO: aquí se muestra el texto del tutorial --> <!-- El scroll ocurre DENTRO de este contenedor gracias a overflow-y:auto --> <!-- La navegación por anclas es suave gracias a scroll-behavior:smooth --> <div class="contenedor-centrado"> <div class="contenido"> <h1>Tutorial de CSS</h1> <!-- Cada sección tiene un ID único que coincide con los href del menú lateral --> <h2 id="css-intro">Introducción a CSS</h2> <p>CSS (Cascading Style Sheets) es el lenguaje que usamos para dar estilo a las páginas web.</p> <p>Define colores, fuentes, disposición y diseño responsive.</p> <h2 id="css-selectores">Selectores CSS</h2> <pre>/* Selector de elemento */ p { color: blue; } /* Selector de clase */ .mi-clase { font-weight: bold; } /* Selector de ID */ #encabezado { background: #eee; }</pre> <h2 id="css-colores">Colores y Fondos</h2> <pre>body { background-color: #f0f0f0; color: rgb(50, 50, 80); }</pre> <h2 id="css-modelo-caja">Modelo de Caja</h2> <pre>.caja { width: 300px; padding: 20px; border: 2px solid #333; margin: 15px; }</pre> <h2 id="css-flexbox">Flexbox</h2> <pre>.contenedor { display: flex; justify-content: space-between; align-items: center; }</pre> <h2 id="css-grid">CSS Grid</h2> <pre>.grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; }</pre> </div> </div> </div> <!-- NOTA TÉCNICA: - No se necesita JavaScript para la navegación por anclas - El navegador maneja automáticamente el scroll hacia los IDs - scroll-behavior: smooth añade la animación - El menú lateral permanece estático porque NO está dentro del contenedor con overflow --> </body> </html>
📖 EXPLICACIÓN DETALLADA DE CÓMO FUNCIONA
Arquitectura de las dos páginas
PÁGINA DE INICIO (html.html) PÁGINA DE CSS (css.html)
┌─────────────────────────┐ ┌─────────────────────────┐
│ MENÚ SUPERIOR │ │ MENÚ SUPERIOR │
├─────────────────────────┤ ├─────────────────────────┤
│ │ │ ┌──────┬──────────────┐ │
│ CONTENIDO CENTRADO │ │ │MENÚ │ CONTENIDO │ │
│ │ │ │LATERAL│ CON SCROLL │ │
│ "Bienvenido..." │ │ │ │ │ │
│ │ │ │• Intro│ Tutorial │ │
└─────────────────────────┘ │ • Sel.│ de CSS │ │
└──────┴──────────────┘ ┘Comparativa de las dos páginas
| Característica | Página Inicio (html.html) | Página CSS (css.html) |
|---|---|---|
| Layout | Centrado simple | Dos columnas (menú lateral + contenido) |
| Navegación | Solo menú superior | Menú superior + menú lateral |
| Scroll | No hay scroll (contenido pequeño) | Scroll interno en zona de contenido |
| Propósito | Pantalla de bienvenida | Tutorial extenso con varias secciones |
Mecanismo de navegación por anclas (en css.html)
// No hay código JavaScript, esto lo hace el navegador automáticamente: // 1. Usuario hace clic en: <a href="#css-intro"> // 2. Navegador busca: <h2 id="css-intro"> // 3. Navegador desplaza el scroll hasta ese elemento // 4. scroll-behavior: smooth → animación suave
🧠 CÓMO APRENDER Y MEMORIZAR ESTA TÉCNICA
1. Divide y vencerás: 3 capas de conocimiento
🟢 Capa 1: Layout básico con Flexbox
/* Fórmula para body con menú arriba y contenido abajo */ body { display: flex; flex-direction: column; height: 100vh; } .menu-superior { /* altura automática */ } .contenedor-centrado { flex: 1; } /* ocupa el resto */
🟡 Capa 2: Layout de dos columnas
/* Fórmula para menú lateral + contenido */ .contenedor-flex { display: flex; flex: 1; min-height: 0; /* ¡NUNCA OLVIDES ESTO! */ } .menu-lateral { width: 200px; } .contenedor-centrado { flex: 1; overflow-y: auto; }
🔴 Capa 3: Navegación por anclas
/* En el CSS */ .contenedor-centrado { overflow-y: auto; scroll-behavior: smooth; /* ¡la magia! */ } /* En el HTML */ <a href="#mi-seccion">Ir</a> <h2 id="mi-seccion">Sección</h2>
2. Reglas mnemotécnicas (acrónimos fáciles)
Para la página de inicio: "V-F-C"
Vertical (flex-direction: column)
Flex: 1 (ocupa espacio restante)
Centrado (justify-content + align-items: center)
"V-F-C: Voy Flex Centrado"
Para la página de CSS: "D-M-S"
Dos columnas (display: flex en .contenedor-flex)
Min-height: 0 (permite scroll interno)
Smooth scroll (scroll-behavior: smooth)
"D-M-S: Dos Menús con Smooth"
Para las anclas: "I-A"
ID en el destino
Ancla en el origen (href="#mismo-id")
"I-A: ID y Ancla van juntos"
3. Ejercicios prácticos para memorizar
📝 Ejercicio 1 (5 minutos) - Copia selectiva
Escribe SOLO las partes clave de cada página:
<!-- Estructura mínima de inicio --> <body style="display:flex; flex-direction:column; height:100vh"> <div style="background:#333">Menú</div> <div style="flex:1; display:flex; justify-content:center; align-items:center"> Contenido centrado </div> </body>
<!-- Estructura mínima de CSS tutorial --> <body style="display:flex; flex-direction:column; height:100vh"> <div>Menú superior</div> <div style="display:flex; flex:1; min-height:0"> <div style="width:200px">Menú lateral</div> <div style="flex:1; overflow-y:auto; scroll-behavior:smooth"> <h2 id="sec1">Sección</h2> </div> </div> </body>
🎯 Ejercicio 2 (10 minutos) - Construye de memoria
Sin mirar el código original, crea:
Una página de inicio con menú superior y texto centrado
Una página de tutorial con menú lateral y 3 secciones
Conecta ambas páginas con enlaces funcionales
🗣️ Ejercicio 3 (5 minutos) - Explicación en voz alta
Grābate explicando (como si enseñaras a alguien):
"El body tiene
height: 100vhydisplay: flexpara ocupar toda la pantalla""
flex-direction: columnapila los elementos verticalmente""
flex: 1en el contenedor centrado hace que ocupe el espacio restante""
min-height: 0es necesario para que el scroll funcione dentro de Flexbox"
4. Analogías para recordar siempre
Analogía de la página de inicio
Imagina una pantalla de cine en blanco (body con 100vh).
El menú superior es como el marco superior de la pantalla.
El texto centrado es como los títulos de crédito que aparecen justo en el medio.
Analogía de la página de CSS
Imagina un libro de recetas abierto:
La página izquierda (menú lateral) tiene el índice de recetas
La página derecha (contenedor-centrado) tiene la receta completa
Cuando tocas un nombre en el índice, la página derecha se desliza suavemente a esa receta
El índice nunca se mueve (está pegado)
5. Errores comunes que debes memorizar para evitarlos
| ❌ Error | ✅ Solución correcta |
|---|---|
Olvidar min-height: 0 en el padre flex | Siemponerlo en .contenedor-flex { min-height: 0; } |
Poner scroll-behavior: smooth en el body | Ponerlo en el contenedor con overflow-y: auto |
Usar id duplicados | Cada id debe ser ÚNICO en la página |
Olvidar box-sizing: border-box | Ponerlo en el reset universal * |
Poner height: 100% en lugar de 100vh | Usar 100vh para altura total de pantalla |
6. Checklist de verificación rápida
Para página de inicio:
¿
bodytieneheight: 100vhydisplay: flex?¿
flex-direction: columnestá presente?¿El contenedor centrado tiene
flex: 1?¿Tiene
justify-content: centeryalign-items: center?
Para página de tutorial:
¿
.contenedor-flextienedisplay: flexymin-height: 0?¿
.contenedor-centradotieneoverflow-y: autoyscroll-behavior: smooth?¿Cada
<h2>tiene unidúnico?¿Cada
<a>del menú lateral tienehref="#mismo-id"?
7. Resumen final en 3 líneas (para memorizar)
/* INICIO: cuerpo vertical + centrado */ body { display: flex; flex-direction: column; height: 100vh; } .contenedor-centrado { flex: 1; display: flex; justify-content: center; align-items: center; } /* TUTORIAL: dos columnas + scroll suave */ .contenedor-flex { display: flex; flex: 1; min-height: 0; } .contenedor-centrado { flex: 1; overflow-y: auto; scroll-behavior: smooth; }
🎓 Plan de estudio para dominarlo en 3 días
| Día | Actividad | Tiempo |
|---|---|---|
| Día 1 | Copia el código de ambas páginas, modifica colores y texto | 20 min |
| Día 2 | Reconstruye de memoria sin mirar, luego compáralo | 15 min |
| Día 3 | Crea una página nueva (ej: tutorial de HTML) con la misma estructura | 20 min |
¡La clave es la práctica diaria y la explicación en voz alta!

Comentarios
Publicar un comentario