🚀 Introducción a HTML
¿Qué es HTML?
HTML (HyperText Markup Language) es el lenguaje de marcado estándar para crear páginas web. No es un lenguaje de programación, sino un lenguaje de marcado que utiliza etiquetas para estructurar el contenido.
¿Por qué aprender HTML en 2025?
- Es la base fundamental de toda página web
- Necesario para cualquier carrera en desarrollo web
- Complementa tecnologías modernas como React, Vue, etc.
- Mejora la accesibilidad y SEO de las páginas web
- Es el primer paso hacia una carrera en tecnología
Lo que aprenderás
Al finalizar esta guía podrás:
- ✅ Crear páginas web completamente funcionales
- ✅ Entender la estructura y semántica del HTML
- ✅ Implementar formularios y multimedia
- ✅ Aplicar principios de diseño responsive
- ✅ Seguir las mejores prácticas del desarrollo web moderno
- ✅ Crear un portafolio profesional
Tu Primera Meta
Antes de continuar, establece tu objetivo personal:
- ¿Quieres crear tu propia página web?
- ¿Estás buscando cambiar de carrera?
- ¿Quieres mejorar tus habilidades actuales?
Escribe tu objetivo y tenlo presente durante todo el aprendizaje.
⚙️ Preparación del Entorno
Herramientas Necesarias
Editor de Código (Elige uno):
- Visual Studio Code (Recomendado - Gratuito)
- Descarga: https://code.visualstudio.com/
- Extensiones útiles: HTML CSS Support, Live Server, Prettier
- Sublime Text (Prueba gratuita)
- Atom (Gratuito)
- Notepad++ (Windows - Gratuito)
Navegadores para Pruebas:
- 🌐 Google Chrome (Recomendado para desarrollo)
- 🦊 Mozilla Firefox
- 🔷 Microsoft Edge
- 🍎 Safari (si tienes Mac)
Configuración Inicial
- Crea una carpeta llamada "MiPrimerSitioWeb" en tu escritorio
- Abre tu editor de código
- Instala la extensión "Live Server" en VS Code para ver cambios en tiempo real
- Configura tu espacio de trabajo
Ejercicio de Configuración
Vamos a verificar que todo esté funcionando:
- Abre VS Code
- Crea un archivo llamado "test.html"
- Escribe "!" y presiona Tab (debería crear una estructura HTML básica)
- Guarda el archivo y ábrelo con Live Server
Si ves una página en blanco en tu navegador, ¡estás listo para continuar!
📝 Fundamentos Básicos
¿Qué son las Etiquetas?
Las etiquetas HTML son elementos que definen la estructura y el contenido de una página web. Se
escriben entre corchetes angulares < >
.
Estructura de una etiqueta:
<etiqueta>contenido</etiqueta>
Etiquetas con atributos:
<etiqueta atributo="valor">contenido</etiqueta>
Etiquetas auto-cerradas:
<etiqueta />
Conceptos Clave
- Elemento: La etiqueta completa con su contenido
- Atributo: Información adicional sobre el elemento
- Valor: Lo que se asigna al atributo
- Anidación: Colocar elementos dentro de otros elementos
Ejemplo Práctico
<!-- Esto es un comentario -->
<p class="destacado" id="primer-parrafo">
Este es un párrafo con <strong>texto en negrita</strong>
</p>
Primer Contacto con HTML
Crea un archivo llamado "mi-primera-pagina.html" y experimenta con diferentes etiquetas:
- Usa
<h1>
para un título - Añade varios párrafos con
<p>
- Experimenta con
<strong>
y<em>
- Añade comentarios con
<!-- -->
🏗️ Estructura Básica de HTML
Todo documento HTML debe tener esta estructura básica:
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Mi Primera Página Web</title>
</head>
<body>
<h1>¡Hola Mundo!</h1>
<p>Esta es mi primera página web.</p>
</body>
</html>
Explicación de cada parte
<!DOCTYPE html>
: Declara que es un documento HTML5<html>
: Elemento raíz que contiene todo el documento<head>
: Contiene metadatos (información sobre la página)<meta charset="UTF-8">
: Define la codificación de caracteres<meta name="viewport">
: Hace la página responsive<title>
: Título que aparece en la pestaña del navegador<body>
: Contiene todo el contenido visible de la página
Ejercicio Práctico 1
Crea tu primer archivo HTML:
- Abre tu editor de código
- Crea un nuevo archivo y guárdalo como "index.html"
- Copia la estructura básica anterior
- Cambia el título por tu nombre
- Añade un párrafo con una descripción tuya
- Abre el archivo en tu navegador
📄 Elementos de Texto
Encabezados
HTML tiene 6 niveles de encabezados, del más importante (h1) al menos importante (h6):
<h1>Encabezado Principal</h1>
<h2>Encabezado Secundario</h2>
<h3>Encabezado de Tercer Nivel</h3>
<h4>Encabezado de Cuarto Nivel</h4>
<h5>Encabezado de Quinto Nivel</h5>
<h6>Encabezado de Sexto Nivel</h6>
Párrafos y Formateo de Texto
<p>Este es un párrafo normal.</p>
<p>Este párrafo contiene <strong>texto en negrita</strong>
y <em>texto en cursiva</em>.</p>
<p>También puedes usar <b>negrita</b> y <i>cursiva</i>,
aunque strong y em son más semánticos.</p>
<p>Texto <u>subrayado</u> y texto <s>tachado</s>.</p>
<p>Para mostrar código usa <code>console.log("Hola");</code>.</p>
Diferencia entre <strong> vs <b> y <em> vs <i>
<strong>
y<em>
tienen significado semántico<b>
y<i>
solo cambian la apariencia visual- Los lectores de pantalla entienden mejor strong y em
- Es mejor práctica usar las etiquetas semánticas
Citas y Elementos Especiales
<blockquote>
Esta es una cita larga que se destaca del texto principal.
- Autor Famoso
</blockquote>
<p>La fórmula del agua es H<sub>2</sub>O</p>
<p>Einstein escribió E=mc<sup>2</sup></p>
<p>Presiona <kbd>Ctrl</kbd> + <kbd>C</kbd> para copiar</p>
<p><mark>Este texto está resaltado</mark></p>
<p><small>Texto en letra pequeña</small></p>
Ejercicio Práctico 2
Crea una página "sobre-mi.html" con:
- Un encabezado principal con tu nombre
- Varios párrafos sobre ti usando diferentes elementos de texto
- Al menos 3 niveles de encabezados
- Texto en negrita, cursiva y subrayado
- Una cita inspiracional
🔗 Enlaces e Imágenes
Enlaces (Links)
Los enlaces conectan páginas web entre sí:
<!-- Enlace a otra página web -->
<a href="https://www.google.com">Ir a Google</a>
<!-- Enlace a otra página de tu sitio -->
<a href="sobre-mi.html">Sobre Mí</a>
<!-- Enlace a una sección de la misma página -->
<a href="#seccion1">Ir a la Sección 1</a>
<!-- Enlace que abre en nueva pestaña -->
<a href="https://www.github.com" target="_blank">GitHub</a>
<!-- Enlace de email -->
<a href="mailto:ejemplo@email.com">Enviar Email</a>
<!-- Enlace de teléfono -->
<a href="tel:+1234567890">Llamar</a>
Imágenes
alt
es obligatorio y describe la imagen
para personas con discapacidad visual y motores de búsqueda.
<!-- Imagen básica -->
<img src="mi-imagen.jpg" alt="Descripción de la imagen">
<!-- Imagen con dimensiones -->
<img src="foto.jpg" alt="Mi foto" width="300" height="200">
<!-- Imagen responsive -->
<img src="banner.jpg" alt="Banner principal"
style="max-width: 100%; height: auto;">
<!-- Imagen como enlace -->
<a href="https://www.ejemplo.com">
<img src="logo.png" alt="Logo de la empresa">
</a>
Buenas prácticas para el atributo alt
- ✅
alt="Gato naranja durmiendo en un sofá"
- ❌
alt="imagen"
oalt="foto"
- ✅ Describe qué muestra la imagen
- ✅ Si es decorativa, usa
alt=""
Ejercicio Práctico 3
- Añade una foto tuya a tu página "sobre-mi.html"
- Crea enlaces a tus redes sociales
- Crea un menú de navegación con enlaces
- Añade un enlace de email para contacto
- Practica con diferentes tipos de enlaces
📋 Listas
Listas No Ordenadas (Bullets)
<ul>
<li>Primer elemento</li>
<li>Segundo elemento</li>
<li>Tercer elemento</li>
</ul>
Listas Ordenadas (Numeradas)
<ol>
<li>Paso uno</li>
<li>Paso dos</li>
<li>Paso tres</li>
</ol>
Listas de Definición
<dl>
<dt>HTML</dt>
<dd>Lenguaje de marcado para crear páginas web</dd>
<dt>CSS</dt>
<dd>Lenguaje para dar estilo a las páginas web</dd>
<dt>JavaScript</dt>
<dd>Lenguaje de programación para interactividad</dd>
</dl>
Listas Anidadas
<ul>
<li>Frutas
<ul>
<li>Manzanas</li>
<li>Naranjas</li>
<li>Plátanos</li>
</ul>
</li>
<li>Verduras
<ul>
<li>Zanahorias</li>
<li>Brócoli</li>
<li>Espinacas</li>
</ul>
</li>
</ul>
Ejercicio Práctico 4
Crea una página "habilidades.html" con:
- Lista de tus habilidades técnicas
- Lista ordenada de tus objetivos del año
- Lista anidada de tus hobbies por categorías
- Lista de definición con términos técnicos
📊 Tablas
Tabla Básica
<table>
<tr>
<th>Nombre</th>
<th>Edad</th>
<th>Ciudad</th>
</tr>
<tr>
<td>Juan</td>
<td>25</td>
<td>Madrid</td>
</tr>
<tr>
<td>María</td>
<td>30</td>
<td>Barcelona</td>
</tr>
</table>
Tabla Completa con Estructura Semántica
<table>
<caption>Ventas del Primer Trimestre</caption>
<thead>
<tr>
<th>Mes</th>
<th>Ventas</th>
<th>Meta</th>
</tr>
</thead>
<tbody>
<tr>
<td>Enero</td>
<td>$50,000</td>
<td>$45,000</td>
</tr>
<tr>
<td>Febrero</td>
<td>$60,000</td>
<td>$55,000</td>
</tr>
</tbody>
<tfoot>
<tr>
<td>Total</td>
<td>$110,000</td>
<td>$100,000</td>
</tr>
</tfoot>
</table>
Elementos de tabla
<table>
: Contenedor principal<caption>
: Título de la tabla<thead>
: Encabezado de la tabla<tbody>
: Cuerpo de la tabla<tfoot>
: Pie de la tabla<th>
: Celda de encabezado<td>
: Celda de datos<tr>
: Fila de la tabla
📝 Formularios
Los formularios permiten a los usuarios enviar información:
Formulario Básico
<form action="#" method="POST">
<label for="nombre">Nombre:</label>
<input type="text" id="nombre" name="nombre" required>
<label for="email">Email:</label>
<input type="email" id="email" name="email" required>
<input type="submit" value="Enviar">
</form>
Tipos de Input
<form>
<!-- Texto -->
<input type="text" placeholder="Nombre">
<!-- Email -->
<input type="email" placeholder="email@ejemplo.com">
<!-- Contraseña -->
<input type="password" placeholder="Contraseña">
<!-- Número -->
<input type="number" min="1" max="100">
<!-- Fecha -->
<input type="date">
<!-- Color -->
<input type="color">
<!-- Archivo -->
<input type="file" accept="image/*">
<!-- Checkbox -->
<input type="checkbox" id="acepto">
<label for="acepto">Acepto términos</label>
<!-- Radio buttons -->
<input type="radio" id="si" name="respuesta" value="si">
<label for="si">Sí</label>
<!-- Área de texto -->
<textarea placeholder="Tu mensaje..."></textarea>
<!-- Select -->
<select name="pais">
<option value="">Selecciona un país</option>
<option value="es">España</option>
<option value="mx">México</option>
</select>
</form>
<label>
con sus inputs
usando el atributo for
que coincida con el id
del input.
Ejercicio Práctico 5
Crea una página "contacto.html" con:
- Un formulario completo de contacto
- Diferentes tipos de campos
- Validación básica con HTML5
- Estructura semántica con fieldset y legend
🎯 Elementos Semánticos HTML5
HTML5 introdujo elementos semánticos que dan significado al contenido:
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<title>Mi Sitio Web Semántico</title>
</head>
<body>
<header>
<nav>
<ul>
<li><a href="#inicio">Inicio</a></li>
<li><a href="#sobre">Sobre Mí</a></li>
<li><a href="#contacto">Contacto</a></li>
</ul>
</nav>
</header>
<main>
<section id="inicio">
<h1>Bienvenido</h1>
<p>Contenido principal...</p>
</section>
<section id="sobre">
<h2>Sobre Mí</h2>
<article>
<h3>Mi Historia</h3>
<p>Mi historia personal...</p>
</article>
</section>
</main>
<aside>
<h3>Información Adicional</h3>
<p>Contenido complementario...</p>
</aside>
<footer>
<p>© 2025 Mi Nombre</p>
<address>
<a href="mailto:mi@email.com">mi@email.com</a>
</address>
</footer>
</body>
</html>
Elementos Semánticos
<header>
: Encabezado de página o sección<nav>
: Navegación principal<main>
: Contenido principal<section>
: Sección temática<article>
: Contenido independiente<aside>
: Contenido secundario<footer>
: Pie de página<address>
: Información de contacto
🎵 Multimedia
Audio
<!-- Audio básico -->
<audio controls>
<source src="audio.mp3" type="audio/mpeg">
<source src="audio.ogg" type="audio/ogg">
Tu navegador no soporta audio.
</audio>
<!-- Audio con opciones -->
<audio controls autoplay loop muted>
<source src="musica.mp3" type="audio/mpeg">
</audio>
Video
<!-- Video básico -->
<video controls width="640" height="360">
<source src="video.mp4" type="video/mp4">
<source src="video.webm" type="video/webm">
Tu navegador no soporta video.
</video>
<!-- Video con poster -->
<video controls poster="thumbnail.jpg">
<source src="mi-video.mp4" type="video/mp4">
<track kind="subtitles" src="subtitulos.vtt"
srclang="es" label="Español">
</video>
YouTube Embebido
<iframe width="560" height="315"
src="https://www.youtube.com/embed/VIDEO_ID"
frameborder="0"
allowfullscreen>
</iframe>
🎨 CSS Básico Integrado
CSS Inline
<p style="color: red; font-size: 18px;">Texto rojo</p>
CSS Interno
<head>
<style>
body {
font-family: Arial, sans-serif;
background-color: #f0f0f0;
}
h1 {
color: navy;
text-align: center;
}
.destacado {
background-color: yellow;
padding: 10px;
}
#especial {
border: 2px solid red;
}
</style>
</head>
CSS Externo
<head>
<link rel="stylesheet" href="estilos.css">
</head>
📱 Diseño Responsive
Meta Viewport
<meta name="viewport" content="width=device-width, initial-scale=1.0">
Imágenes Responsive
<img src="imagen.jpg" alt="Descripción"
style="max-width: 100%; height: auto;">
🎯 Proyectos Prácticos
Proyecto 1: Página Personal
Objetivo: Crear tu primera página web personal
Archivos a crear:
- 📄 index.html
- 📄 sobre-mi.html
- 📄 contacto.html
- 🎨 estilos.css
Proyecto 2: Blog Personal
Objetivo: Crear un blog con múltiples artículos
Características:
- 📰 Página principal con lista de artículos
- 📝 Páginas individuales para cada artículo
- 🏷️ Sistema de categorías
- 👤 Sidebar con información del autor
Proyecto 3: Portafolio Profesional
Objetivo: Crear un portafolio completo y profesional
Características:
- 🎨 Diseño moderno y responsive
- 🖼️ Galería de proyectos
- 📞 Formulario de contacto
- ⚡ Animaciones CSS
- 🔍 Optimizado para SEO
✅ Buenas Prácticas
Estructura y Organización
✅ Correcto
<header>
<nav>
<ul>
<li><a href="#inicio">Inicio</a></li>
</ul>
</nav>
</header>
❌ Incorrecto
<div class="header">
<div class="nav">
<div class="menu">
<div><a href="#inicio">Inicio</a></div>
</div>
</div>
</div>
Accesibilidad
Reglas importantes:
- 🖼️ Siempre usa
alt
en imágenes - 🏷️ Asocia
labels
coninputs
- 📊 Usa encabezados jerárquicos (h1, h2, h3...)
- 🎨 Mantén buen contraste de colores
- ⌨️ Asegura navegación con teclado
SEO Básico
- 📄 Títulos únicos y descriptivos
- 📝 Meta descripciones informativas
- 🏗️ Estructura de encabezados lógica
- 🔗 URLs semánticas y limpias
- ⚡ Páginas que cargan rápido
Performance
<!-- Optimiza imágenes -->
<img src="imagen.jpg" alt="Descripción" loading="lazy">
<!-- Usa formatos modernos -->
<picture>
<source srcset="imagen.webp" type="image/webp">
<img src="imagen.jpg" alt="Descripción">
</picture>
📚 Recursos Adicionales
🛠️ Herramientas Útiles
- CodePen: https://codepen.io/ - Prototipos rápidos
- Can I Use: https://caniuse.com/ - Compatibilidad
- HTML Validator: https://validator.w3.org/
- Google Fonts: https://fonts.google.com/
📖 Documentación
- MDN Web Docs: https://developer.mozilla.org/
- W3Schools: https://www.w3schools.com/
- HTML Specification: https://html.spec.whatwg.org/
🎓 Cursos Recomendados
- freeCodeCamp: https://www.freecodecamp.org/ - Gratuito
- Codecademy: https://www.codecademy.com/
- YouTube - Traversy Media: Canal excelente para tutoriales
🌟 Próximos Pasos
Una vez domines HTML, aprende en este orden:
- 🎨 CSS Avanzado - Flexbox, Grid, Animations
- ⚡ JavaScript - Interactividad y lógica
- 🚀 Frameworks - React, Vue o Angular
- 🔧 Herramientas - Git, NPM, Build tools
✅ Checklist Final
Antes de considerar que dominas HTML, asegúrate de poder hacer esto:
- ☐ Crear estructura básica HTML5
- ☐ Usar elementos semánticos correctamente
- ☐ Crear formularios funcionales
- ☐ Implementar navegación entre páginas
- ☐ Hacer sitios responsive
- ☐ Seguir buenas prácticas de accesibilidad
- ☐ Crear un proyecto completo desde cero
📞 Contacto
¿Tienes dudas, comentarios o sugerencias? ¡Escríbeme!