1. Consejos de uso

En este capítulo se amplían los conceptos vistos en el capítulo 1 y se introducen algunos nuevos conceptos sobre las hojas de estilo en cascada.

1. Comentario

Se pueden añadir comentarios propios a las hojas de estilo, que pueden servir de recordatorio posterior. Se pueden colocar en cualquier sitio de la especificacisn, siempre que vayan englobados entre los caracteres /* y */.

H1 {font: 20pt/22pt bold; color=#00FF00} /*Color verde*/

Si quieres hacer que una linea deje de hacer efecto, simplemente añádele un * delante del selector. Al no reconocer el selector, dejara de funcionar.

2. Diseño para todos los navegadores

Si se usa el método de incluir un bloque de estilo en la cabecera, que consiste en poner las distintas instrucciones de estilo entre las etiquetas <STYLE> y </STYLE>, tal como en el ejemplo que se visualizara:

<STYLE TYPE="text/css"> 
	<!-- esconde codigo
	H1 {
		background: blue; 
		font-size: 14pt; 
		font-weight: bold; 
		color: red
	} 
	H2 {
		font-size: 12pt; 
		font-weight: bold; 
		color: red
	} 
	//-- fin esconde -->
</STYLE>

En los navegadores que no implementen las hojas de estilo se ignoraran las etiquetas <STYLE> y </STYLE>, pero podrá ocurrir que aparezca como texto el bloque de definición del estilo. Para evitar esto, es conveniente englobar dicho bloque de información entre los símbolos <!-- y -->. Por tanto, es conveniente poner el bloque de definición del estilo de esta manera:

<Style Type="text/css"> 
	<!-- 
	BODY {
		background: yellow; 
		font-size: 10pt; 
		font-family: Arial; 
		margin-left: 2cm; 
		margin-right: 2cm;
	} 
	DIV {
		background: URL(nubes.jpg)
	} 
	--> 
</Style> 

3. Precedencia

El nombre de hojas de estilo en cascada, juntamente habla de la "precedencia" de aplicación de arriba hacia abajo. En otras palabras los selectores repetidos se chancan entre ellos.

El orden de los atributos es significativo. Los atributos Font-Weight y Font-Style se deben especificar antes que los demás.

4. Herencia

Fenomeno por el cual los hijos heredan las propiedades asignadas a sus padres. No todas las propiedades son heredables. Por ejemplo: FONT (-FAMILY, -SIZE, -STYLE, -VARIANT, -WEIGHT, -SIZE-ADJUNT, -STRETCH), TEXT (-ALIGN, -INDENT, -JUSTIFY, -SHADOW, -TRANSFORM, -DECORATION-COLOR), COLOR, TAB-SIZE, WORD-SPACING, LETTER-SPACING son heredados por defecto. Hay propiedades que no son heredas por defecto como BORDER.

Como se puede ver, la etiqueta BODY engloba a todas las demás. Si se la asigna un estilo determinado a esta etiqueta, todos los elementos que están dentro de la pagina (párrafos, divisores, tablas, listas, etc.) heredaran este estilo solo si este es heredable por defecto.

Por tanto, para establecer un estilo global a la pagina entera, lo mas apropiado es atribuírselo a la etiqueta BODY. Por ejemplo:

BODY {
	font: 10pt Helvetica, Arial, sans-serif navy; 
	background: url(isla.gif); 
	margin: 0 2cm 0 2cm;
}

Establece para el DOM completo la fuente, separación entre líneas, imagen de fondo y espesor de los margenes. Si se precisa que ciertos elementos concretos dentro del DOM tengan otras características distinta a la general, entonces hay que definirlas por separado.

Se puede forzar la herencia

span {border: inherit;}

5. Especificidad

La "especificidad" es algo que cada autor CSS tiene que entender y pensar. Se puede considerar como una medida específica del selector de una regla. Un selector con baja "especificidad" puede coincidir con muchos elementos (como el * que coincide con todos los elemento en el documento), mientras que un selector con alta especificidad podría coincidir con un único elemento de una página (como #nav que sólo coincide con el elemento con una ID=nav).

La "especificidad" de un selector se puede calcular fácilmente, como veremos más adelante. Si dos o más declaraciones de conflicto para un elemento dado, y todas las declaraciones tienen la misma importancia, el que aparece en la regla con el selector más específico "ganar".

La "especificidad" tiene cuatro posibles valores: a, b, c y d. Donde "a" es el más importante.

Después de un poco de contar, por lo tanto podemos cadena de esos cuatro componentes en conjunto para obtener la especificidad para cualquier regla. Declaraciones CSS en un atributo STYLE no tienen un selector, por lo que su especificidad es siempre 1,0,0,0.

Calculo de especificidad
ValorDescripción
Aes 1 para una declaración en un atributo STYLE, de lo contrario es 0.
BCantidad de IDs en el selector (aquellas que comienzan con una #).
CCantidad de CLASES en el selector, incluyendo pseudo-clases.
DCantidad de TIPOS de elementos y pseudo-elementos.
SelectorEspecifidad A,B,C,D
h30,0,0,1
.nav0,0,0,0
#barra0,1,0,0
<H1 STYPE="">1,0,0,0
h2 {color:red !important;}9,9,9,9
html>head+body ul#nav *.home a:link{}0,1,2,5
h3 p.texto ul#listado li a{}0,1,1,5
.#info p a.actual{}0,1,1,2
.#nav #manu ul li a.actual{}0,2,1,3

6. Métodos de desarrollo

1. Progressive enhancement - Mejora progresiva
Propone hacer un diseño básico que soportes todos los navegadores y a partir de allí mejorando en capas con CSS3, JavaScript, etc
2. Graceful degradatio - degradación en elegancia
Es el proceso inverso.

7. Recomendaciones

Aquí propongo algunas herramientas en linea que te pueden ayudar. Seguro que en la web habrá muchas mas, estas solo son las que yo conozco para darte una idea de lo que puedes encontrar como editores, texto e imagen para pruebas, indices de recomendaciones, manuales y muchos ejemplos.