Selectores

Cuando comenzamos a trabajar con CSS, es habitual dar estilo con ejemplos muy sencillos, donde generalmente utilizamos un selector genรฉrico que representa (por ejemplo) una etiqueta HTML como por ejemplo <div>. Sin embargo, lo que estamos haciendo en realidad es seleccionar todos los elementos del documento que sean dicha etiqueta.

Aunque el esquema general es mucho mรกs amplio (lo iremos viendo poco a poco), para empezar, vamos a centrarnos en la sintaxis mรกs bรกsica de los selectores CSS: por etiqueta, por ID y por clases.

Selectores elementales

Los selectores elementales se utiliza cuando queremos hacer referencia a un grupo y ha dos tipos distinto, los de tipo o etiqueta, y el universal. Este ultimo se utiliza cuando queremso aplicar una propiedad a todo el documento:

*{
    background-color: lightblue;
}

Es un selector que hay que utilizar con cuidado y solo se debe utilizar en ciertos momentos muy concretos. No es recomendable abusar de el ni utilizarlo para establecer margin=0;, aunque se ve muy a menudo.

Selector de etiqueta

Este selector se dirige a los tipos de elementos en la pรกgina, expecificamente a los elementos regulares, <p>, <h1>, <h2> ... y modifican todas las instancias de ese elemento en su pรกgina. Por ejemplo, con el siguiente fragmento de cรณdigo se le aplicarรก un estilo a todas las etiquetas <h2> en su pรกgina, aplicandoles una fuente verde y un fondo negro.

h2{
    color: green;
    background-color: black;
}

Selectores de id

En ocasiones, es necesario aplicar estilos CSS a un รบnico elemento de la pรกgina. Aunque puede utilizarse un selector de clase para aplicar estilos a un รบnico elemento, existe otro selector mรกs eficiente en este caso.

El selector de ID permite seleccionar un elemento de la pรกgina a travรฉs del valor de su atributo id. Este tipo de selectores sรณlo seleccionan un elemento de la pรกgina porque el valor del atributo id no se puede repetir en dos elementos diferentes de una misma pรกgina.

La sintaxis de los selectores de ID es muy parecida a la de los selectores de clase, salvo que se utiliza el sรญmbolo de la almohadilla (#) en vez del punto (.) como prefijo del nombre de la regla CSS:

#identified {
  background-color: skyblue;
}

Aunque pueda ser de utilidad, no es recomendable dar estilos mediante el id, pesto que solo puede haber uno y uno de los principio de CSS es que los estilos puedan ser reutilizables.

Selectores de clase

Este tipo de selectores son los mรกs utilizados junto con los selectores de ID . La principal caracterรญstica de este selector es que en una misma pรกgina HTML varios elementos diferentes pueden utilizar el mismo valor en el atributo class:

<body>
  <p class="destacado">Lorem ipsum dolor sit amet...</p>
  <p>Nunc sed lacus et <a href="#" class="destacado">est adipiscing</a> accumsan...</p>
  <p>Class aptent taciti <em class="destacado">sociosqu ad</em> litora...</p>
</body>

Esto serรญa รบtil, por ejemplo, si quisiera diseรฑar varios pรกrrafos de su pรกgina, pero no todos, de la misma manera. Esto le ahorrarรญa la molestia de escribir muchos CSS repetitivos en lรญnea. Para apuntar a un selector de clase, use un punto (.), en lugar de un hash, seguido del valor / nombre de la clase. Puede nombrar la clase como desee, siempre que no comience con un nรบmero y no se hay utilizado ese nombre anteriormente.

.text1 {
  padding: 0.5em;
  border: 1px solid #98be10;
  background: #f6feda;
}

A un elemento se le pueden poner el numero de clases que desees.

Selectores de atributo

En esta secciรณn vamos a ver los selectores de atributos que nos permitirรกn tambiรฉn realizar una selecciรณn mรกs especรญfica de los elementos a los que queremos aplicar un cierto estilo en funciรณn de los atributos o valores que tengan asignados.

Los selectores de atributos permiten elegir elementos HTML en funciรณn de sus atributos y/o valores de esos atributos.

