sesión 2 de 3

css:
lo que dice
cómo se ve

Tres horas. Al final de hoy tu web tiene el aspecto que tú decidas, y funciona en el móvil.

taller de web autogestionada · la escocesa · meowrhino.studio

3 horasel plan de hoy

Las láminas amarillas son práctica: las haces tú en el ordenador. Las blancas son teoría: se explican proyectadas.

teoría · lo explico yo 00:00 · 15 minutos

qué es el css

El HTML dice qué es cada cosa. El CSS dice cómo se ve. Nada más.

00:00el concepto

una lista de decisiones visuales

CSS son las siglas de Cascading Style Sheets: hojas de estilo en cascada. Tampoco es un lenguaje de programación. Es una lista de decisiones: los párrafos así de grandes, el fondo de este color, el menú en fila.

La palabra importante es cascada: las reglas se leen de arriba abajo y las de abajo pisan a las de arriba. Por eso el orden dentro del archivo importa, y por eso la media query del móvil va siempre al final.

el momento de hoy

Borra en directo la línea <link rel="stylesheet"> del head y recarga. La página se queda desnuda: todo el contenido sigue ahí, sin ninguna decisión visual encima.

Eso es exactamente la diferencia entre las dos cosas, y verlo vale más que diez minutos de explicación.

00:00

cómo se enchufa

Una sola línea en el <head> de cada página:

<link rel="stylesheet" href="estilo.css">

Un solo archivo estilo.css para toda la web. Cambias ahí el tamaño de letra y cambia en las cinco páginas a la vez. Ese es todo el truco.

práctica · lo hacéis vosotras 00:15 · 10 minutos

elegir una dirección

Cuatro webs con exactamente el mismo contenido y distinto CSS.

ejercicio 410 min

el mismo html, cuatro webs

Lo único que cambia entre estas cuatro es el archivo estilo.css. El contenido no se toca ni una coma.

Para cambiar de estilo se toca una sola línea del head. Ver cuatro-estilos/COMO-CAMBIAR-DE-ESTILO.md.

Contesta en una línea cada una

  • ¿Qué es lo primero que quieres que vea alguien que entra?
  • ¿Tu web es más de mirar o más de leer?
  • ¿Fondo claro u oscuro?

No vas a copiar el ejemplo: vas a construir el tuyo, pero con una dirección tomada. Sirve para no quedarte en blanco al abrir estilo.css.

teoría · lo explico yo 00:25 · 35 minutos

selectores y la caja

Cómo se escribe una regla, a qué afecta, y el modelo de caja.

00:25

cómo se escribe una regla

body {
  background-color: #FBFAF7;
  font-size: 18px;
}

El selector (body) dice a qué afecta. Dentro van las propiedades y sus valores.

punto y coma al final de cada línea

Si te lo olvidas, esa línea deja de funcionar y a veces la siguiente también. Y no avisa nadie: no sale ningún error, simplemente no pasa nada.

00:25

a qué afecta cada selector

p { }                    todos los párrafos
header, main { }         los dos a la vez
nav a { }                los enlaces dentro de nav
a:hover { }              cuando el ratón está encima
article:last-child { }   solo el último de la serie
la confusión más común

La coma es «y también». El espacio es «dentro de». header, a son las cabeceras y todos los enlaces; header a son solo los enlaces de dentro de la cabecera. Son cosas muy distintas.

00:25el 70% de las dudas

todo elemento es una caja

┌─────────── margin ────────────┐
│  ┌──────── border ─────────┐  │
│  │  ┌───── padding ─────┐  │  │
│  │  │                   │  │  │
│  │  │     contenido     │  │  │
│  │  │                   │  │  │
│  │  └───────────────────┘  │  │
│  └─────────────────────────┘  │
└───────────────────────────────┘

De dentro hacia fuera:

  • padding — relleno por dentro
  • border — la línea
  • margin — aire por fuera

