HTML5: El Lenguaje de la Web Moderna 🌐

Descubre la evolución, estructura y poder del lenguaje que define la World Wide Web. Esta guía completa te llevará a través de los conceptos esenciales de HTML5, pensada para ser práctica y didáctica.

1. ¿Qué es HTML5? 🤔

HTML, o HyperText Markup Language (Lenguaje de Marcado de Hipertexto), es el pilar fundamental de la World Wide Web. HTML5 es su quinta y más reciente versión mayor, un estándar vivo que continúa evolucionando. No es un lenguaje de programación (no tiene lógica condicional, bucles, etc.), sino un lenguaje de marcado que define la estructura y el significado del contenido de una página web.

📝
HyperText Markup Language
HyperText: Permite crear enlaces (hipervínculos) que conectan diferentes documentos o recursos en la web.
Markup (Marcado): Utiliza "etiquetas" (tags) para anotar o "marcar" diferentes partes del contenido, dándoles un significado estructural.
Language (Lenguaje): Proporciona un vocabulario y una sintaxis estándar para crear documentos web.
🏗️
Quinta Evolución Mayor
HTML5 representa una mejora significativa, diseñado para ser más semántico, soportar aplicaciones web complejas, integrar multimedia nativa y mejorar la interoperabilidad. Es un estándar "vivo", actualizado continuamente por el WHATWG.
🌍
Estándar Universal de la Web
Mantenido por el WHATWG y con recomendaciones del W3C, HTML5 es el lenguaje estándar para crear páginas web accesibles y funcionales en diversos dispositivos y navegadores.
Enfoque en Accesibilidad (A11y)
HTML5 introduce elementos y atributos que ayudan a crear contenido web más accesible para personas con diversas discapacidades, permitiendo que tecnologías de asistencia interpreten mejor la estructura.

2. Breve Historia y Evolución de HTML 📜

Desde sus inicios en el CERN, HTML ha recorrido un largo camino para estructurar la World Wide Web.

1989-1991
🌟 El Amanecer de la Web
Tim Berners-Lee en el CERN crea la World Wide Web, el primer navegador, servidor y páginas HTML simples (18 etiquetas).
1995
🖼️ HTML 2.0 (RFC 1866)
Primer estándar oficial. Añadió formularios (<form>, <input>), imágenes (<img>) y tablas básicas.
1999
📐 HTML 4.01
Separación de contenido y presentación (CSS). Soporte para scripts, marcos y mejor internacionalización.
2000-2009
❄️ La Era de XHTML
XHTML reformuló HTML como XML, con sintaxis más estricta. El desarrollo de nuevas características se ralentizó.
2008
🚀 HTML5 (Primer Borrador)
WHATWG publica el primer borrador de HTML5, enfocado en aplicaciones web ricas, no solo documentos.
2014
🎉 HTML5 (Recomendación W3C)
HTML5 se convierte en recomendación oficial. Introduce elementos semánticos, multimedia nativa, Canvas, y APIs avanzadas.
2017-Hoy
🔄 HTML Living Standard
WHATWG mantiene HTML como un "Estándar Vivo", evolucionando continuamente para adaptarse a las nuevas necesidades de la web.

3. Fundamentos de HTML: Etiquetas Esenciales 🧱

Toda página web se construye sobre un conjunto de etiquetas HTML fundamentales. Conocerlas es el primer paso para crear contenido web. Estas etiquetas son los "ladrillos" con los que edificamos la estructura y el contenido de nuestros sitios.

A. Estructura Básica del Documento

Estas son las etiquetas que forman el esqueleto de cualquier página HTML.

<!DOCTYPE html><!DOCTYPE html>: Declaración que define que el documento es HTML5. Es la primera línea, crucial para que los navegadores interpreten la página correctamente en modo estándar.
<html><html>: Elemento raíz de una página HTML. Todo el contenido de la página se anida dentro de esta etiqueta. El atributo lang (ej: lang="es") especifica el idioma principal del documento.
<head><head>: Contiene metainformación sobre el documento HTML que no es visible directamente en la página. Aquí se define el título, se enlazan hojas de estilo (CSS), scripts (JavaScript) y otros metadatos.
<body><body>: Contiene todo el contenido visible de la página web, como texto, imágenes, enlaces, videos, tablas, etc. Solo puede haber un elemento <body> por documento.
esqueleto_pagina.html
<!DOCTYPE html>
<html lang="es">
  <head>
    <!-- Aquí va la metainformación -->
    <title>Título de mi Página</title>
  </head>
  <body>
    <!-- Aquí va el contenido visible -->
  </body>
