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
Las láminas amarillas son práctica: las haces tú en el ordenador. Las blancas son teoría: se explican proyectadas.
qué es el css
El HTML dice qué es cada cosa. El CSS dice cómo se ve. Nada más.
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.
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.
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.
elegir una dirección
Cuatro webs con exactamente el mismo contenido y distinto CSS.
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.
selectores y la caja
Cómo se escribe una regla, a qué afecta, y el modelo de caja.
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.
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.
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 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.
todo elemento es una caja
┌─────────── margin ────────────┐ │ ┌──────── border ─────────┐ │ │ │ ┌───── padding ─────┐ │ │ │ │ │ │ │ │ │ │ │ contenido │ │ │ │ │ │ │ │ │ │ │ └───────────────────┘ │ │ │ └─────────────────────────┘ │ └───────────────────────────────┘
De dentro hacia fuera:
padding— relleno por dentroborder— la líneamargin— 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;
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.
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.
* { box-sizing: border-box; }lo primerobackground-colorycolorenbodyfont-family: con remates o sin ellosfont-sizeyline-heightmax-width+margin: 0 auto
- Probar 17, 18 y 20px y quedarte con uno
- Probar 500, 640 y 900px de columna
paddingen elbody- Un color de acento en
a:hover
- Variables con
:rootyvar() - Una tipografía tuya con
@font-face clamp()en elh1- Modo oscuro con
prefers-color-scheme
Duplica la carpeta entera y ponle la fecha al nombre. Es la manera más simple de poder volver atrás.
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
pausa
Después: color, y colocar las cosas en la página.
tipografía
Qué letra, de qué tamaño, y a cuánta distancia una línea de otra.
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.
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.
color
Dos colores bien elegidos bastan. El tercero, solo para una cosa.
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.
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.
ejercicio 5 · titulares y menú
Segunda capa: la jerarquía de titulares, el menú en fila y separar los bloques.
capas 3, 4 y 5
- Tamaños distintos de
h1,h2yh3 display: flexygapen elnavtext-decoration: noneen el menú- Un
:hoverque se note margin-bottomyborder-bottomenarticle- La regla de
img:max-width: 100%
letter-spacingen lo que esté en mayúsculastext-transform: uppercaseen la ficha técnicaarticle:last-childsin borde- Una
classtuya para la ficha técnica text-alignen algún sitio concreto
gridconauto-fillpara la rejilla de obraobject-fityaspect-ratiopara igualar fotosposition: stickyen la cabecerabox-shadowyborder-radiustransitionen los enlaces- En casa: Flexbox Froggy y Grid Garden, dos juegos de navegador para que
flexygriddejen de dar miedo
No es memorizar la chuleta: es cambiar un número, guardar, recargar y mirar. Cuarenta veces. No se rompe nada.
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
composición
Ancho de columna, el menú en fila, y separar los bloques.
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.
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.
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.
que funcione en el móvil
Una sola media query, al final del archivo.
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.
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.
ejercicio 5 · el móvil, y libre
Última capa: la media query. Y después, tocad lo que queráis mientras resuelvo dudas.
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.
Duplica la carpeta entera y ponle la fecha al nombre. Es la manera más simple que existe de poder volver atrás.
@media (max-width: 600px)al final del archivo- Bajar el
font-sizedelbodyy delh1 - Reducir el
padding - Comprobarlo estrechando la ventana
- El
naven columna en móvil - La rejilla a una sola columna
- Esconder algo con
display: none - Trastear libremente lo que quieras
transitionytransformen las fotosfilter: grayscaleque se quita al pasar por encimaclamp()para no necesitar media queryscroll-snap, como las expos del muestrario
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
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-child | Solo el último de la serie. |
Texto
| color | Color de la letra. |
| background-color | Color de fondo. |
| font-family | Tipografía. Varias separadas por comas. |
| font-size | Tamaño. 18px. |
| font-weight | normal, bold, o un número. |
| font-style | italic para cursiva. |
| line-height | 1.5 o 1.6 para texto largo. |
| letter-spacing | Separación entre letras. 0.08em. |
| text-align | left, center, right. |
| text-transform | uppercase sin tocar el HTML. |
| text-decoration | none quita el subrayado. |
La caja
| padding: 24px | Relleno por dentro, los cuatro lados. |
| margin: 16px 0 | Aire por fuera: arriba/abajo, luego lados. |
| border-bottom | 1px solid #ccc. Grosor, tipo, color. |
| max-width: 640px | Ancho máximo. Evita líneas larguísimas. |
| margin: 0 auto | Centra un bloque que tenga max-width. |
Poner cosas en fila
| display: flex | Los hijos se colocan en fila. |
| gap: 20px | Separación entre ellos. |
| flex-wrap: wrap | Que salten de línea si no caben. |
| justify-content | Alineación horizontal dentro de la fila. |
Si algo no cambia
- ¿Has guardado?
- ¿Falta un punto y coma o una llave?
- ¿El selector apunta de verdad a ese elemento?
- Recarga forzada: Cmd+Shift+R o Ctrl+F5.
todo esto es css, sin nada de programación
:target.
solo css
ver las 26
El muestrario entero, ordenado por tipo.
índice
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.