
Selectores CSS
Domina los selectores CSS para aplicar estilos con precisión. Aprende a usar etiquetas, clases e IDs correctamente, optimizando la especificidad y mantenibilidad de tu código.
CSS no aplica estilos al azar. Domina la herencia, cascada y especificidad para resolver conflictos entre reglas y escribir código CSS priorizado, claro y escalable.
HTML define la estructura del documento mediante un árbol jerárquico llamado DOM (Document Object Model). Cada etiqueta representa un nodo con relaciones padre, hijo y descendiente. Esta estructura es la base sobre la cual CSS aplicará estilos de forma jerárquica.
<!-- <main> actúa como contenedor principal del contenido -->
<main class="layout">
<!-- <section> es un hijo directo de <main> -->
<section class="section">
<!-- <p> es hijo de <section> y descendiente de <main> -->
<p class="text">Texto dentro del árbol DOM</p>
</section>
</main>CSS aprovecha la estructura del DOM para heredar estilos tipográficos desde los elementos padres hacia los hijos. Propiedades como color y fuente fluyen hacia abajo en el árbol, mientras que las propiedades de caja no lo hacen.
/* Selector de etiqueta: aplica estilos al contenedor principal <main> */
.layout {
/* El color se heredará a los elementos hijos */
color: #333;
/* La fuente también se hereda */
font-family: Arial, sans-serif;
}
/* Selector de clase: apunta al <p class="text"> del HTML anterior */
.text {
/* No redefinimos color: se hereda desde .layout */
font-size: 16px;
}
La relación entre elementos HTML define qué tan específico puede ser un estilo. Un mismo elemento puede ser hijo directo de uno y descendiente de varios ancestros.
<!-- <div class="card"> es el contenedor padre del componente -->
<div class="card">
<!-- <h2> es hijo directo de .card -->
<h2>Título de la tarjeta</h2>
<!-- <span> es descendiente, no hijo directo -->
<p><span>Texto secundario</span></p>
</div>
El selector descendente permite aplicar estilos a todos los elementos contenidos dentro de otro, sin importar la profundidad. Es potente, pero debe usarse con cuidado para evitar efectos no deseados.
/* Selector descendente: apunta a todos los <span> dentro de .card */
.card span {
/* Cambia el color del texto secundario */
color: gray;
/* Se aplica incluso si el span no es hijo directo */
}HTML, estilos modernos con CSS y diseño rápido con Tailwind para lanzar tus primeros sitios responsivos y profesionales.10 clases en vivo con profesores expertosVer próximas fechasAlgunos componentes requieren una estructura clara donde solo los hijos inmediatos deben recibir estilos específicos. HTML define esta relación de forma explícita.
<!-- <nav> es el contenedor del menú -->
<nav class="menu">
<!-- Este <span> es hijo directo -->
<span>Inicio</span>
<!-- Este <div> crea un nivel intermedio -->
<div>
<span>Contacto</span>
</div>
</nav>
El selector de hijo directo permite aplicar estilos solo a los elementos inmediatos, evitando que los estilos se propaguen a niveles más profundos del DOM.
/* Selector de hijo directo: solo afecta a <span> hijos inmediatos de .menu */
.menu > span {
/* Resalta visualmente los ítems principales del menú */
font-weight: bold;
color: #000;
}Las clases en HTML permiten identificar componentes de forma semántica y reutilizable, evitando depender de la estructura del DOM.
<!-- Clase aplicada directamente al elemento a estilizar -->
<p class="highlight">Texto importante</p>
Cuando varias reglas compiten, CSS utiliza la especificidad para decidir cuál gana. Las clases tienen mayor peso que las etiquetas y permiten un control más predecible.
/* Selector de etiqueta: baja especificidad */
p {
color: red;
}
/* Selector de clase: mayor especificidad */
.highlight {
/* Este color sobrescribe al anterior */
color: blue;
}HTML, estilos modernos con CSS y diseño rápido con Tailwind para lanzar tus primeros sitios responsivos y profesionales.10 clases en vivo con profesores expertosVer próximas fechasUn HTML limpio y poco profundo facilita el mantenimiento y reduce la complejidad de los selectores CSS.
<!-- Estructura simple y semántica -->
<section class="content">
<h1>Título principal</h1>
<p>Contenido del artículo</p>
</section>
Una buena arquitectura CSS mantiene la especificidad baja, evita selectores largos y aprovecha la herencia natural del DOM.
/* Clase aplicada directamente al contenedor semántico */
.content {
/* Define tipografía base para todo el bloque */
font-family: system-ui, sans-serif;
line-height: 1.6;
}
/* Estilo específico para títulos dentro del contenido */
.content h1 {
font-size: 2rem;
}Cuando un mismo elemento HTML recibe varias reglas CSS con la misma especificidad, entra en juego la cascada. El HTML no cambia: lo que cambia es el orden de las reglas que lo afectan.
<!-- Párrafo con una sola clase -->
<p class="btn">Botón de acción</p>
Cuando dos reglas tienen igual selector e igual especificidad, la que está escrita más abajo en el archivo CSS es la que gana. Esto es la cascada.
/* Primera regla para .btn */
.btn {
background: red;
}
/* Segunda regla con la misma especificidad */
.btn {
background: green; /* Esta gana por estar al final */
}Los estilos inline se escriben directamente dentro del atributo style de una etiqueta HTML. Tienen una especificidad extremadamente alta y sobrescriben casi cualquier regla externa.
<!-- Estilo aplicado directamente en el HTML -->
<p style="color: red">Párrafo con estilo inline</p>
Aunque CSS intente aplicar estilos desde archivos externos, los estilos inline tienen prioridad. Esto dificulta el mantenimiento y rompe la arquitectura del proyecto.
/* Regla externa que intenta cambiar el color */
p {
color: blue;
}
/* Esta regla NO ganará frente a un style="color: red" */HTML, estilos modernos con CSS y diseño rápido con Tailwind para lanzar tus primeros sitios responsivos y profesionales.10 clases en vivo con profesores expertosVer próximas fechasUn mismo elemento HTML puede recibir estilos desde cuatro niveles distintos: etiqueta, clase, ID y estilos inline. El HTML no decide cuál gana, solo expone todos los puntos donde CSS puede actuar.
<!-- El mismo elemento tiene etiqueta, clase, ID y estilo inline -->
<p
id="main-text"
class="highlight"
style="color: purple">
Texto con múltiples niveles de estilo
</p>
Cuando varias reglas apuntan al mismo elemento y definen la misma propiedad, CSS sigue un orden estricto de prioridad. Esta es la regla que debés memorizar.
/* 4️⃣ Etiqueta → MENOR prioridad */
p {
color: black;
}
/* 3️⃣ Clase */
.highlight {
color: blue;
}
/* 2️⃣ ID */
#main-text {
color: red;
}
/* 1️⃣ Inline → MAYOR prioridad (definido en el HTML) */
/* style="color: purple" → este gana */
Cuando múltiples reglas afectan a un mismo elemento, algunos desarrolladores recurren a !important. Antes de verlo, observemos el HTML afectado.
<!-- Elemento afectado por múltiples reglas -->
<h1 class="title" id="main-title">Título principal</h1>
!important rompe la cascada y la especificidad. Una regla con !important se impone incluso sobre IDs y estilos mejor estructurados. Debe usarse solo como último recurso.
/* Regla con !important */
.title {
color: red !important;
}
/* Incluso un ID pierde contra !important */
#main-title {
color: blue;
}HTML, estilos modernos con CSS y diseño rápido con Tailwind para lanzar tus primeros sitios responsivos y profesionales.10 clases en vivo con profesores expertosVer próximas fechas
Domina los selectores CSS para aplicar estilos con precisión. Aprende a usar etiquetas, clases e IDs correctamente, optimizando la especificidad y mantenibilidad de tu código.

CSS no aplica estilos al azar. Domina la herencia, cascada y especificidad para resolver conflictos entre reglas y escribir código CSS priorizado, claro y escalable.

CSSControla la apariencia del texto en tu web con CSS. Aprende a manejar color, fuentes, tamaño, interlineado y espaciado para lograr una lectura clara y profesional en cualquier dispositivo.