Los tipos de selectores de atributos son los siguientes:

  • [nombre_atributo], selecciona los elementos que tienen establecido el atributo llamado nombre_atributo independientemente de su valor.

  • [nombre_atributo=valor], selecciona los elementos que tienen establecido un atributo llamado nombre_atributo con un valor igual a valor.

  • [nombre_atributo~=valor], selecciona los elementos que tienen establecido un atributo llamado nombre_atributo y al menos uno de los valores del atributo es valor.

  • [nombre_atributo|=valor], selecciona los elementos que tienen establecido un atributo llamado nombre_atributo, cuyo valor es una lista de valores, donde alguno comienza por valor.

  • [nombre_atributo$=valor] Selecciona aquellas etiquetas cuyo atributo acabe en ese valor.

  • [nombre_atributo^=valor] Selecciona aquellas etiquetas cuyo atributo comience por ese valor.

[href="https://google.com"]{  //Es recomendable utilizar siempre lass comillas
    background-color: orange;
}

Selectores agrupados

Uno de los principios de CCS en "don't repeat yourself", es decir no repitas varias veces el mismo cรณdigo, por ello para ahorrarnos esas repeticiones, podemos crear un selector agrupado. Para ello tan solo hay agrupar los selectores q los que queramos dar la misma porpiedad y separarlos por comas:

.text, .text-2, tex-3{
    background-color: steelblue;
}

Este tipo de codigo facilita muchรญsimo la lectura al navegador. Es verdad, que en este caso la diferencia de optimizaciรณn no es apreciable y se podria poner por separado, pero en e momento aunque estas clases tenga muchรญsimas lineas mas, la diferencia de optimizaciรณn es abismal.

Selectores combinadores

Los selectores combinadores combinan otros selectores de manera que proporciona una relaciรณn รบtil entre ellos y la ubicaciรณn del contenido en el documento.

Selector descendiente (hijos)

Selecciona los elementos que se encuentran dentro de otros elementos. Un elemento es descendiente de otro cuando se encuentra entre las etiquetas de apertura y de cierre del otro elemento.

Las buenas practicas especifican que nos es recomendable tener mas de un nivel, es decir, lo recomendable es el ejemplo siguiente

El selector del siguiente ejemplo selecciona todos los elementos <span> de la pรกgina que se encuentren dentro de un elemento <p>:

p span { color: red; }

El selector p span selecciona tanto texto1 como texto2. El motivo es que en el selector descendente, un elemento no tiene que ser descendiente directo del otro. La รบnica condiciรณn es que un elemento debe estar dentro de otro elemento, sin importar el nivel de profundidad en el que se encuentre.

Al resto de elementos <span> de la pรกgina que no estรกn dentro de un elemento <p>, no se les aplica la regla CSS anterior.

Selector de hermano siguiente

El selector de elementos hermanos adyacentes (+) se utiliza para seleccionar un elemento que se encuentra justo al lado de otro elemento en el mismo nivel de la jerarquรญa. Por ejemplo, para seleccionar todos los elementos <img> que aparecen justo despuรฉs de elementos <p>:

p + img {}

El caso de uso mรกs comรบn es modificar el pรกrrafo que va justo despuรฉs del tรญtulo, como en el ejemplo siguiente. Vamos a buscar un pรกrrafo que sea directamente adyacente a <h1> y le vamos a aplicar un estilo.

Esto solo sirve para sleccionar ele elemento siguiente al que hemos especificado, no se puede acceder al anterior.

Selector de hermano siguiente

Si deseas seleccionar todos los hermanos de un elemento, incluso si no son directamente adyacentes, puedes utilizar el combinador de hermanos general (~). Por ejemplo, para seleccionar todos los elementos <img> que aparecen despuรฉs de los elementos <p>, hacemos esto:

p ~ imgย {}

Selector de hijo directo

El selector de combinaciรณn de elementos hijo es un sรญmbolo de ยซmayor queยป (>), que selecciona solo cuando los selectores identifican elementos que son hijos directos. Los elementos descendientes que se encuentran mรกs abajo en la jerarquรญa no se seleccionan. Por ejemplo, para seleccionar solo los elementos <p> que son hijos directos de elementos <article>:

article > p {}

Esto nos libra de seleccionar los hijos de los hijos, a la hora de utilizar el siguiente cรณdigo. Es decir no libra de leccioanr todos los <p> que haya dentro de <article>.

article p {}

Bibliografia

Last updated