Míralo en el inspector, que lo pinta en colores encima de la página real.

padding: 24px;             los cuatro lados
margin: 16px 0;           arriba/abajo, luego lados
margin: 0 0 16px 0;        arriba, derecha, abajo, izquierda
border-bottom: 1px solid #ccc;
práctica · lo hacéis vosotras 00:55 · 25 minutos

ejercicio 5 · la base y la columna

Primera capa de vuestro CSS: fondo, tinta, tipografía base y el ancho de la columna. Sobre vuestra propia web.

ejercicio 525 min

capas 1 y 2

Trabaja siempre sobre estilo.css. Este orden importa: si empiezas por los detalles, luego cambias la base y se descuadra todo.

hay que
  • * { box-sizing: border-box; } lo primero
  • background-color y color en body
  • font-family: con remates o sin ellos
  • font-size y line-height
  • max-width + margin: 0 auto
puedes
  • Probar 17, 18 y 20px y quedarte con uno
  • Probar 500, 640 y 900px de columna
  • padding en el body
  • Un color de acento en a:hover
podrías
  • Variables con :root y var()
  • Una tipografía tuya con @font-face
  • clamp() en el h1
  • Modo oscuro con prefers-color-scheme
antes de cambios grandes

Duplica la carpeta entera y ponle la fecha al nombre. Es la manera más simple de poder volver atrás.

ejercicio 5 · capas 1 y 2lo que puedes usar ahora

caja de herramientas · base y color

El fondo, la tinta, la letra y el ancho de la columna. Con esto ya se decide el 80% del carácter de una web.

esenciales

  • box-sizing: border-box
  • background-color
  • color
  • font-family
  • font-size
  • line-height
  • font-weight
  • font-style
  • max-width
  • margin: 0 auto
  • padding
  • #hex
  • rgb()
  • nombres de color

avanzadas

  • :root { --tinta: … }
  • var(--tinta)
  • @font-face
  • clamp()
  • hsl()
  • rgb(0 0 0 / 40%)
  • opacity
  • linear-gradient()
  • prefers-color-scheme
  • background-image
  • mix-blend-mode

cada una explicada, con todas sus opciones, en el chuletón

01:25 · 15 minutos

pausa

Después: color, y colocar las cosas en la página.

teoría · lo explico yo 01:00 · 25 minutos

tipografía

Qué letra, de qué tamaño, y a cuánta distancia una línea de otra.

01:00

las propiedades de la letra

font-family: "Iowan Old Style", Georgia, serif;
font-size: 18px;
font-weight: bold;
line-height: 1.6;
letter-spacing: 0.08em;
text-transform: uppercase;

En font-family pones varias separadas por comas: el navegador usa la primera que encuentre instalada. Por eso serif va al final, como comodín.

line-height de 1.5 a 1.6 para texto largo. Es el ajuste que más cambia la sensación de una web y el que más se olvida.

tipografías descargadas

Puedes descargar la tipografía y servirla desde tu carpeta en vez de llamar a Google Fonts en cada visita. Carga más rápido y no le cuentas a nadie quién visita tu web.

teoría · lo explico yo 01:40 · 20 minutos

color

Dos colores bien elegidos bastan. El tercero, solo para una cosa.

01:40

dos colores y un acento

body {
  background-color: #FBFAF7;
  color: #12233A;
}

a:hover {
  background-color: #F2E94E;
}

Un fondo, una tinta, y un acento que aparece poco. Con eso está montada casi cualquier web de artista.

Negro puro sobre blanco puro cansa la vista. Baja un poco los dos: un blanco con algo de calidez y un negro que en realidad sea azul muy oscuro.

contraste

Si el texto no se lee con el móvil al sol, no se lee. Gris claro sobre blanco es la manera más común de hacer una web bonita e ilegible.

Compruébalo en webaim.org/resources/contrastchecker: busca 4.5 o más para el texto normal.

práctica · lo hacéis vosotras 02:05 · 20 minutos

