Selector universal
*{
margin: 0;
padding: 0;
}
El selector universal se indica mediante un asterisco (*). A pesar de su sencillez, no se utiliza habitualmente, ya que es difícil que un mismo estilo se pueda aplicar a todos los elementos de una página.
No obstante, sí que se suele combinar con otros selectores y además, forma parte de algunos hacks muy utilizados, como se verá más adelante.
Selector de tipo o etiqueta
Selecciona todos los elementos de la página cuya etiqueta HTML coincide con el valor del selector. El siguiente ejemplo selecciona todos los párrafos de la página:
p {
...
}
El siguiente ejemplo aplica diferentes estilos a los titulares y a los párrafos de una página HTML:
h1 {
color: red;
}
h2 {
color: blue;
}
p {
color: black;
}
h1
, h2
y h3
comparten los mismos estilos:h1 {
color: #8A8E27;
font-weight: normal;
font-family: Arial, Helvetica, sans-serif;
}
h2 {
color: #8A8E27;
font-weight: normal;
font-family: Arial, Helvetica, sans-serif;
}
h3 {
color: #8A8E27;
font-weight: normal;
font-family: Arial, Helvetica, sans-serif;
}
,
) y el resultado es que la siguiente regla CSS es equivalente a las tres reglas anteriores:h1, h2, h3 {
color: #8A8E27;
font-weight: normal;
font-family: Arial, Helvetica, sans-serif;
}
h1, h2, h3 {
color: #8A8E27;
font-weight: normal;
font-family: Arial, Helvetica, sans-serif;
}
h1 { font-size: 2em; }
h2 { font-size: 1.5em; }
h3 { font-size: 1.2em; }
Selector descendente
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.
El selector del siguiente ejemplo selecciona todos los elementos <span> de la página que
se encuentren dentro de un elemento <p>:Si el código HTML de la página es el siguiente:p span { color: red; }
El selector p span selecciona tanto texto1 como texto2. El motivo es que en el selector<p> ... <span>texto1</span> ... <a href="">...<span>texto2</span></a> ... </p>
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.
Los selectores descendentes permiten aumentar la precisión del selector de tipo o
etiqueta. Así, utilizando el selector descendente es posible aplicar diferentes estilos
a los elementos del mismo tipo. El siguiente ejemplo amplía el anterior y muestra de
color azul todo el texto de los <span> contenidos dentro de un <h1>:Con las reglas CSS anteriores: Los elementos <span> que se encuentran dentro de un elemento <p> se muestran dep span { color: red; } h1 span { color: blue; }
color rojo. Los elementos <span> que se encuentran dentro de un elemento <h1> se
muestran de color azul. El resto de elementos <span> de la página, se muestran con
el color por defecto aplicado por el navegador.
La sintaxis formal del selector descendente se muestra a continuación:
selector1 selector2 selector3 ... selectorN
Los selectores descendentes siempre están formados por dos o más selectores separados
entre sí por espacios en blanco. El último selector indica el elemento sobre el que se aplican
los estilos y todos los selectores anteriores indican el lugar en el que se debe encontrar ese
elemento.
En el siguiente ejemplo, el selector descendente se compone de cuatro selectores:
Los estilos de la regla anterior se aplican a los elementos de tipo <em> que se encuentrenp a span em { text-decoration: underline; }
dentro de elementos de tipo <span>, que a su vez se encuentren dentro de elementos de
tipo <a> que se encuentren dentro de elementos de tipo <p>. No debe confundirse el selector descendente con la combinación de selectores:Se puede restringir el alcance del selector descendente combinándolo con el selector/* El estilo se aplica a todos los elementos "p", "a", "span" y "em" */ p, a, span, em { text-decoration: underline; } /* El estilo se aplica solo a los elementos "em" que se encuentran dentro de "p a span" */ p a span em { text-decoration: underline; }
universal. El siguiente ejemplo, muestra los dos enlaces de color rojo:Sin embargo, en el siguiente ejemplo solamente el segundo enlace se muestra dep a { color: red; } <p><a href="#">Enlace</a></p> <p><span><a href="#">Enlace</a></span></p>
color rojo:La razón es que el selector p * a se interpreta como todos los elementos de tipo <a>p * a { color: red; } <p><a href="#">Enlace</a></p> <p><span><a href="#">Enlace</a></span></p>
que se encuentren dentro de cualquier elemento que, a su vez, se encuentre dentro
de un elemento de tipo <p>. Como el primer elemento <a> se encuentra directamente
bajo un elemento <p>, no se cumple la condición del selector p * a.
Selector de clase
Si se considera el siguiente código HTML de ejemplo:¿Cómo se pueden aplicar estilos CSS sólo al primer párrafo? El selector universal (*) no
<body> <p>Lorem ipsum dolor sit amet...</p> <p>Nunc sed lacus et est adipiscing accumsan...</p> <p>Class aptent taciti sociosqu ad litora...</p> </body>
se puede utilizar porque selecciona todos los elementos de la página. El selector de tipo
o etiqueta (p) tampoco se puede utilizar porque seleccionaría todos los párrafos. Por
último, el selector descendente (body p) tampoco se puede utilizar porque todos los
párrafos se encuentran en el mismo sitio.
Una de las soluciones más sencillas para aplicar estilos a un solo elemento de la página
consiste en utilizar el atributo class de HTML sobre ese elemento para indicar
directamente la regla CSS que se le debe aplicar:A continuación, se crea en el archivo CSS una nueva regla llamada destacado con todos
<body> <p class="destacado">Lorem ipsum dolor sit amet...</p> <p>Nunc sed lacus et est adipiscing accumsan...</p> <p>Class aptent taciti sociosqu ad litora...</p> </body>
los estilos que se van a aplicar al elemento. Para que el navegador no confunda este
selector con los otros tipos de selectores, se prefija el valor del atributo class con un
punto (.) tal y como muestra el siguiente ejemplo:El selector .destacado se interpreta como "cualquier elemento de la página cuyo atributo
.destacado { color: red; }
class sea igual a destacado", por lo que solamente el primer párrafo cumple esa condición.
Este tipo de selectores se llaman selectores de clase y son los más utilizados junto con
los selectores de ID que se verán a continuación. 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:Los selectores de clase son imprescindibles para diseñar páginas web complejas, ya que
<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>
permiten disponer de una precisión total al seleccionar los elementos. Además, estos
selectores permiten reutilizar los mismos estilos para varios elementos diferentes. A continuación se muestra otro ejemplo de selectores de clase:El elemento <span> tiene un atributo class="error", por lo que se le aplican las reglas
.aviso { padding: 0.5em; border: 1px solid #98be10; background: #f6feda; } .error { color: #930; font-weight: bold; } <span class="error">...</span> <div class="aviso">...</div>
CSS indicadas por el selector.error. Por su parte, el elemento <div> tiene un atributo
class="aviso", por lo que su estilo es el que definen las reglas CSS del selector .aviso.
En ocasiones, es necesario restringir el alcance del selector de clase. Si se considera
de nuevo el ejemplo anterior:¿Cómo es posible aplicar estilos solamente al párrafo cuyo atributo class sea igual
<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>
a destacado? Combinando el selector de tipo y el selector de clase, se obtiene un
selector mucho más específico:El selector p.destacado se interpreta como "aquellos elementos de tipo <p> que
p.destacado { color: red }
dispongan de un atributo class con valor destacado". De la misma forma, el selector
a.destacado solamente selecciona los enlaces cuyo atributo class sea igual
a destacado.
De lo anterior se deduce que el atributo .destacado es equivalente a *.destacado,
por lo que todos los diseñadores obvian el símbolo * al escribir un selector de
clase normal. No debe confundirse el selector de clase con los selectores anteriores:Por último, es posible aplicar los estilos de varias clases CSS sobre un mismo elemento.
/* Todos los elementos de tipo "p" con atributo class="aviso" */ p.aviso { ... } /* Todos los elementos con atributo class="aviso" que estén dentro de cualquier elemento de tipo "p" */ p .aviso { ... } /* Todos los elementos "p" de la página y todos los elementos con atributo class="aviso" de la página */ p, .aviso { ... }
La sintaxis es similar, pero los diferentes valores del atributo class se separan con
espacios en blanco. En el siguiente ejemplo:Al párrafo anterior se le aplican los estilos definidos en las reglas .especial, .destacado
<p class="especial destacado error">Párrafo de texto...</p>
y .error, por lo que en el siguiente ejemplo, el texto del párrafo se vería de color rojo,
en negrita y con un tamaño de letra de 15 píxel:Si un elemento dispone de un atributo class con más de un valor, es posible utilizar
.error { color: red; } .destacado { font-size: 15px; } .especial { font-weight: bold; } <p class="especial destacado error">Párrafo de texto...</p>
un selector más avanzado:En el ejemplo anterior, el color de la letra del texto es azul y no rojo. El motivo es
.error { color: red; } .error.destacado { color: blue; } .destacado { font-size: 15px; } .especial { font-weight: bold; } <p class="especial destacado error">Párrafo de texto...</p>
que se ha utilizado un selector de clase múltiple .error.destacado, que se interpreta
como "aquellos elementos de la página que dispongan de un atributo class con al
menos los valores error y destacado".
No hay comentarios:
Publicar un comentario