Selectores
Last updated
Last updated
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.
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:
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.
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.
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:
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.
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
:
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.
A un elemento se le pueden poner el numero de clases que desees.
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.
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:
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.
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.
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>
:
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.
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>
:
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.
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:
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>
:
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>.