Las diferencias entre HTML, CSS y JavaScript — lo que dibuja la capa de servidor Web

Este artículo forma parte del curso Fundamentos de informática, que construye desde cero los conocimientos prácticos de informática que necesitas como mínimo para programar y hacer vibe coding.
HTML fija qué hay en la pantalla, CSS cómo se ve y JavaScript cómo reacciona a lo que haces. Los diagramas muestran cómo los tres acaban siendo una sola pantalla.

Este artículo trata los tres que forman la capa de servidor Web: HTML, CSS y JavaScript.

Se escriben en lugares separados, index.html, style.css y script.js, porque lo que deciden es distinto.

Lo que decide cada uno de los tres archivos
index.htmlstyle.cssscript.jsQué haytipos y ordenCómo se vecolor/tamaño/lugarCómo reaccionaa lo que hacesPoner el botón«Reservar»Hacerlo un botónazul redondeadoAl pulsarlo,mostrar un textoLlega 1.ºSe busca 2.ºSe busca 2.º
La columna de la izquierda es el archivo, la del medio lo que decide y la de la derecha un ejemplo con el botón «Reservar». La del extremo derecho es el orden en que el navegador los lee. Las tres filas deciden cosas distintas sobre un mismo botón.

Los tres archivos no llegan juntos.

Los tres archivos los recibe el navegador, y el navegador es quien los carga y quien los ejecuta.

En HTML se escribe qué hay en la pantalla, con los tipos de partes y su orden

HTML (HyperText Markup Language: el lenguaje que describe qué hay en la pantalla con tipos de partes y su orden) se escribe en index.html.

Cada parte de la pantalla es un elemento (element), los nombres y ajustes que se ponen a un elemento son atributos (attribute), y los signos que marcan dónde empieza y dónde acaba un elemento son las etiquetas (tag).

El index.html del formulario de reservas está hecho de estos tres.

<form>
  <input type="date">
  <button type="button" id="reserve" class="action">Reservar</button>
  <p id="message"></p>
</form>

id y class son los nombres con los que CSS y JavaScript eligen después una parte.

Un id se usa una sola vez por página, mientras que un class se puede poner a cualquier número de elementos.

Los elementos se pueden anidar, y el elemento button está dentro del elemento form.

El anidamiento dentro de index.html
elemento html — toda la página
elemento head — no sale en la pantalla
  • El título de la página
  • Los nombres de archivo style.css y script.js
elemento body — sale en la pantalla
  • El encabezado «Reserva»
elemento form — el formulario de reservas
  • elemento input — el campo de la fecha
  • elemento button — el botón «Reservar»
  • elemento p — un hueco con el contenido vacío
El marco exterior es el elemento html de toda la página. El elemento head contiene información que no sale en la pantalla, y solo aparece lo que escribes dentro del elemento body.

En el elemento head se escriben el título de la página y los nombres de los archivos que usa, y en la pantalla solo sale lo que está dentro del elemento body.

En index.html solo se escribe qué hay

Lo único que escribes en index.html es qué hay en la pantalla.

Las etiquetas indican el tipo de cada parte, escribes el contenido y el orden en que se colocan, y el id y el class de la etiqueta de apertura son los nombres con los que otro archivo elige después esa parte.

CSS reúne en otro archivo cómo se ven los elementos

CSS (Cascading Style Sheets: el lenguaje que describe cómo se muestran los elementos de HTML, como reglas de color, tamaño y colocación) decide solo el aspecto.

style.css tiene esta forma.

.action {
  background-color: #2a6f97;
  color: white;
  border-radius: 8px;
}

El .action del principio indica a qué elementos se aplica.

Las tres líneas de dentro de las llaves se aplican a todos los elementos cuyo class es action.

Dentro de style.css se colocan muchas reglas como esta, una tras otra.

Las reglas colocadas dentro de style.css
style.css
Reglas de body
  • Color de fondo de toda la página
  • Tamaño del texto
Reglas de .action — elementos cuyo class es action
  • Color de fondo #2a6f97
  • Color del texto white
  • Redondeo de esquinas 8px
Reglas de #message — el elemento cuyo id es message
  • Color del texto
  • Margen superior
Dentro de un mismo archivo se colocan las reglas para cada cosa que se elige. Lo que hay dentro de cada par de llaves es el aspecto que se aplica a esa cosa.

Cuando una misma pantalla tiene tres botones, cuántos lugares tocas para cambiar el color depende de dónde escribiste el aspecto.

Dónde está escrito el aspectoLugares que tocar para cambiar el colorResultado en los tres botones
El atributo style de cada buttonTocar 3 lugaresSi olvidas uno, los colores no coinciden
.action en style.cssTocar 1 lugarLos tres cambian al mismo color
#reserve en style.cssTocar 1 lugarSolo cambia el que lleva el id

También puedes escribir el aspecto en el atributo style del elemento, pero entonces repites el mismo cambio tantas veces como elementos haya.

Si lo reúnes en style.css, solo tocas un lugar.

style.css elige por nombre y decide el aspecto

Lo único que hace style.css es enumerar qué parte se muestra de qué manera.

La parte se elige por el nombre de class o de id puesto en index.html, y no añade partes ni reescribe textos.

JavaScript reacciona a lo que haces y reescribe la pantalla

