Curso de programación GRATIS Modulo III: Desarrollo Web Parte I - HTML
HTML · M3 · Desarrollo Web
0%
Módulo 3 · HTML
✅ Módulos anteriores
🌐 Proyecto del módulo
Sitio web profesional completo
Completa HTML + CSS + JS para desbloquearlo
Módulo 3 · Desarrollo Web · HTML · 2026
HTML: el esqueleto de la web
Aprende a construir páginas web desde cero: estructura semántica, formularios interactivos, elementos multimedia y las bases del SEO para que tus páginas sean encontradas por Google.
4Lecciones
4Mini quizzes
1Proyecto web
∞Tu portafolio
🔖 Marcadores
Sin marcadores — usa el botón naranja en cualquier lección.
L1
Fundamentos
Estructura web: el esqueleto de toda página
HTML (HyperText Markup Language) es el lenguaje con el que se construye la estructura de toda página web. No es un lenguaje de programación — es un lenguaje de marcado: usas etiquetas (tags) para decirle al navegador qué es cada cosa. ¿Este texto es un título? ¿Este bloque es un párrafo? ¿Esto es un menú de navegación? HTML responde esas preguntas.
🏗️
Analogía: HTML es la estructura, CSS la pintura, JS la electricidad
Imagina una casa en construcción. El HTML es la estructura: paredes, habitaciones, puertas, ventanas — define qué hay y dónde. El CSS es la decoración: colores, tapices, iluminación — define cómo se ve. El JavaScript es la electricidad y la domótica: hace que las cosas funcionen e interactúen. Sin estructura (HTML), no hay nada sobre qué poner color ni qué hacer funcionar.
Anatomía de un documento HTML
Todo documento HTML válido sigue la misma estructura base. Entenderla bien desde el principio te ahorrará horas de errores extraños en el futuro:
El navegador interpreta tu HTML y construye un árbol llamado DOM (Document Object Model). Entender esta estructura jerárquica es fundamental para CSS y JavaScript:
🌳 Árbol DOM — estructura padre → hijo
<html>raíz del documento
<head>metadatos, título, links a CSS
<meta>charset, viewport, SEO
<title>texto en la pestaña del navegador
<body>todo el contenido visible
<header>cabecera + nav
<main>contenido principal único
<section>sección temática
<article>contenido independiente
<aside>contenido secundario / sidebar
<footer>pie de página
HTML semántico: el por qué importa
HTML semántico significa usar la etiqueta correcta según el significado del contenido, no solo para que "se vea bien". Un <nav> le dice al navegador, a los lectores de pantalla y a Google que ahí hay un menú de navegación — un <div> no dice nada.
Etiqueta semántica
Para qué se usa
Equivalente NO semántico
<header>
Cabecera del sitio o sección
<div id="header">
<nav>
Menú de navegación
<div id="nav">
<main>
Contenido principal único por página
<div id="main">
<section>
Sección temática con encabezado
<div class="section">
<article>
Contenido independiente (entrada de blog, noticia)
<div class="post">
<aside>
Contenido relacionado pero secundario
<div id="sidebar">
<footer>
Pie de página del sitio o sección
<div id="footer">
<figure> / <figcaption>
Imagen con descripción
<div> + <p>
<time>
Fecha u hora legible por máquinas
<span>
Etiquetas de texto esenciales
HTML — Etiquetas de texto y listas
<!-- Jerarquía de títulos: h1 es el más importante, h6 el menor --><h1>Título principal (uno por página)</h1><h2>Subtítulo de sección</h2><h3>Sub-subtítulo</h3><!-- Párrafo con énfasis --><p>Texto normal con <strong>negrita</strong> y <em>cursiva</em>.</p><!-- Enlace --><ahref="https://ejemplo.com"target="_blank">Visitar sitio</a><!-- Lista no ordenada (bullets) --><ul><li>Elemento uno</li><li>Elemento dos</li></ul><!-- Lista ordenada (numerada) --><ol><li>Paso uno</li><li>Paso dos</li></ol><!-- Imagen con texto alternativo (obligatorio para accesibilidad) --><imgsrc="foto.jpg"alt="Descripción de la imagen"width="800"height="600"><!-- Contenedor genérico (cuando no hay etiqueta semántica adecuada) --><divclass="tarjeta">Bloque de contenido</div><!-- block --><spanclass="badge">Texto inline</span><!-- inline -->
💡 Block vs. Inline — la diferencia clave
Los elementos block (div, p, h1…h6, section…) ocupan toda la línea y empujan el contenido siguiente hacia abajo. Los elementos inline (span, a, strong, em…) se integran dentro del texto sin romper la línea. Esta distinción es fundamental para entender después cómo CSS aplica estilos y cómo Flexbox y Grid organizan los elementos.
⚠ Errores comunes en estructura HTML
(1) Saltarse niveles de encabezados (pasar de h1 a h4 sin usar h2 y h3). (2) Usar <div> para todo en lugar de etiquetas semánticas. (3) Olvidar el atributo alt en imágenes. (4) No cerrar etiquetas (aunque algunos navegadores lo perdonan, es mala práctica). (5) Poner el <script> en el <head> sin atributo defer — bloquea la carga de la página.
🧠 Quiz: Estás construyendo el blog de tu portafolio. Tienes el logo y menú arriba, luego las entradas del blog en el centro, y abajo el copyright. ¿Cuál es la estructura semántica correcta?
L2
Fundamentos
Formularios: la puerta de entrada de los datos
Los formularios son el mecanismo principal por el que los usuarios envían información a un sitio web: registros, inicios de sesión, búsquedas, comentarios, pagos. Un formulario bien construido en HTML es la base de cualquier aplicación web interactiva. Vamos a entender cada pieza.
📋
Analogía: el formulario es como una hoja de papel con campos
Un formulario en papel tiene campos para rellenar (nombre, fecha, firma), opciones de selección (sí/no, tipo de documento), y al final un botón de envío (la firma o el sello). Los formularios HTML hacen lo mismo, pero digitalmente: cada campo recoge un dato, la validación verifica que esté bien escrito, y el botón envía todo al servidor (o lo procesa JavaScript).
Estructura base de un formulario
HTML — Formulario completo con atributos importantes
<formaction="/enviar-datos"<!-- URL que recibe los datos -->method="POST"<!-- GET (visible en URL) o POST (oculto) -->novalidate<!-- desactiva validación nativa para usar la propia -->><!-- Campo de texto --><labelfor="nombre">Nombre completo</label><inputtype="text"id="nombre"name="nombre"placeholder="Ej: Ana García"requiredautocomplete="name"><!-- Email con validación automática --><labelfor="email">Correo electrónico</label><inputtype="email"id="email"name="email"required><!-- Contraseña --><inputtype="password"id="pass"name="password"minlength="8"required><!-- Selector desplegable --><selectname="pais"id="pais"><optionvalue="">Selecciona tu país</option><optionvalue="mx">México</option><optionvalue="es">España</option></select><!-- Radio buttons (una sola opción) --><fieldset><legend>Nivel de experiencia</legend><inputtype="radio"name="nivel"value="principiante"id="pri"><labelfor="pri">Principiante</label><inputtype="radio"name="nivel"value="intermedio"id="int"><labelfor="int">Intermedio</label></fieldset><!-- Checkbox (múltiples opciones) --><inputtype="checkbox"id="terminos"name="terminos"required><labelfor="terminos">Acepto los términos y condiciones</label><!-- Área de texto multilínea --><textareaname="mensaje"rows="4"placeholder="Tu mensaje..."></textarea><!-- Botón de envío --><buttontype="submit">Enviar formulario</button></form>
Vista previa: así se ve el formulario en el navegador
🖥️Formulario de registro — vista previa
Nivel de experiencia *
Tipos de input: la guía completa
type=""
Para qué sirve
Validación automática
text
Texto libre de una línea
No
email
Dirección de correo
Formato usuario@dominio
password
Contraseña (oculta los caracteres)
No (usa minlength)
number
Número (con flechas arriba/abajo)
Solo dígitos; min/max/step
tel
Teléfono (teclado numérico en móvil)
No (usa pattern)
url
Dirección web
Debe empezar con http://…
date
Selector de fecha nativo
Formato de fecha válido
checkbox
Casilla de selección múltiple
No
radio
Opción única dentro de un grupo
No
file
Selector de archivo
accept="" para tipos
range
Control deslizante (slider)
min/max/step
hidden
Dato oculto que se envía con el form
No
Atributos de validación HTML5
HTML — Validación nativa sin JavaScript
<!-- required: el campo no puede estar vacío --><inputtype="text"required><!-- minlength / maxlength: longitud mínima y máxima --><inputtype="text"minlength="3"maxlength="50"><!-- pattern: expresión regular personalizada --><inputtype="tel"pattern="[0-9]{10}"placeholder="10 dígitos"><!-- min / max: valores numéricos o de fecha --><inputtype="number"min="18"max="120"><!-- disabled: campo deshabilitado (no se envía) --><inputtype="text"value="Solo lectura"disabled><!-- readonly: solo lectura (SÍ se envía) --><inputtype="text"value="Generado automáticamente"readonly>
✅ Buenas prácticas en formularios
(1) Siempre conecta el <label> con su <input> mediante for e id iguales — mejora la accesibilidad y el área de clic. (2) Usa <fieldset> y <legend> para agrupar campos relacionados. (3) El atributo autocomplete mejora la experiencia del usuario en móvil. (4) Siempre muestra mensajes de error claros — "El email no es válido" es mejor que solo un borde rojo. (5) Nunca confíes solo en la validación del lado del cliente — el servidor también debe validar.
🧠 Quiz: Estás creando un formulario de registro. ¿Cuál es la diferencia entre GET y POST en el atributo method?
L3
Intermedio
Multimedia: imagen, audio, video e iframes
Una página web moderna va más allá del texto. HTML5 incluye etiquetas nativas para incrustar imágenes responsivas, videos, audio y contenido externo sin depender de plugins como Flash (que ya no existe). Vamos a dominar cada uno.
🖼️
Imágenes
<img> y <picture> para imágenes responsivas con múltiples fuentes.
🎬
Video
<video> con controles nativos, múltiples formatos y captions.
🎵
Audio
<audio> con controles de reproducción y soporte para varios formatos.
🗺️
Iframes
<iframe> para incrustar mapas, videos de YouTube, PDFs y más.
Imágenes: más allá del simple <img>
HTML — Imágenes básicas y responsivas
<!-- ── IMAGEN BÁSICA ── --><imgsrc="foto-hero.jpg"alt="Desarrolladora trabajando en su laptop"<!-- OBLIGATORIO -->width="1200"height="600"loading="lazy"<!-- carga diferida: mejora rendimiento -->decoding="async"<!-- decodificación asíncrona -->><!-- ── IMAGEN CON CAPTION ── --><figure><imgsrc="grafica.png"alt="Gráfica de crecimiento 2025"><figcaption>Fig. 1 — Crecimiento de usuarios durante 2025</figcaption></figure><!-- ── IMAGEN RESPONSIVA CON <picture> ── --><!-- El navegador elige la fuente más adecuada según el dispositivo --><picture><sourcemedia="(min-width: 1024px)"srcset="hero-desktop.webp"type="image/webp"><sourcemedia="(min-width: 480px)"srcset="hero-tablet.webp"type="image/webp"><imgsrc="hero-movil.jpg"alt="Hero del sitio"><!-- fallback --></picture><!-- ── srcset para pantallas de alta densidad ── --><imgsrc="logo.png"srcset="logo.png 1x, logo@2x.png 2x, logo@3x.png 3x"alt="Logo">
Video nativo con <video>
HTML — Video con múltiples formatos y subtítulos
<videocontrols<!-- muestra controles play/pause/volumen -->width="800"height="450"poster="miniatura.jpg"<!-- imagen antes de reproducir -->preload="metadata"<!-- carga solo metadatos al inicio -->muted<!-- silenciado por defecto -->><!-- Múltiples formatos: el navegador elige el primero que soporte --><sourcesrc="video.webm"type="video/webm"><sourcesrc="video.mp4"type="video/mp4"><!-- Subtítulos / captions --><trackkind="subtitles"src="subtitulos-es.vtt"srclang="es"label="Español"default><!-- Mensaje para navegadores muy antiguos -->Tu navegador no soporta el elemento video.</video><!-- Atributo autoplay (solo funciona si también va muted) --><videoautoplaymutedloopplaysinline><sourcesrc="fondo-animado.mp4"type="video/mp4"></video>
Audio con <audio>
HTML — Audio con controles nativos
<audiocontrolspreload="none"<!-- no descarga hasta que el usuario lo pida -->><sourcesrc="podcast.ogg"type="audio/ogg"><sourcesrc="podcast.mp3"type="audio/mpeg">Tu navegador no soporta audio HTML5.</audio>
Iframes: incrustar contenido externo
HTML — Ejemplos de iframe: YouTube, Google Maps, PDF
<!-- ── VIDEO DE YOUTUBE ── --><iframewidth="560"height="315"src="https://www.youtube.com/embed/VIDEO_ID"title="Título del video"frameborder="0"allow="accelerometer; autoplay; clipboard-write; encrypted-media"allowfullscreen></iframe><!-- ── GOOGLE MAPS ── --><iframesrc="https://www.google.com/maps/embed?pb=!1m18..."width="600"height="450"style="border:0"loading="lazy"referrerpolicy="no-referrer-when-downgrade"></iframe><!-- ── PDF incrustado ── --><iframesrc="documento.pdf"width="100%"height="600px"title="Mi CV en PDF"></iframe>
⚠ Formatos recomendados y rendimiento
Para imágenes, usa WebP como formato principal (30–50% más ligero que JPG/PNG) con fallback a JPG. Para video, ofrece WebM + MP4. Para audio, OGG + MP3. Siempre incluye dimensiones (width y height) en las imágenes para que el navegador reserve el espacio y evite el "layout shift" — esto también mejora el puntaje de Core Web Vitals en Google.
🧠 Quiz: ¿Por qué el atributo alt en las imágenes es obligatorio aunque el usuario no lo vea directamente?
L4
Intermedio
SEO básico: para que Google te encuentre
SEO (Search Engine Optimization) es el conjunto de técnicas para que los motores de búsqueda entiendan y posicionen bien tu página. Una gran parte del SEO se hace directamente en HTML — sin plugins ni herramientas externas. Aprender a escribir buen HTML ya es hacer buen SEO.
📖
Analogía: Google lee tu HTML como un índice de libro
Cuando Google visita tu página, la lee como si fuera un libro: el <title> es la portada, el <h1> es el capítulo principal, los <h2> son subcapítulos, el texto es el contenido. Si la portada está vacía, si no hay estructura de capítulos, si las palabras clave no aparecen donde deben — Google no sabe de qué trata el libro y no lo recomienda. Las meta etiquetas son como la contraportada que resume de qué va todo.
Las meta etiquetas esenciales
HTML — <head> optimizado para SEO
<head><!-- ── BÁSICAS (todas las páginas) ── --><metacharset="UTF-8"><metaname="viewport"content="width=device-width, initial-scale=1.0"><!-- ── TITLE: lo más importante para SEO (50-60 caracteres) ── --><title>Portafolio Web | Ana García — Desarrolladora Frontend</title><!-- ── DESCRIPTION: lo que muestra Google en resultados (150-160 car.) ── --><metaname="description"content="Portafolio de Ana García, desarrolladora frontend
especializada en HTML, CSS y JavaScript. Proyectos reales,
código limpio y diseño responsivo."><!-- ── CANONICAL: URL preferida para evitar contenido duplicado ── --><linkrel="canonical"href="https://anagarcia.dev/portafolio"><!-- ── OPEN GRAPH: cómo se ve cuando se comparte en redes sociales ── --><metaproperty="og:title"content="Portafolio de Ana García"><metaproperty="og:description"content="Desarrolladora Frontend · HTML, CSS, JS"><metaproperty="og:image"content="https://anagarcia.dev/og-image.jpg"><metaproperty="og:url"content="https://anagarcia.dev"><metaproperty="og:type"content="website"><!-- ── TWITTER CARD ── --><metaname="twitter:card"content="summary_large_image"><metaname="twitter:title"content="Portafolio de Ana García"><metaname="twitter:image"content="https://anagarcia.dev/og-image.jpg"><!-- ── ROBOTS: instrucciones para los bots ── --><metaname="robots"content="index, follow"><!-- noindex → no aparecer en resultados; nofollow → no seguir links --><!-- ── FAVICON ── --><linkrel="icon"href="/favicon.ico"sizes="any"><linkrel="icon"href="/icon.svg"type="image/svg+xml"><linkrel="apple-touch-icon"href="/apple-touch-icon.png"></head>
Jerarquía de encabezados: la columna vertebral del SEO
Los encabezados (h1–h6) son la estructura que Google lee para entender de qué trata tu página. Usarlos bien es una de las cosas más impactantes que puedes hacer en SEO técnico:
HTML — Jerarquía correcta de encabezados
<!-- ✅ CORRECTO: jerarquía lógica --><h1>Curso de Desarrollo Web Frontend 2026</h1><!-- solo uno por página --><h2>Módulo 1: HTML</h2><h3>Estructura semántica</h3><h3>Formularios</h3><h2>Módulo 2: CSS</h2><h3>Flexbox y Grid</h3><!-- ❌ INCORRECTO: saltar niveles --><h1>Título principal</h1><h4>Salté de h1 a h4 — Google penaliza esto</h4><!-- ❌ --><!-- ❌ INCORRECTO: múltiples h1 --><h1>Título de la sección 1</h1><!-- ❌ solo debe haber uno --><h1>Título de la sección 2</h1><!-- ❌ -->
Datos estructurados: el lenguaje que Google entiende mejor
Los datos estructurados (Schema.org en formato JSON-LD) permiten a Google mostrar resultados enriquecidos: estrellas de valoración, precios, eventos, recetas. Son el nivel avanzado del SEO en HTML:
HTML — JSON-LD: datos estructurados para un artículo
<scripttype="application/ld+json">{"@context": "https://schema.org",
"@type": "Article",
"headline": "HTML: el esqueleto de la web",
"description": "Aprende HTML desde cero con ejemplos prácticos",
"author": {
"@type": "Person",
"name": "Ana García"
},
"datePublished": "2026-06-08",
"image": "https://anagarcia.dev/og-image.jpg"}</script>
Lista de verificación SEO — HTML
✅
<title> único por página, con la palabra clave principal al inicio, entre 50 y 60 caracteres.
✅
Meta description descriptiva y atractiva entre 150 y 160 caracteres. No posiciona directamente, pero mejora el CTR.
✅
Un solo <h1> por página que incluya la palabra clave principal. Jerarquía lógica h1 → h2 → h3.
✅
HTML semántico: <header>, <main>, <article>, <nav>, <footer> en lugar de <div> para todo.
✅
Atributo alt en todas las imágenes, descriptivo y con palabras clave naturales cuando aplique.
✅
URLs limpias y descriptivas: /curso-html-basico mejor que /pagina?id=42.
✅
Meta viewport para que Google te marque como sitio mobile-friendly.
✅
Open Graph tags para que el enlace se vea bien al compartirlo en redes.
✅
Texto de los enlaces descriptivo: "Ver proyectos" mejor que "clic aquí" o "aquí".
✅
Velocidad de carga: imágenes optimizadas, loading="lazy", JS al final del body con defer.
💡 SEO on-page vs. off-page
Lo que aprendiste aquí es SEO on-page: todo lo que controlas directamente en tu código. El SEO off-page (backlinks, reputación del dominio, redes sociales) viene después y depende de que primero construyas una base técnica sólida. Sin buen HTML semántico, las estrategias off-page no tienen dónde sostenerse.
🛠 Herramientas gratuitas para auditar tu SEO
Google Search Console — monitorea cómo Google ve tu sitio. PageSpeed Insights — mide velocidad y Core Web Vitals. Rich Results Test — valida tus datos estructurados. Validator W3C (validator.w3.org) — verifica que tu HTML no tenga errores. Con estas cuatro herramientas puedes diagnosticar casi cualquier problema de SEO técnico.
🧠 Quiz: Estás publicando tu portafolio profesional. ¿Cuál de estas prácticas de SEO tiene el mayor impacto inmediato en cómo Google muestra tu página en resultados de búsqueda?
🎉 HTML completado
Ya dominas la base de toda página web — el siguiente paso es darle estilo con CSS
✅ Estructura web✅ Formularios✅ Multimedia✅ SEO básico📐 CSS — próximo
🌐
¡HTML dominado!
Has completado las cuatro lecciones de HTML: estructura semántica, formularios, multimedia y SEO básico. Tienes la base sólida para construir cualquier página web profesional.
El siguiente post cubrirá CSS: Flexbox, Grid y Responsive Design para dar vida visual a tu HTML.
0 Comentarios