HTML y CSS: fundamentos del desarrollo web front-end
HTML (HyperText Markup Language) es el lenguaje de marcado que estructura el contenido de las páginas web. No es un lenguaje de programación: es declarativo y estático; carece de estructuras de control, variables o lógica, por lo que NO es dinámico (el dinamismo lo aportan JavaScript o el servidor). CSS (Cascading Style Sheets) es el lenguaje que diseña la interfaz gráfica de usuario: separa la presentación del contenido, controlando color, tipografía, maquetación y diseño visual.
Estructura del documento HTML
Según el HTML Living Standard de WHATWG, la declaración <!DOCTYPE html> debe aparecer en la primera línea, antes del elemento raíz <html>. Le siguen <head> (metadatos) y <body> (contenido visible).
Elementos semánticos de HTML5
HTML5 introdujo etiquetas semánticas que describen el significado del contenido, mejorando accesibilidad y SEO:
| Elemento | Representa |
|---|---|
<article> | Composición auto-contenida, distribuible y/o reutilizable de manera independiente (ej.: una entrada de blog, una noticia). Un menú desplegable NO es un uso válido. |
<section> | Sección genérica de un documento; sirve para estructurar semánticamente el documento cuando lo representa un agente de usuario. Un agente que representa el documento en voz puede usar <section> para exponer un índice de contenido por niveles y navegar rápidamente. |
<aside> | Contenido tangencial o indirectamente relacionado con el contenido principal (barras laterales, notas). Restricción: no debe ser descendiente de un elemento <address>. |
<progress> | Barra de progreso (nueva etiqueta HTML5). |
<audio> / <video> | Reproducen sonido y vídeo respectivamente. El elemento correcto para reproducir vídeo es video. |
Otras etiquetas nuevas de HTML5 incluyen <nav>, <header>, <footer> y <figure>. En cambio, elementos de presentación como <basefont> o <font> NO son soportados en HTML5 (se sustituyen por CSS).
Elementos de texto (text-level semantics)
El elemento <abbr> representa una abreviatura o acrónimo. Comparte nivel semántico (contenido de frase) con <em>, <strong>, <small> y <var>. Su comportamiento por defecto es presentarse en línea con el texto circundante; el estilo predeterminado varía entre navegadores (algunos lo muestran con un subrayado de puntos y otros no). Su atributo title ofrece una descripción completa de la abreviatura (se muestra como tooltip). El elemento <b> pone texto en negrita sin marcarlo como importante (a diferencia de <strong>).
Enlaces e imágenes
El hiperenlace se crea con la etiqueta <a> y su atributo href. Envolviendo una imagen con un ancla se convierte la imagen en enlace:
<a href="https://www.boe.es"><img src="foto.jpg" alt="Acceso al BOE"/></a>
Esto muestra la imagen foto.jpg como hipervínculo a la página indicada. El atributo alt proporciona texto alternativo (accesibilidad).
La etiqueta <base target="..."> define el destino por defecto de todos los enlaces de la página: target="_blank" abre el contenido en una nueva ventana o pestaña, mientras que target="_self" lo abre dentro del mismo marco en que se hizo clic.
Formatos de imagen recomendados para web: JPG/JPEG, PNG, GIF, SVG, WebP. BMP NO es recomendado (sin compresión eficiente).
Listas
-
<ol>crea listas ordenadas (numeradas);<ul>, listas no ordenadas; ambas usan<li>para cada ítem. -
<dl>define una lista de descripción (términos<dt>y sus descripciones<dd>).
<ol>
<li>Cafe</li>
<li>Té</li>
<li>Leche</li>
</ol>
Formularios: el elemento <input>
<input> crea controles interactivos de formulario para recibir datos del usuario. Su atributo type toma por defecto el valor text. Atributos y tipos relevantes:
-
type="file": cargar/subir archivos. -
type="checkbox": permite elegir más de un elemento a la vez. -
autofocus: hace que el control reciba el cursor (foco) al cargar la página. -
autocomplete="on": el navegador predice y autocompleta el valor según entradas previas del usuario. -
pattern: define una expresión regular que valida el texto introducido (p. ej. exigir entre 10 y 16 caracteres A-Z mayúsculas).
La etiqueta obsoleta keygen (generación de claves) admitía en su atributo keytype los valores rsa (por defecto), dsa y ec.
Almacenamiento local
HTML5 aporta Web Storage. El objeto window.localStorage guarda datos localmente en el navegador sin fecha de expiración (persisten al cerrar el navegador), frente a sessionStorage, que dura la sesión.
CSS: selectores y formas de inclusión
La función principal de CSS es diseñar la interfaz gráfica de usuario. Para dar estilo a todos los elementos con class="fondoGris", se usa en la hoja de estilos el selector de clase .fondoGris (punto + nombre de clase) y se modifican sus propiedades.
Existen tres formas de añadir CSS: inline (atributo style en el elemento), internal (bloque <style> en el <head>) y external (fichero .css enlazado con <link>).
Preprocesadores CSS: Sass, Less y Stylus amplían CSS con variables, anidamiento y mixins, compilándose a CSS estándar.
Bootstrap
Bootstrap es un framework de desarrollo web front-end cuya función es dar estilo y diseño a la página y facilitar la creación de aplicaciones web responsive de manera rápida y sencilla. Está construido con CSS y JavaScript. Se incluye enlazando su CSS por CDN, por ejemplo:
<link rel='stylesheet' href='https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css'>
Para la barra de navegación se emplea el elemento HTML <nav> con la clase .navbar.
Accesibilidad web (WAI-W3C)
La WAI (Web Accessibility Initiative) del W3C publica las pautas de accesibilidad:
-
WCAG (Web Content Accessibility Guidelines): accesibilidad del contenido. La versión 2.1 se organiza en directrices agrupadas bajo cuatro principios: Perceptible, Operable, Comprensible y Robusto (POUR).
-
ATAG (Authoring Tool Accessibility Guidelines): pautas de accesibilidad para las herramientas de autor.
-
UAAG: pautas para agentes de usuario (navegadores).
Existen herramientas de evaluación automática de accesibilidad (WAVE, aXe, TAW, Lighthouse). Un nombre inventado como "Webcr" NO es una herramienta de evaluación real.
Fuentes
-
HTML Living Standard, WHATWG — https://html.spec.whatwg.org/multipage/
-
HTML Standard, 4.5 Text-level semantics (abbr, em, strong, small, var) — https://html.spec.whatwg.org/multipage/text-level-semantics.html
-
MDN Web Docs,
<keygen>(keytype: rsa/dsa/ec) — https://developer.mozilla.org/en-US/docs/Web/HTML/Element/keygen -
MDN Web Docs,
<input>— https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input -
MDN Web Docs, Window.localStorage — https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage
-
W3C Cascading Style Sheets (CSS) — https://www.w3.org/Style/CSS/
-
W3C Web Accessibility Initiative (WAI): WCAG, ATAG — https://www.w3.org/WAI/standards-guidelines/
-
Bootstrap, documentación oficial — https://getbootstrap.com/