Tres trabajos en una sola página
Una cafetería tiene una página con el menú del día: una lista de platos, un cuadro para buscar uno y un botón para un tema oscuro. Alguien tiene que decir qué hay en la página, alguien cómo se ve y alguien qué hace cuando se pulsa un botón. En la web son tres lenguajes, cada uno con su trabajo.
Al terminar esta lección
Nota
Puedo decir qué hacen HTML, CSS y JavaScript en una página web, y comprobar una página con un script corto.
Palabras clave
- HTML: el lenguaje que dice qué hay en una página: títulos, listas, enlaces, formularios.
- Elemento: una parte de una página, escrita como una etiqueta, por ejemplo
h2oli. - CSS: el lenguaje que dice cómo se ven los elementos.
- Selector: la parte de una regla CSS que dice para qué elementos vale.
- Declaración: un ajuste dentro de una regla, como
margin: 1rem. - Modelo de caja: cada elemento es una caja con contenido, relleno, borde y margen.
- DOM: la página tal como la guarda el navegador, que JavaScript puede leer y cambiar.
- Evento: algo que ocurre en la página, como un clic.
Para empezar: lo que ya sabes
Nota
Responde en tu cabeza. 1. ¿Sobre qué haces clic para pasar de una página web a otra? 2. Nombra dos cosas de un texto en una página que podrías cambiar, como su color. 3. ¿Qué esperas que pase cuando pulsas un botón de una página? Respuestas: un enlace; su tamaño, su tipo de letra o su color; algo cambia o aparece un mensaje.
Antes de empezar
Nota
Pulsa Iniciar el laboratorio en la barra de arriba de la lección y espera a que diga que está en marcha. Hay un solo contenedor, jupyter, y el terminal llega a su Python con docker exec jupyter, que ejecuta una orden dentro de él. Tiene dos enlaces. JupyterLab, el primero, es el editor, en el puerto 8888. Preview (la vista previa), el segundo, es la propia página, en el puerto 8000. Cada botón Ejecutar de abajo escribe su orden en el terminal de tu laboratorio, una detrás de otra en la misma sesión. Para verlas o escribir las tuyas, pulsa Abrir terminal (pestaña nueva) en la barra.
Una página son unos pocos archivos sencillos
ls site lista los tres archivos de la página: index.html para lo que hay en ella, style.css para cómo se ve y app.js para lo que hace. La segunda orden imprime sus tamaños: 1373, 1125 y 1093 bytes, 3591 en total. Eso es una página entera. Abre Preview para verla y JupyterLab para leer los archivos.
docker exec jupyter ls siteSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
docker exec jupyter python3 steps/sizes.pySe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
El HTML da estructura a la página
El script lee index.html como empieza a hacerlo un navegador, etiqueta por etiqueta. Cuenta 36 etiquetas en total. a y li aparecen cinco veces cada una y section tres. El segundo script imprime solo los títulos, que son el esquema de la página: un h1, Lunch menu, y debajo tres títulos h2. Los títulos no sirven para agrandar el texto. Son la manera en que la página dice de qué trata, y lo que un lector de pantalla usa para saltar de un sitio a otro.
docker exec jupyter python3 steps/tags.pySe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
docker exec jupyter python3 steps/outline.pySe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Comprueba
Consejo
¿Cuántos títulos h2 tiene la página y cuál es el h1? Respuesta: tres, y el h1 es Lunch menu.
Las reglas CSS dicen cómo se ve, y el modelo de caja cómo se dimensiona
Una regla CSS es un selector y unas declaraciones entre llaves. El script encuentra 17 reglas y 39 declaraciones, y el ajuste más usado es padding, seis veces. Cada elemento es una caja: su contenido, luego el relleno por dentro, luego un borde, luego el margen por fuera. La regla de .dish fija padding, margin-bottom, border y border-radius, por eso cada plato es una tarjeta con borde y espacio alrededor. Cuando dos reglas llegan a un mismo elemento, gana el selector más específico, y entre iguales la última. Eso es la cascada. body.dark es más específico que body, así que una página oscura cambia los colores. Cambia un valor en style.css, guarda, recarga Preview y vuelve a ejecutar el script.
docker exec jupyter python3 steps/css.pySe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
JavaScript reacciona a los eventos cambiando el DOM
El script lee app.js para ver qué define y qué espera. Tiene dos funciones, filterDishes y toggleTheme, y tres oyentes: submit e input en el cuadro de búsqueda y click en el botón del tema. Cuando ocurre uno de esos eventos, la función cambia el DOM, la página que guarda el navegador. Pruébalo en Preview: escribe tom en el cuadro y la lista se reduce a los dos platos que contienen esas letras; luego pulsa Dark theme. No hay ninguna biblioteca ni llamada de red, solo lo que el navegador ya tiene.
docker exec jupyter python3 steps/js.pySe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Comprobar una página es parte de hacerla
Una página que se ve bien puede estar rota. El primer script lista cada enlace y si lleva a algún sitio: tres enlaces se quedan en la página y cada uno encuentra su destino, uno va a un archivo de aquí y otro a otro sitio. El segundo pide la página al servidor de Preview, como hace un navegador, e imprime el estado 200, el título Lunch menu y que style.css vuelve como text/css. Un estado 404 significaría que falta un archivo que la página pide.
docker exec jupyter python3 steps/links.pySe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
docker exec jupyter python3 steps/serve.pySe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Un error frecuente
Advertencia
Mucha gente piensa que Preview cambia en cuanto escribe. No es así. Muestra los archivos guardados: guarda en el editor y luego recarga Preview. Si la página parece igual, comprueba las dos cosas. El navegador también puede conservar una copia antigua de un archivo, así que a veces ayuda una recarga forzada.
Las mismas comprobaciones en un cuaderno
Abre JupyterLab desde la barra y haz doble clic en start.ipynb. Sus celdas leen los mismos archivos en Python: cuentan las etiquetas, listan las reglas CSS y piden la página a Preview. Haz clic en una celda y pulsa Mayús y Intro para ejecutarla. La última celda es para tu propio cambio: edita style.css, guarda y vuelve a contar las reglas.
Comprobación final
Consejo
Responde sin mirar atrás. 1. ¿Qué lenguaje dice qué hay en una página, cuál dice cómo se ve y cuál dice qué hace? 2. ¿Cuáles son las cuatro capas del modelo de caja, de dentro afuera? 3. ¿Qué decide la cascada? 4. ¿Por qué Preview no cambia cuando solo escribes en el editor? Respuestas: HTML, CSS, JavaScript; contenido, relleno, borde, margen; qué regla gana cuando dos llegan a un mismo elemento; Preview muestra los archivos guardados, así que hay que guardar y recargar.
Para el profesorado
Consejo
Esta lección es un pequeño ejemplo de una lección practicada en un laboratorio: los pasos y los botones Ejecutar son la lección, y el laboratorio es la copia propia de cada alumno. El laboratorio es un solo servicio, JupyterLab con una vista previa en directo de una página pequeña, y nada de lo que hay aquí se corrige solo: el alumno entrega su propia versión de los tres archivos de site, descargados desde JupyterLab, y una frase sobre un cambio y lo que hizo. Ideas clave: 1. HTML es la estructura, CSS el estilo y JavaScript el comportamiento. 2. Cada elemento es una caja y la cascada decide qué regla gana. 3. Una página se comprueba, no solo se mira. Error frecuente: esperar que Preview cambie antes de guardar el archivo. Material: el laboratorio y un navegador. Consejo: pida al alumnado que prediga qué hará un cambio antes de recargar. La página y los scripts se escriben a partir de un texto fijo, así que todas las copias dan los mismos números. Cópiela en su propio módulo y modifíquela, o cree una desde cero con el menú Laboratorio del constructor de lecciones.