CSS3: Selectores avanzados y pseudo clases. Descripción, uso y ejemplos

CSS3: Selectores avanzados y pseudo clases. Descripción, uso y ejemplos

Ya sabemos que para aplicar estilos a un documento HTML utilizamos los selectores CSS. Un selector se define como el código que identifica a uno o varios elementos HTML para aplicarle estilos de color, tamaño, separación, etc. Los selectores más comunes son aquellos que se asignan a clases (class), identificadores (id) o directamente a elementos HTML como por ejemplo capas (div). Sin embargo en desarrollos complejos necesitamos utilizar otros selectores más avanzados para poder aplicar diferentes estilos en elementos anidados o listados complejos, como puede ser una capa dentro de otra con el mismo nombre de clase.

Hoy en día CSS3 nos permite utilizar múltiples selectores de forma que podemos aplicar estilos a cada uno de los elementos de nuestro desarrollo sin necesidad de aplicar nombres de clase o id. Vamos a realizar un repaso de ellos viendo ejemplos prácticos de su uso. Para ello, utilizaremos la una estructura de elementos anidados a los que iremos aplicando diferentes estilos.

 

Selectores CSS

 
Selector Ejemplo Descripción
.class .ejemplo Selecciona todos los elementos con class="ejemplo"
.class1.class2
...
Selecciona todos los elementos con las clases name1 y name2
.class1 .class2

 

    ...
 

Selecciona todos los elementos con .name2 que son descendientes de un elemento con .name1
#id #firstname Selecciona el elemento con id="firstname"
* * Selecciona todos los elementos
element p Selecciona todos los elementos

element.class p.intro Selecciona todos los

con class="intro"

element,element div, p Selecciona todos los
y los

element element div p Selecciona los

dentro el elemento

element>element div > p Selecciona los

hijos directos del elemento

element+element div + p Selecciona los

positionados inmediatamente despues del elemento

element1~element2 p ~ ul Selecciona los
    precedidos por

    element (o que antes tienes un p)

[attribute] [target] Selecciona todos los elementos que tengan "attribute"
[attribute=value]

[target=_blank]

Selecciona todos los target="_blank"
[attribute~=value] [title~=flower] Selecciona todos los elementos que contienen un atributo cn la la palabra "flower"
[attribute|=value] [lang|=en] Selecciona todos los elementos cuyo dioma es contienen"en"
[attribute^=value] a[href^="https"] Selecciona todos los elementos cuyo atributo href empieze con "https"
[attribute$=value] a[href$=".pdf"] Selecciona todos los elementos cuyo atributo href termine con ".pdf"
[attribute*=value] a[href*="w3schools"] Selecciona todos los elementos cuyo atributo href contenga el substring "w3schools"
empty p:empty Selecciona todos los elementos

que no tienen hijos

:first-child p:first-child Selecciona el elemento

que es el primer hijo de su padre

::first-letter p::first-letter Selecciona la primera letra de cada elemento

.

::first-line p::first-line Selecciona la primera línea de cada elemento

.

:first-of-type p:first-of-type Selecciona cada elemento

que es el primer elemento

de su padre.

:last-child p:last-child Selecciona el elemento

que es el último hijo de su padre

:last-of-type p:last-of-type Selecciona cada elemento

que es el último elemento

de su padre.

:link a:link Selecciona todos los links
:not(selector) :not(p) Selecciona cada elemento que NO es un

:nth-child(n) p:nth-child(2) Selecciona el elemento

que es el segundo hijo de su padre

:nth-last-child(n) p:nth-last-child(2) Selecciona cada elemento

que es el segundo hijo de su padre, contando desde el último hijo.

:nth-last-of-type(n) p:nth-last-of-type(2) Selecciona cada elemento

que es el segundo elemento

de su padre, contando desde el último hijo.

:nth-of-type(n) p:nth-of-type(2) Selecciona cada elemento

