Aprende a predecir qué regla CSS gana usando la especificidad, y aprovecha la herencia para escribir menos código.
Abrir esta lección en KodokonEscribes una regla, recargas la página… y no cambia nada. La mayoría de las veces, el culpable no es un error: es la cascada. Cuando varias reglas apuntan al mismo elemento, el navegador desempata en este orden: el origen de la regla (estilos del navegador, luego los tuyos), la especificidad del selector y, por último, el orden de aparición en el código. Dominar este mecanismo te ahorrará horas de depuración.
p {
color: gray;
}
.article p {
color: navy;
}La especificidad se calcula como una puntuación de tres partes: (ids, clases, elementos). #menu puntúa 1-0-0, .nav-link puntúa 0-1-0, a puntúa 0-0-1. Se compara de izquierda a derecha: #menu (1-0-0) supera a .nav .link .active (0-3-0), incluso con tres clases. Ejercicio mental: ¿cuál gana entre header nav a (0-0-3) y .main-link (0-1-0)? La clase, porque una clase supera a cualquier cantidad de elementos.
header nav a {
color: steelblue;
}
.main-link {
color: crimson;
}La herencia es tu aliada para escribir menos código: las propiedades relacionadas con el texto (color, font-family, font-size, line-height) se transmiten automáticamente a los descendientes. Las propiedades de caja (margin, padding, border, width) no se heredan; menos mal, de lo contrario cada hijo recibiría el borde de su padre. Así que define tu tipografía una sola vez, en el nivel más alto.
body {
font-family: "Inter", sans-serif;
color: #1f2937;
line-height: 1.6;
}#intro { color: red; } y luego .text { color: blue; }. ¿Qué color se aplica?