ejercicio 5 · titulares y menú

Segunda capa: la jerarquía de titulares, el menú en fila y separar los bloques.

ejercicio 520 min

capas 3, 4 y 5

hay que
  • Tamaños distintos de h1, h2 y h3
  • display: flex y gap en el nav
  • text-decoration: none en el menú
  • Un :hover que se note
  • margin-bottom y border-bottom en article
  • La regla de img: max-width: 100%
puedes
  • letter-spacing en lo que esté en mayúsculas
  • text-transform: uppercase en la ficha técnica
  • article:last-child sin borde
  • Una class tuya para la ficha técnica
  • text-align en algún sitio concreto
podrías
  • grid con auto-fill para la rejilla de obra
  • object-fit y aspect-ratio para igualar fotos
  • position: sticky en la cabecera
  • box-shadow y border-radius
  • transition en los enlaces
  • En casa: Flexbox Froggy y Grid Garden, dos juegos de navegador para que flex y grid dejen de dar miedo
la forma de aprender esto

No es memorizar la chuleta: es cambiar un número, guardar, recargar y mirar. Cuarenta veces. No se rompe nada.

ejercicio 5 · capas 3, 4 y 5lo que puedes usar ahora

caja de herramientas · caja y composición

Jerarquía, el menú en fila y separar los bloques. Aquí es donde una web deja de parecer un documento de Word.

esenciales

  • text-transform
  • letter-spacing
  • text-align
  • text-decoration
  • display: flex
  • gap
  • flex-wrap
  • justify-content
  • align-items
  • margin
  • padding
  • border-bottom
  • border
  • max-width
  • :hover
  • img { max-width: 100% }

avanzadas

  • display: grid
  • repeat(auto-fill, minmax())
  • object-fit: cover
  • aspect-ratio
  • position: sticky
  • z-index
  • box-shadow
  • border-radius
  • overflow
  • :first-child
  • :last-child
  • :nth-child()
  • columns
  • transition

cada una explicada, con todas sus opciones, en el chuletón

teoría · lo explico yo 02:00 · 20 minutos

composición

Ancho de columna, el menú en fila, y separar los bloques.

02:00

una columna que se lee

header, main, footer {
  max-width: 640px;
  margin: 0 auto;
}

max-width pone un tope al ancho. margin: 0 auto reparte el espacio sobrante a los dos lados por igual, así que centra el bloque.

por qué importa

Sin esto, en una pantalla ancha las líneas se hacen larguísimas y al saltar de renglón te pierdes. Entre 60 y 80 caracteres por línea es lo cómodo.

02:00

el menú en fila, y las imágenes

nav {
  display: flex;       pone los hijos en fila
  gap: 20px;            separación entre ellos
  flex-wrap: wrap;     que salten de línea si no caben
}

Y las imágenes, siempre, sin excepción:

img {
  max-width: 100%;
  height: auto;
  display: block;
}

Así una foto enorme nunca se sale de la pantalla, y no se deforma.

teoría · lo explico yo 02:20 · 15 minutos

que funcione en el móvil

Una sola media query, al final del archivo.

02:20

reglas solo para pantallas pequeñas

@media (max-width: 600px) {
  body { font-size: 17px; padding: 16px; }
  h1   { font-size: 27px; }
}

Lo de dentro solo se aplica si la pantalla mide 600px o menos. Y pisa a lo de arriba: por eso va siempre al final del archivo. Eso es la cascada.

compruébalo estrechando la ventana

Más directo que el modo dispositivo del inspector, y no hay que explicar nada. Arrastra el borde del navegador hasta que quede como un móvil.

Es donde se ve la web casi siempre. Si te falta tiempo hoy, salta la práctica libre pero no saltes esto.

práctica · lo hacéis vosotras 02:35 · 25 minutos

ejercicio 5 · el móvil, y libre

Última capa: la media query. Y después, tocad lo que queráis mientras resuelvo dudas.