</html>

B. Metainformación en <head>

El <head> es vital para configurar tu página y proporcionar información a navegadores y motores de búsqueda.

<meta><meta>: Proporciona metadatos. Comunes son charset="UTF-8" (codificación de caracteres), name="viewport" content="width=device-width, initial-scale=1.0" (para diseño responsivo), name="description" (descripción para SEO), name="keywords" (palabras clave).
<title><title>: Define el título del documento, mostrado en la pestaña del navegador y usado por motores de búsqueda.
<link><link>: Se usa para enlazar recursos externos, principalmente hojas de estilo CSS (ej: <link rel="stylesheet" href="estilos.css">) o favicons.
<style><style>: Permite incluir código CSS directamente en el documento HTML (CSS interno o embebido).
<script><script>: Se usa para incluir código JavaScript, ya sea directamente o enlazando un archivo externo (ej: <script src="mi_script.js"></script>).
head_completo.html
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Título Impactante</title>
  <link rel="stylesheet" href="mis_estilos.css">
</head>

C. Texto: Encabezados, Párrafos y Formato

Dar estructura y énfasis al texto es fundamental.

<h1>...<h6><h1> a <h6>: Encabezados de sección. <h1> es el más importante, <h6> el menos. Usar jerárquicamente.
<p><p>: Párrafo. Agrupa bloques de texto.
<br><br>: Salto de línea simple (etiqueta vacía).
<hr><hr>: Línea horizontal, representa una ruptura temática (etiqueta vacía).
<strong><strong>: Indica importancia, seriedad o urgencia (semántico). Suele verse en negrita.
<em><em>: Indica énfasis (semántico). Suele verse en cursiva.
<b><b>: Texto en negrita sin implicación semántica adicional. Preferir <strong> para importancia.
<i><i>: Texto en cursiva sin implicación semántica adicional (ej: término técnico, nombre de barco). Preferir <em> para énfasis.
<u><u>: Texto subrayado. Su uso es desaconsejado ya que puede confundirse con enlaces.
<sub><sub>: Subíndice. Ej: H₂O (H<sub>2</sub>O).
<sup><sup>: Superíndice. Ej: E=mc² (E=mc<sup>2</sup>).
<small><small>: Texto secundario o "letra pequeña" (comentarios, copyright).
<mark><mark>: Resalta texto por su relevancia en un contexto particular.
<code><code>: Fragmento de código de computadora.
<pre><pre>: Texto preformateado, respeta espacios y saltos de línea. Ideal para bloques de código.
<blockquote><blockquote>: Cita extensa de otra fuente.
<q><q>: Cita corta en línea.
<cite><cite>: Título de una obra (libro, película, etc.).
parrafos_formato.html (Ejemplo para Colab)
%%html
<style>
  .parrafo-derecha { text-align: right; color: blue; }
  .parrafo-centro { text-align: center; color: green; }
  .caja-div { 
    border: 2px solid orange; 
    background-color: #fff3e0; 
    padding: 15px; 
    margin-top: 10px;
    border-radius: 8px;
  }
</style>

<h1>Teorema de Pitágoras</h1>
<p>En un triángulo rectángulo, el cuadrado de la hipotenusa (<em>c</em>) es igual a la suma de los cuadrados de los catetos (<em>a</em> y <em>b</em>).</p>
<p class="parrafo-centro">Fórmula: <code>a<sup>2</sup> + b<sup>2</sup> = c<sup>2</sup></code>. <strong>¡Fundamental!</strong></p>
<p class="parrafo-derecha">Unidades de agua: H<sub>2</sub>O.</p>
<hr>
<div class="caja-div">
  <p>Esto es una caja creada con un <code>&lt;div&gt;</code> y estilos.</p>
</div>

D. Elementos Estructurales Semánticos

Estas etiquetas dan un significado claro a las diferentes secciones de una página.

