¿Te resulta más fácil leer con fondo crema, un tono de color, más contraste o un texto más grande? Elige tus colores y tu texto una sola vez, para todas las páginas.

Lección gratuita

Qué regla CSS gana: la cascada

Después de esta lección: Puedo predecir qué regla CSS gana cuando dos reglas afectan al mismo elemento.

Lección de 60 min2 comandosLaboratorio de web en el navegador: HTML, CSS y JavaScript con vista previa en directo

Dos reglas mandan a la vez

CSS es el lenguaje que dice cómo se ve cada elemento de una página. Cuando dos reglas dan órdenes distintas al mismo elemento, el navegador elige una, y saber cuál gana te ahorra horas de pruebas.

Sus siglas vienen de Cascading Style Sheets, hojas de estilo en cascada. Imagina que una regla pinta de gris todos los párrafos y otra pinta de naranja los avisos. Un aviso es un párrafo: ¿de qué color sale?

Al terminar esta lección

Nota

Puedo predecir qué regla CSS gana cuando dos reglas afectan al mismo elemento.

Palabras clave

PalabraQué significaEjemplo
Reglaun selector con sus declaraciones entre llaves
Selectorla parte que dice a qué elementos se aplica la regla.plato
Declaraciónun ajuste de la regla: una propiedad y su valormargin: 1rem
Especificidadel peso de un selector cuando dos reglas chocan
Cascadael orden de decisión que elige qué regla gana
Herenciaun hijo recibe algunos valores de su padre

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Una regla CSS tiene un selector y declaraciones

Una regla empieza con un selector, que dice a qué elementos habla. Después, entre llaves, van las declaraciones. Cada una es una propiedad, dos puntos, un valor y un punto y coma.

Hay tres selectores básicos. Uno por etiqueta, como h2. Uno por clase, que empieza con punto, como .plato. Y uno por identificador, que empieza con almohadilla, como #buscar.

Tres reglas con tres tipos de selector

Código: web
h2 {
  color: #b3402a;
  margin-bottom: 0.5rem;
}

.plato.vegetariano {
  border-left-width: 8px;
}

#buscar {
  padding: 0.4rem;
}

La especificidad decide entre dos reglas

Si dos reglas chocan, gana la de selector más específico. Se cuenta en tres columnas, por este orden de importancia: identificadores, clases y etiquetas.

Se comparan columna a columna, de izquierda a derecha. Un solo identificador gana a cualquier número de clases. Si hay empate, gana la regla que va más tarde en el archivo.

Ejemplo resuelto: el peso de seis selectores

SelectorIdentificadoresClasesEtiquetas
p001
.aviso010
p.aviso011
nav a002
#menu100
#menu .plato a111

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Tres reglas para un mismo párrafo

Código: web
p {
  color: gray;
}
.aviso {
  color: orange;
}
p.aviso {
  color: red;
}

<p class="aviso">Hoy no hay paella</p>

Un error frecuente

Advertencia

Mucha gente cree que siempre gana la última regla del archivo. Solo gana la última cuando el peso es el mismo. Una regla anterior con un selector más específico gana a una posterior más simple. Cuenta primero los pesos y mira el orden después.

Algunos valores pasan de padre a hijo

La herencia hace que un elemento reciba de su padre algunas propiedades, como el color del texto o la fuente. No hace falta escribirlas en cada elemento.

Otras no se heredan, como el borde o el margen. Si cada hijo heredara el borde de su padre, la página sería un cuadro dentro de otro cuadro.

Qué propiedades pasan de padre a hijo

PropiedadSe heredaPor qué
colorSíTodo el texto de un bloque suele tener el mismo color
font-familySíUna página usa una fuente en casi todo
borderNoCada elemento decide si lleva borde
marginNoEl espacio exterior es asunto de cada caja

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Lee las reglas de la página del laboratorio

La página del laboratorio tiene su hoja de estilos en site/style.css. El primer script cuenta sus reglas y sus declaraciones y dice qué propiedad se usa más. Los textos que escribe están en inglés: declarations son las declaraciones.

Verás 17 reglas y 39 declaraciones. Después, un grep muestra las líneas donde aparece dish, que quiere decir plato. La tarjeta de un plato vegetariano tiene el borde izquierdo más grueso porque .dish.vegetarian pesa más que .dish.

Contar las reglas de la hoja de estilos

Comando
docker exec jupyter python3 steps/css.py

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Ver las reglas que tocan a los platos

Comando
docker exec jupyter grep -n "dish" site/style.css

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Sobre este laboratorio y su código: Laboratorio de web en el navegador: HTML, CSS y JavaScript con vista previa en directo

¿Enseñas a una clase? Asigna este módulo a tus alumnos con guía del profesor, tareas con corrección automática y un laboratorio para cada alumno.