Una pantalla hecha solo con HTML y CSS no cambia de contenido después de mostrarse.

Mostrar un texto cuando se pulsa el botón es de lo que se encarga JavaScript en la capa de servidor Web.

script.js tiene esta forma.

const button = document.querySelector("#reserve");
button.addEventListener("click", () => {
  document.querySelector("#message").textContent = "Se envió tu reserva";
});

El document de la primera línea es el nombre que designa toda la página que cargó el navegador.

El #reserve que sigue es la forma de elegir el elemento cuyo id es reserve, y el signo delante del nombre indica si es un class o un id.

Los tres archivos están conectados por los nombres puestos en index.html.

Los nombres puestos en index.html y cómo se escriben al elegir
===class="action".actionReglas de aspectoen style.cssid="reserve"#reserveRegistro del clicen script.jsid="message"#messageA quién reescribescript.js
Las dos cajas unidas por una línea doble son el mismo nombre. A la izquierda, el nombre escrito en index.html; en el medio, cómo se escribe al elegir; a la derecha, dónde se usa esa forma.

El addEventListener de la segunda línea registra qué hacer cuando hay un clic.

El () => { } que sigue es la forma en la que escribes, dentro de las llaves, el código que se ejecuta al pulsar.

Un suceso como este clic, en el que el navegador le cuenta al programa lo que hizo el usuario, es un evento (event).

Los clics no son el único tipo de evento.

Sea cual sea la acción, quien se da cuenta es el navegador
Pulsar un botónEscribir textoen un campoEnviar formularioEl navegadorlo notaSe ejecuta elcódigo registradoclickinputsubmit
Las flechas de los tres de la izquierda se juntan en el centro. El texto de cada flecha es el nombre del evento, y el código de script.js es lo que se llama después.

Registras de antemano qué hacer en cada evento.

El cambio de color al poner el ratón encima viene del CSS, y el envío del formulario lo hace el navegador.

script.js también llega al navegador del usuario y su contenido se puede leer, así que no escribas en él valores que los demás no deben ver.

script.js se ejecuta cuando se le llama

Lo único que hace script.js es registrar de antemano: cuando se pulse esto, haz esto.

El código que llama el navegador al pulsar reescribe partes de la pantalla, pero el contenido de index.html no cambia y, como script.js llega al navegador del usuario, no escribes en él valores que los demás no deben ver.

El navegador crea el DOM desde el HTML, aplica el CSS y dibuja, y luego lo reescribe con JavaScript

El navegador no muestra el texto del HTML tal cual: monta el anidamiento de los elementos como datos.

Eso es el DOM (Document Object Model: datos que colocan los elementos manteniendo su anidamiento).

Lo que ves en la pantalla es un dibujo de este DOM.

El código que registró script.js también espera en la misma memoria del navegador que el DOM.

El DOM montado en la memoria del navegador
La memoria del navegador del usuario
DOM — anidamiento de elementos creado desde index.html
elemento body — la parte que sale en la pantalla
  • elemento button — su contenido es «Reservar»
  • elemento p — su contenido está vacío
  • Los dos mantienen su id y su class
Código registrado por script.js
  • Al hacer clic, reescribe el contenido de p
El mismo anidamiento que hay en index.html se monta dentro de la memoria del navegador. El código que registró script.js espera en esa misma memoria.

Los tres archivos llegan por separado y se juntan en un solo DOM dentro del navegador.

La página que ves en la pantalla es un dibujo de este DOM.

Aplicar el CSS al DOM, calcular posiciones y tamaños y dibujar es el renderizado (rendering).

Qué hace el navegador con el DOM en cada llegada y en cada pulsación
index.htmlllegastyle.cssllegaSe pulsael botónRecargarCrear el DOM desdeel anidamientoAplicar reglas alDOM y dibujarscript.jsreescribe el DOMRehacer el DOMdesde el HTMLAún no sedibuja nadaSale el botón azulSale un texto en pp queda vacío
De arriba abajo es el orden temporal. A la izquierda, lo que pasó; en el medio, lo que hace entonces el navegador; a la derecha, la pantalla después. Abajo del todo, lo que se reescribió desaparece.

Lo único que se reescribe es el DOM que está en la memoria del navegador.

El index.html que llegó y los archivos que están en el servidor público se quedan como estaban.

El contenido que quieres conservar se envía a la capa de servidor de aplicaciones y se guarda en la capa de base de datos.

Cómo se escribe JavaScript, y la práctica de ejecutarlo en el navegador, se ven en el Curso de introducción a JavaScript.

La pantalla es un dibujo del DOM

El navegador monta el anidamiento de las partes desde el index.html que recibió, les pone color y tamaño con las reglas de style.css y lo dibuja.

Lo que reescribe script.js es esa versión montada, así que al recargar se vuelve a montar desde los archivos que llegaron y el contenido reescrito desaparece.

QUIZ

Verificación de conocimientos

Responde cada pregunta una a una.

Pregunta 1¿Qué archivo tocas cuando quieres cambiar el color de fondo del botón de reserva?

Pregunta 2¿Con qué eligen CSS y JavaScript un elemento de HTML?

Pregunta 3Cuando JavaScript reescribe el texto de un botón, ¿qué es lo que cambia?