<header>Define el encabezado de una página o una sección.
<nav>Contiene los enlaces de navegación principales.
<main>Especifica el contenido principal y único del documento.
<section>Define una sección temática dentro del documento.
<article>Representa contenido independiente y auto-contenido (ej: un post de blog).
<aside>Contenido complementario o lateral (ej: una barra lateral).
<footer>Define el pie de página de un documento o una sección.
estructura_blog_simple.html
<header>
  <h1>Blog de Ciencia</h1>
</header>
<nav>
  <!-- Enlaces de navegación aquí -->
</nav>
<main>
  <article>
    <h2>La Gravedad</h2>
    <p>Explicación sobre la gravedad...</p>
  </article>
</main>
<footer>
  <p>© 2025 Blog de Ciencia</p>
</footer>

4. Construyendo con HTML: Tareas Comunes 🛠️

Ahora que conoces las etiquetas básicas, veamos cómo combinarlas para crear elementos comunes en cualquier página web, con ejemplos orientados a la ciencia.

A. Creando Listas

Las listas son perfectas para organizar información.

<ul><ul> (Unordered List): Crea una lista desordenada (con viñetas).
<ol><ol> (Ordered List): Crea una lista ordenada (numerada o con letras).
<li><li> (List Item): Define cada elemento dentro de una lista <ul> o <ol>.
listas_ciencia.html (Ejemplo para Colab)
%%html
<h4>Componentes del Átomo (Desordenada):</h4>
<ul>
  <li>Protones</li>
  <li>Neutrones</li>
  <li>Electrones</li>
</ul>

<h4>Pasos Método Científico (Ordenada):</h4>
<ol>
  <li>Observación</li>
  <li>Hipótesis</li>
  <li>Experimentación</li>
  <li>Conclusión</li>
</ol>

B. Creando Tablas

Las tablas son ideales para mostrar datos estructurados en filas y columnas.

