- ¿Qué significan las siglas CSS?
Cascading Stylesheets (" Hojas de estile en cascada ") - ¿Para que se utiliza CSS?
Es un lenguaje utilizado en la presentation de documentos HTML, sirve para organizar la presentation y aspecto de una pagina web. - ¿Cuales son las versiones de CSS?
LAS VERSIONES DE CSS
El W3C trabaja continuamente para mejorar el lenguaje CSS, corrigiendo errores e incorporando nuevas funcionalidades. Antes de llegar a una especificación o recomendación oficial se trabajan numerosos borradores que son sometidos a revisión y corrección. Cuando se alcanza un relativo grado de acuerdo entre los miembros del W3C se libera lo que se denomina una recomendación oficial de CSS ó versión a modo de propuesta para su uso y aplicación por todas las empresas, instituciones y personas.Las versiones de CSS a lo largo de la historia han sido:
CSS 1: publicada en 1996.
CSS 2: publicada en 1998.
CSS 2.1: publicada en 2004.
CSS 3: publicada en 2011.
CSS 4: se estima que pueda ser especificación oficial en 2019.
- CSS y HTML
- Incrustar o incluir CSS en el mismo documento HTML
Colocas las etiquetas Style en medio entre el final del head y el principio de body y luego colocas el codigo CSS que desees emplear
<style>
.... /*Codigo CSS*/
</style> - Incluir CSS en HTML desde un archivo externo.
En el caso de lo que es el CSS en un documento HTML utilizas la etiqueta
<link href=" (dentro colocas la direccion del directorio en donde se encuentre tu archivo.css) "> - Selectores CSS:
- Universal:
Se utiliza para seleccionar todos los elementos de la página. El siguiente ejemplo elimina el margen y el relleno de todos los elementos HTML (por ahora no es importante fijarse en la parte de la declaración de la regla CSS):
* { margin: 0; padding: 0; }
*
). 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.
- Tipo 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 { ... }
<
y>
) correspondiente a los elementos que se quieren seleccionar.
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
yh3
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; }
- Descendentes:
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>
:
p span { color: red; }
<p> ... <span>texto1</span> ... <a href="">...<span>texto2</span></a> ... </p>
p span
selecciona tantotexto1
comotexto2
. 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.
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>
:
p span { color: red; } h1 span { color: blue; }
- Los elementos
<span>
que se encuentran dentro de un elemento<p>
se muestran de 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.
selector1 selector2 selector3 ... selectorN
En el siguiente ejemplo, el selector descendente se compone de cuatro selectores:
p a span em { text-decoration: underline; }
<em>
que se encuentren 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:
/* 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; }
p a { color: red; } <p><a href="#">Enlace</a></p> <p><span><a href="#">Enlace</a></span></p>
p * a { color: red; } <p><a href="#">Enlace</a></p> <p><span><a href="#">Enlace</a></span></p>
p * a
se interpreta como todos los elementos de tipo<a>
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 selectorp * a
.
- Los elementos
- Clase:
Si se considera el siguiente código HTML de ejemplo:
<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>
*
) no 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 atributoclass
de HTML sobre ese elemento para indicar directamente la regla CSS que se le debe aplicar:
<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>
destacado
con todos 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 atributoclass
con un punto (.
) tal y como muestra el siguiente ejemplo:
.destacado { color: red; }
.destacado
se interpreta como "cualquier elemento de la página cuyo atributoclass
sea igual adestacado
", 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 atributoclass
:
<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 continuación se muestra otro ejemplo de selectores de clase:
.aviso { padding: 0.5em; border: 1px solid #98be10; background: #f6feda; } .error { color: #930; font-weight: bold; } <span class="error">...</span> <div class="aviso">...</div>
<span>
tiene un atributoclass="error"
, por lo que se le aplican las reglas CSS indicadas por el selector.error
. Por su parte, el elemento<div>
tiene un atributoclass="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:
<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>
class
sea igual adestacado
? Combinando el selector de tipo y el selector de clase, se obtiene un selector mucho más específico:
p.destacado { color: red }
p.destacado
se interpreta como "aquellos elementos de tipo<p>
que dispongan de un atributoclass
con valordestacado
". De la misma forma, el selectora.destacado
solamente selecciona los enlaces cuyo atributoclass
sea igual adestacado
.
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:
/* 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 { ... }
class
se separan con espacios en blanco. En el siguiente ejemplo:
<p class="especial destacado error">Párrafo de texto...</p>
.especial
,.destacado
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:
.error { color: red; } .destacado { font-size: 15px; } .especial { font-weight: bold; } <p class="especial destacado error">Párrafo de texto...</p>
class
con más de un valor, es posible utilizar un selector más avanzado:
.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>
.error.destacado
, que se interpreta como "aquellos elementos de la página que dispongan de un atributoclass
con al menos los valoreserror
ydestacado
".
- 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 atributoid
. Este tipo de selectores sólo seleccionan un elemento de la página porque el valor del atributoid
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:
#destacado { color: red; } <p>Primer párrafo</p> <p id="destacado">Segundo párrafo</p> <p>Tercer párrafo</p>
#destacado
solamente selecciona el segundo párrafo (cuyo atributoid
es igual adestacado
).
La principal diferencia entre este tipo de selector y el selector de clase tiene que ver con HTML y no con CSS. Como se sabe, en una misma página, el valor del atributoid
debe ser único, de forma que dos elementos diferentes no pueden tener el mismo valor deid
. Sin embargo, el atributoclass
no es obligatorio que sea único, de forma que muchos elementos HTML diferentes pueden compartir el mismo valor para su atributoclass
.
De esta forma, la recomendación general es la de utilizar el selector de ID cuando se quiere aplicar un estilo a un solo elemento específico de la página y utilizar el selector de clase cuando se quiere aplicar un estilo a varios elementos diferentes de la página HTML.
Al igual que los selectores de clase, en este caso también se puede restringir el alcance del selector mediante la combinación con otros selectores. El siguiente ejemplo aplica la regla CSS solamente al elemento de tipo<p>
que tenga un atributoid
igual al indicado:
p#aviso { color: blue; }
p#aviso
sólo tiene sentido cuando el archivo CSS se aplica sobre muchas páginas HTML diferentes.
En este caso, algunas páginas pueden disponer de elementos con un atributoid
igual aaviso
y que no sean párrafos, por lo que la regla anterior no se aplica sobre esos elementos.
No debe confundirse el selector de ID con los selectores anteriores:
/* Todos los elementos de tipo "p" con atributo id="aviso" */ p#aviso { ... } /* Todos los elementos con atributo id="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 id="aviso" de la página */ p, #aviso { ... }
- Combinación de selectores
CSS permite la combinación de uno o más tipos de selectores para restringir el alcance de las reglas CSS. A continuación se muestran algunos ejemplos habituales de combinación de selectores.
.aviso .especial { ... }
class="especial"
que se encuentren dentro de cualquier elemento con unclass="aviso"
.
Si se modifica el anterior selector:
div.aviso span.especial { ... }
<span>
con un atributoclass="especial"
que estén dentro de cualquier elemento de tipo<div>
que tenga un atributoclass="aviso"
.
La combinación de selectores puede llegar a ser todo lo compleja que sea necesario:
ul#menuPrincipal li.destacado a#inicio { ... }
id
igual ainicio
que se encuentra dentro de un elemento de tipo<li>
con un atributoclass
igual adestacado
, que forma parte de una lista<ul>
con un atributoid
igual amenuPrincipal
.
Importante: crear un ejemplo utilizando cada uno de los selectores.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Ejercicio de selectores</title> <style type="text/css"> /* Todos los elementos de la pagina */ { font: 1em/1.3 Arial, Helvetica, sans-serif; } /* Todos los parrafos de la pagina */ { color: #555; } /* Todos los párrafos contenidos en #primero */ { color: #336699; } /* Todos los enlaces la pagina */ { color: #CC3300; } /* Los elementos "em" contenidos en #primero */ { background: #FFFFCC; padding: .1em; } /* Todos los elementos "em" de clase "especial" en toda la pagina */ { background: #FFCC99; border: 1px solid #FF9900; padding: .1em; } /* Elementos "span" contenidos en .normal */ { font-weight: bold; } </style> </head> <body> <div id="primero"> <p>Lorem ipsum dolor sit amet, <a href="#">consectetuer adipiscing elit</a>. Praesent blandit nibh at felis. Sed nec diam in dolor vestibulum aliquet. Duis ullamcorper, nisi non facilisis molestie, <em>lorem sem aliquam nulla</em>, id lacinia velit mi vestibulum enim.</p> </div> <div class="normal"> <p>Phasellus eu velit sed lorem sodales egestas. Ut feugiat. <span><a href="#">Donec porttitor</a>, magna eu varius luctus,</span> metus massa tristique massa, in imperdiet est velit vel magna. Phasellus erat. Duis risus. <a href="#">Maecenas dictum</a>, nibh vitae pellentesque auctor, tellus velit consectetuer tellus, tempor pretium felis tellus at metus.</p> <p>Cum sociis natoque <em class="especial">penatibus et magnis</em> dis parturient montes, nascetur ridiculus mus. Proin aliquam convallis ante. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Nunc aliquet. Sed eu metus. Duis justo.</p> <p>Donec facilisis blandit velit. Vestibulum nisi. Proin volutpat, <em class="especial">enim id iaculis congue</em>, orci justo ultrices tortor, <a href="#">quis lacinia eros libero in eros</a>. Sed malesuada dui vel quam. Integer at eros.</p> </div> </body> </html>
No hay comentarios:
Publicar un comentario