ejercicio 5a lo largo de la sesión

capa 6 · el móvil

Trabaja siempre sobre estilo.css. Ve en este orden: si empiezas por los detalles, luego cambias la base y se descuadra todo.

antes de cambios grandes

Duplica la carpeta entera y ponle la fecha al nombre. Es la manera más simple que existe de poder volver atrás.

hay que
  • @media (max-width: 600px) al final del archivo
  • Bajar el font-size del body y del h1
  • Reducir el padding
  • Comprobarlo estrechando la ventana
puedes
  • El nav en columna en móvil
  • La rejilla a una sola columna
  • Esconder algo con display: none
  • Trastear libremente lo que quieras
podrías
  • transition y transform en las fotos
  • filter: grayscale que se quita al pasar por encima
  • clamp() para no necesitar media query
  • scroll-snap, como las expos del muestrario
ejercicio 5 · capa 6lo que puedes usar ahora

caja de herramientas · móvil y efectos

Que se vea bien en el móvil es obligatorio. Lo de la derecha es el postre, y hay mucho.

esenciales

  • @media (max-width: 600px)
  • meta viewport
  • px
  • %
  • rem
  • em
  • vw
  • vh
  • display: none
  • flex-direction: column
  • :hover
  • transition

avanzadas

  • clamp()
  • svh
  • transform: scale()
  • transform: rotate()
  • filter: grayscale()
  • filter: blur()
  • filter: invert()
  • @keyframes
  • animation
  • cursor
  • scroll-snap-type
  • prefers-reduced-motion

cada una explicada, con todas sus opciones, en el chuletón

para llevarse para llevarse

chuleta de css

Todo lo de hoy en una hoja.

chuleta · css

Selectores

p { }Todos los párrafos.
header, main { }Los dos a la vez. La coma es «y también».
nav a { }Los enlaces que estén dentro de nav.
a:hover { }Cuando el ratón está encima.
article:last-childSolo el último de la serie.

Texto

colorColor de la letra.
background-colorColor de fondo.
font-familyTipografía. Varias separadas por comas.
font-sizeTamaño. 18px.
font-weightnormal, bold, o un número.
font-styleitalic para cursiva.
line-height1.5 o 1.6 para texto largo.
letter-spacingSeparación entre letras. 0.08em.
text-alignleft, center, right.
text-transformuppercase sin tocar el HTML.
text-decorationnone quita el subrayado.

La caja

padding: 24pxRelleno por dentro, los cuatro lados.
margin: 16px 0Aire por fuera: arriba/abajo, luego lados.
border-bottom1px solid #ccc. Grosor, tipo, color.
max-width: 640pxAncho máximo. Evita líneas larguísimas.
margin: 0 autoCentra un bloque que tenga max-width.

Poner cosas en fila

display: flexLos hijos se colocan en fila.
gap: 20pxSeparación entre ellos.
flex-wrap: wrapQue salten de línea si no caben.
justify-contentAlineación horizontal dentro de la fila.

Si algo no cambia

  1. ¿Has guardado?
  2. ¿Falta un punto y coma o una llave?
  3. ¿El selector apunta de verdad a ese elemento?
  4. Recarga forzada: Cmd+Shift+R o Ctrl+F5.
muestrariohasta dónde llega el css solo

todo esto es css, sin nada de programación

esta presentación también

Lo que estás viendo proyectado es una web hecha a mano, con las mismas cosas que hemos dado hoy. El modo diapositiva es scroll-snap, igual que la expo vertical.

para la próxima sesión

  • Trae la carpeta terminada, con las páginas que quieras publicar.
  • Trae tu cuenta de GitHub ya creada.
  • Y la contraseña apuntada en un papel. En serio: cada edición hay alguien que no puede entrar.

La próxima la publicamos de verdad, entendiendo cada paso. Sales de la sesión 3 sabiendo actualizarla tú sola.