que es el segundo elemento

de su padre.

:only-of-type p:only-of-type Selecciona cada elemento

que es el único elemento

de su padre.

:only-child p:only-child Selecciona cada elemento

que es el único hijo de su padre



 

EJEMPLOS PRACTICOS



 

1

 
[class*="col-"] { border-color: red;}

Asignamos a todos los elementos que contengan la clase con la palabra "col-" el color rojo.



 

2

 
a[target="_blank"] { color: green; } 

Asignamos a todos los elementos "a" que tengan el atributo target igual a blank, el color verde.

 

3

 
a:not([target="_blank"]) { color: purple;  }
 

Asignamos a todos los elementos "a" que NO tengan el atributo target igual a blank, el color morado.



 

4

 
li:first-of-type + li {color: red;}
  • Uno
  • Soy rojo
  • Tres

Asigna el color rojo al primer elemento de la lista adyacente al primer li. O sea al 2 < li >.

 

5

 

Lorem ipsum

Dolor sit amet

Lorem ipsum

Soy rojo

Lorem ipsum

Soy rojo

 

Con ~ indicamos los elementos que preceden el elemento que se encuentra a la derecha.

En este fragmento de código, ambos párrafos después de < h2 > serán rojos, pero el primero no, ya que no viene después de un < h2 > en el documento.

 

6.

 

Soy Silvia

Soy Silvia

Soy Silvia

Soy rojo!

 

Selecciona todos el elemento p adyacente al div especificado.

 

7.


Parrafo - 1 en un div

Parrafo - 2 en un div

Parrafo - 3 soy verde

Parrafo - 4 soy verde

Parrafo - 5 en verde

Parrafo - 6 en un div

Parrafo - 7 soy verde

 

El ejemplo establece el color de texto rojo para todos los elementos "p" de un hermano en un elemento DIV con ID "divb" (

) .


 

Los selectores CSS avanzados.



 

Los selectores CSS avanzados permiten realizar tareas más específicas e incluso contabilizar o seleccionar elementos por su posición.

A menudo nos encntreremos con varios bloques CSS diferentes con los mismos estilos, algo que es perjudicial, ya que esto hará que el documento CSS ocupe más y por lo tanto, tarde más en descargarse.

Una buena práctica es ahorrar texto y simplificar nuestro documento CSS lo máximo posible, por lo que podemos hacer uso de la agrupación CSS.

Consejo: Esto puede parecer poco importante a priori, pero a medida que avanzamos con nuestro diseño, los documentos CSS se hacen tremendamente grandes y difíciles de mantener, por lo que cuanto más sencillo sea, mejor.

 
CSS Selectores
#d1 > div > p {
color: red;
}

  • ID Selector (#d1)
  • Elemento Selector (div, p)
  • Hijos directos (#d1 > div, div > p)
#d1  div  p {
color: red;
}

  • ID Selector (#d1)
  • Elemento Selector (div, p)
  • Selector descendiente #d1 div, div p)
#d1 > div > div p {
color: red;
}

  • ID Selector (#d1)
  • Elemento Selector (div, p)
  • Hijo directo (#d1 > div, div > div)
  • Selector Descendiente (div p)
p + div > p {
color:red;
}

  • Element Selector (p,div)
  • Adyacente (p + div)
  • Hijo directo (div > p)
p + div  p {
color:red;
}

  • Selector (p, div)
  • Adyacente (p + div)
  • Descendiente (div p)
#d11.childcntl {
color:red;
}

  • ID Selector (#d11)
  • Selector clase(.childcntl)
#d1 > p, #d11 > p {
color:red;
}

  • ID Selector (#d1, #d11)
  • Hijo directo (#d1 > p, #d11 > p)
#d11 + .childcntl {
color:red;
}

  • ID Selector (#d11)
  • Class (.childcntl)
  • Adyacente (#d11 + .childcntl)






Foto: FreePik