<table>Define la tabla.
<tr>Define una fila (Table Row).
<th>Define una celda de encabezado (Table Header).
<td>Define una celda de datos (Table Data).
<caption>Título de la tabla.
tabla_elementos_quimicos.html (Ejemplo para Colab)
%%html
<style>
  table.elementos, table.elementos th, table.elementos td {
    border: 1px solid black;
    border-collapse: collapse; /* Une los bordes */
    padding: 5px;
    text-align: left;
  }
  table.elementos th { background-color: #f2f2f2; }
</style>
<table class="elementos">
  <caption>Primeros Elementos Químicos</caption>
  <tr>
    <th>N° Atómico</th><th>Símbolo</th><th>Nombre</th>
  </tr>
  <tr>
    <td>1</td><td>H</td><td>Hidrógeno</td>
  </tr>
  <tr>
    <td>2</td><td>He</td><td>Helio</td>
  </tr>
</table>

C. Creando Enlaces (Hipervínculos)

Los enlaces conectan tus páginas con el resto de la web o con otras secciones de tu propio sitio.

enlaces_ejemplos.html
<p>Visita <a href="https://www.wikipedia.org" target="_blank">Wikipedia</a>.</p>
<p>Ir a la <a href="#seccion_formulas">sección de fórmulas</a>.</p>
<!-- ... más contenido ... -->
<h3 id="seccion_formulas">Fórmulas Matemáticas</h3>

D. Insertando Imágenes

imagen_planeta.html (Ejemplo para Colab)
%%html
<h4>Planeta Tierra:</h4>
<img src="https://placehold.co/300x300/007bff/ffffff?text=Tierra" 
     alt="Imagen del Planeta Tierra" width="150">

E. Insertando Video y Audio

video_ejemplo.html (Ejemplo para Colab)
%%html
<h4>Video Demostrativo (requiere URL válida):</h4>
<video width="320" height="240" controls>
  <source src="ruta_al_video.mp4" type="video/mp4">
  Tu navegador no soporta la etiqueta video.
</video>

F. Creando Marquesinas (Efecto de Desplazamiento)

La etiqueta <marquee> permite crear texto o imágenes que se desplazan horizontal o verticalmente. Aunque está **obsoleta** en HTML5 y no se recomienda para sitios web profesionales (CSS Animations es la alternativa moderna), puede ser una forma rápida y sencilla de añadir un efecto dinámico simple en entornos como Google Colab para destacar información.

<marquee><marquee>: Crea texto o contenido con desplazamiento. Atributos comunes: behavior (scroll, slide, alternate), direction (left, right, up, down), scrollamount (velocidad). ¡Usar con precaución y moderación!
marquesina_formulas.html (Ejemplo para Colab)
%%html
<marquee behavior="scroll" direction="left" scrollamount="5" 
         style="background-color: #e0f7fa; color: #00796b; padding: 10px; border-radius: 5px; font-weight: bold;">
  Fórmulas importantes: E=mc² (Einstein) | F=ma (Newton) | PV=nRT (Gases Ideales)
</marquee>

5. Cómo Crear tu Primera Página Web Sencilla 🏡

Crear una página web básica es más fácil de lo que piensas. Solo necesitas un editor de texto simple y un navegador web.

Paso 1: Abre tu Editor de Texto

Usa cualquier editor de texto (Bloc de Notas, VS Code, etc.).

Paso 2: Escribe el Código HTML Básico

Copia este esqueleto HTML5:

mi_primera_pagina.html
<!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</title>
  </head>
  <body>
    <h1>¡Hola, HTML!</h1>
    <p>Aprendiendo a crear mi primera página web.</p>
  </body>
</html>

Paso 3: Guarda el Archivo

Guarda como index.html (o similar) con extensión .html.

Paso 4: Abre en el Navegador

Haz doble clic en el archivo para verlo en tu navegador.

6. Estructura Semántica Detallada 📐

Usar etiquetas semánticas da significado a las secciones de tu página, mejorando accesibilidad y SEO.

<header> - Encabezado del Sitio
<nav> - Navegación Principal

<main> - Contenido Principal

<article>

Post de blog...

<aside> - Contenido Lateral

Info relacionada...

pagina_semantica_ejemplo.html
<!DOCTYPE html>
<html lang="es">
<head><title>Blog Científico</title></head>
<body>
  <header><h1>Mi Blog de Ciencia</h1></header>
  <nav> <!-- Enlaces de navegación --> </nav>
  <main>
    <article>
      <h2>Descubrimientos en Física Cuántica</h2>
      <p>Un resumen de los últimos avances...</p>
    </article>
  </main>
  <footer><p>Copyright © 2025</p></footer>
</body>
</html>

7. Etiquetas HTML5 Esenciales Avanzadas

HTML5 va más allá de la estructura básica, ofreciendo etiquetas para multimedia, gráficos y formularios interactivos.

🎥 Multimedia y Gráficos

<track>Pistas de texto (subtítulos, etc.) para <video> y <audio>.
<canvas>Lienzo para dibujar gráficos 2D/3D con JavaScript.
<svg>Gráficos vectoriales escalables (iconos, ilustraciones).
<picture>Imágenes responsivas con múltiples fuentes (art direction).

📝 Formularios HTML5 Avanzados

<input type="date">Selector de fecha nativo.
<input type="range">Control deslizante para rangos numéricos.
<datalist>Lista de opciones predefinidas para un input.
<progress>Barra de progreso para tareas.
<meter>Medidor de un valor escalar en un rango.

8. HTML5 en Google Colab con %%html 🚀

En Google Colab, puedes renderizar HTML, CSS y JavaScript directamente en celdas usando %%html. Esto es ideal para enriquecer tus notebooks de Python.

📊 Ejemplo: Mostrar Datos de Simulación Física

Colab Cell Output (Simulación)
%%html
<style>
  .simulacion-data { 
    border: 1px solid #ff6b35; padding: 10px; margin-top: 5px; 
    background-color: #fff0e9; border-radius: 5px;
  }
</style>
<h3>Resultados de Simulación de Proyectil</h3>
<div class="simulacion-data">
  <p><strong>Ángulo de lanzamiento:</strong> 45°</p>
  <p><strong>Velocidad inicial:</strong> 20 m/s</p>
  <p><strong>Alcance máximo:</strong> 40.82 m</p>
</div>

9. Sugerencias para tu Curso de Python 🧑‍🏫

Dado que tu curso se enfoca en Python aplicado a matemáticas y física, y deseas que tus estudiantes aprendan HTML, CSS y JavaScript, aquí tienes algunas ideas para integrar estos conocimientos de forma efectiva:

Al conectar estos aprendizajes con los temas de matemáticas y física que ya están explorando con Python, harás que la relevancia de estas tecnologías web sea mucho más evidente y motivadora para ellos. ¡Mucha suerte con tu curso!