ARQUITECTURA CSS

Jerarquía CSS: Herencia, Cascada y Especificidad

Cómo el navegador decide qué estilo gana

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.

1

HTML: El DOM como Árbol de Estructura

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>
2

CSS: Herencia de Estilos en el Árbol DOM

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;
}
Ejemplo visual de herencia de estilos en el DOM
El color y la fuente se heredan desde el elemento padre .layout al elemento hijo .text.
3

HTML: Estructura Padre, Hijo y Descendiente

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>
Relación entre elementos padre, hijo y descendiente en HTML
La profundidad del DOM define cómo los selectores CSS alcanzan a los elementos.
4

CSS: Selectores Descendentes

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 */
}
Publicidad
html-css-online-course-responsive-web-design-from-scratch
Aprendé desde cero con clases 100% en vivo, grupos súper reducidos y acompañamiento real. Todo el contenido está diseñado y dictado por el creador de la plataforma, para que aprendas de verdad, sin videos fríos ni cursos masivos.

Curso de HTML y CSS para Frontend

Dominá las bases de la programación frontend: estructura con 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 expertos
Precio $150000 ARG Oferta especial
Ver próximas fechas
5

HTML: Hijos Directos en la Estructura

Algunos 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>
Ejemplo de estructura HTML con hijos directos e indirectos
No todos los elementos dentro de un contenedor son hijos directos.
6

CSS: Selector de Hijo Directo (>)

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;
}
7

HTML: Clases para Componentes Reutilizables

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>
Uso de clases HTML para componentes reutilizables
Las clases desacoplan el diseño de la estructura del documento.
8

CSS: Especificidad y Prioridad de Clases

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;
}
Publicidad
html-css-online-course-responsive-web-design-from-scratch
Aprendé desde cero con clases 100% en vivo, grupos súper reducidos y acompañamiento real. Todo el contenido está diseñado y dictado por el creador de la plataforma, para que aprendas de verdad, sin videos fríos ni cursos masivos.

Curso de HTML y CSS para Frontend

Dominá las bases de la programación frontend: estructura con 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 expertos
Precio $150000 ARG Oferta especial
Ver próximas fechas
9

HTML: Estructura Simple y Semántica

Un 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>
Ejemplo de estructura HTML semántica y simple
Menos niveles de anidamiento producen CSS más claro y predecible.
10

CSS: Buenas Prácticas de Arquitectura

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;
}
11

HTML: Un Mismo Elemento, Múltiples Reglas

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>
Elemento HTML con una clase afectada por múltiples reglas CSS
El HTML es el mismo: la diferencia la define el orden de las reglas CSS.
12

CSS: La Cascada y el Orden de Declaración

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 */
}
13

HTML: Estilos Inline en la Etiqueta

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>
Ejemplo de estilo inline aplicado directamente en HTML
El estilo inline vive dentro del HTML y rompe la separación entre estructura y diseño.
14

CSS: Por Qué Evitar Estilos Inline

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" */
Publicidad
html-css-online-course-responsive-web-design-from-scratch
Aprendé desde cero con clases 100% en vivo, grupos súper reducidos y acompañamiento real. Todo el contenido está diseñado y dictado por el creador de la plataforma, para que aprendas de verdad, sin videos fríos ni cursos masivos.

Curso de HTML y CSS para Frontend

Dominá las bases de la programación frontend: estructura con 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 expertos
Precio $150000 ARG Oferta especial
Ver próximas fechas
15

HTML: Un Mismo Elemento, Cuatro Niveles de Estilo

Un 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>
Elemento HTML con estilos inline, id, clase y etiqueta
Un solo elemento puede ser afectado por múltiples reglas CSS al mismo tiempo.
16

CSS: Regla Definitiva de Precedencia

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 */
Orden de precedencia CSS inline id class etiqueta
Regla de oro: inline > ID > class > etiqueta. Si sabés esto, entendés el 80% de los conflictos CSS.
17

HTML: Elemento con Conflicto de Estilos

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>
Elemento HTML afectado por múltiples reglas CSS
Este título recibe estilos desde etiqueta, clase e ID.
18

CSS: El Peligro de !important

!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;
}
Publicidad
html-css-online-course-responsive-web-design-from-scratch
Aprendé desde cero con clases 100% en vivo, grupos súper reducidos y acompañamiento real. Todo el contenido está diseñado y dictado por el creador de la plataforma, para que aprendas de verdad, sin videos fríos ni cursos masivos.

Curso de HTML y CSS para Frontend

Dominá las bases de la programación frontend: estructura con 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 expertos
Precio $150000 ARG Oferta especial
Ver próximas fechas

Lección anterior

Diagrama visual de selectores CSS aplicándose sobre elementos HTML
Los selectores CSS permiten conectar reglas de estilo con elementos HTML específicos.

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.

Comenzar Lección

Lección actual

Jerarquía, herencia y cascada de estilos en CSS
Visualización del flujo de estilos CSS sobre un árbol DOM jerárquico.

Jerarquía CSS: Herencia, Cascada y Especificidad

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.

Lección actual

Lección siguiente

Diseño tipográfico y color del texto aplicado con CSS en una interfaz web
La tipografía y el color definen la personalidad, jerarquía y legibilidad de una interfaz web.

Tipografía y Texto en CSS

Controla 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.

Comenzar Lección
¿Por qué mi estilo no se aplica si lo escribí al final?Probablemente por especificidad. Aunque esté al final (Cascada), si hay una regla anterior con un selector más 'pesado' (ej: un ID o una combinación de clases), esa regla ganará. Revisa si puedes usar una clase más específica.
¿Qué es el valor `initial`?Es lo opuesto a `inherit`. Resetea una propiedad a su valor predeterminado por el navegador (el valor de fábrica), rompiendo cualquier herencia. Ej: `color: initial` volverá el texto negro, ignorando el color del padre.
¿Afecta el anidamiento al rendimiento de la web?Sí, aunque en ordenadores modernos es imperceptible. Sin embargo, selectores muy complejos (ej: `div:nth-child(2) > section ul li a span`) obligan al navegador a hacer muchos cálculos. Selectores simples = renderizado más rápido.
¿Puedo heredar el `height` o `width`?No por defecto, y usar `inherit` en ellos puede ser tricky. Generalmente, para que un hijo llene al padre usamos porcentajes (`width: 100%`) en lugar de herencia.
¿Cómo funcionan los estilos del navegador (User Agent)?Tienen la prioridad más baja. Cualquier regla que escribas en tu CSS sobrescribirá los estilos por defecto del navegador (como los márgenes del `body` o el tamaño de los `h1`).
¿Cuándo es válido usar IDs para estilos?Hoy en día se desaconseja usar IDs (`#header`) para estilos CSS porque tienen demasiada especificidad y son difíciles de sobrescribir. Es mejor reservar los IDs para Javascript y anclas de navegación, y usar Clases para estilos.
¿Qué es el selector universal `*` y cómo afecta la herencia?El `*` selecciona TODOS los elementos. A menudo se usa para el 'reset' de márgenes (`* { margin: 0; }`). Tiene una especificidad de 0, pero aplica el estilo directamente a cada elemento, lo que técnicamente no es herencia, sino asignación global.
¿Existe alguna herramienta para ver quién gana la batalla de estilos?Sí, el 'Inspector de Elementos' de tu navegador (F12). Si inspeccionas un elemento, verás las reglas aplicadas. Las que aparecen tachadas son las que 'perdieron' la batalla de la cascada o especificidad.