Selectores ejercicio

Atributo, listas y relaciones

En la lección anterior aprendiste a apuntar a un elemento por sí mismo: su tipo, su clase, su ID. Ahora vas más allá: seleccionar por un atributo que tiene, agrupar varios en una regla, y apuntar por la posición en el árbol del documento.


Selector de atributo ([href], [type="text"])

Se puede seleccionar por tener un atributo o por su valor exacto, usando corchetes:

a[href]            { color: teal; }       /* enlaces que TIENEN href */
input[type="text"] { background-color: white; } /* inputs cuyo type es exactamente "text" */
  • [atributo] → el elemento tiene ese atributo (sin importar el valor).
  • [atributo="valor"] → el atributo tiene exactamente ese valor.

Esto conecta directamente con el Bloque I: el href de links (CAT-06), el type de inputs de formularios (CAT-09). Ahora podés estilar según esos atributos.


Lista de selectores — una coma, una regla para varios

Una coma separa varios selectores que comparten la misma regla. Ahorra repetir el bloque de declaraciones:

h1, h2, h3 {
  color: teal;
  font-weight: bold;
}

Equivale a tres reglas idénticas. La coma se lee “y también”.

Atención a la confusión frecuente:

SintaxisSignificado
h1, h2h1 y también h2 — dos selectores independientes
h1 h2<h2> dentro de <h1> — selector descendiente (ver abajo)
h1.dest<h1> que además tiene la clase dest — intersección

Descendiente vs hijo directo — el punto más fino del módulo

Se enseñan juntos porque su contraste es donde se entienden mejor.

Descendiente (espacio): nav a selecciona todos los <a> que estén dentro de un <nav>, a cualquier profundidad — hijos, nietos, bisnietos.

Hijo directo (>): ul > li selecciona solo los <li> que son hijos inmediatos de un <ul>, exactamente un nivel.

El ejemplo donde dan resultados distintos:

<nav>
  <a href="#">Inicio</a>          <!-- hijo directo de nav -->
  <ul>
    <li><a href="#">Carta</a></li> <!-- a es NIETO de nav -->
  </ul>
</nav>
nav a   { color: teal; }  /* alcanza AMBOS enlaces (hijo y nieto) */
nav > a { color: red;  }  /* SOLO el primer <a> — el de adentro del <li> NO */
  • El espacio = “en cualquier nivel adentro de”.
  • El > = “exactamente un nivel, hijo inmediato”.

El contraste se ve más claro en el preview: con nav a ambos enlaces cambian de color; con nav > a solo el que es hijo directo. Probalo visualmente.


Los espacios alrededor del > no cambian el significado

ul > li, ul>li y ul> li son equivalentes — el > es el operador. Lo que sí cambia el significado es usar un espacio solo (sin >) vs el > mismo:

  • ul li → descendiente (cualquier nivel)
  • ul > li → hijo directo (un nivel)

Tu turno: escribí las cuatro reglas en la pestaña CSS y hacé clic en “Comprobar”.

Atributo, lista y combinadores

El HTML es el encabezado de navegación y una sección de Café Aroma. En la **pestaña CSS**: 1. **Atributo:** poné `color: teal` a los enlaces que tengan `href`, con el selector `a[href]`. 2. **Lista:** con una sola regla (selectores separados por coma), poné `font-weight: bold` a `h2` **y** `h3`. 3. **Hijo directo:** poné `color: green` solo a los `<li>` que son hijos **directos** de `<ul>`, con `ul > li`. 4. **Descendiente:** poné `background-color: white` a todo `<p>` que esté dentro de la `<section>`, con `section p`.

Preview

En la referencia