Cascading Style Sheets
por Daniel M. Germán
(dmg@csg.uwaterloo.ca)
Información de Derecho de Autor
Este documento es (C) 1998, 1999 Daniel M. Germán (dmg@csg.uwaterloo.ca) .
Este documento es distribuido bajo la licencia "GNU General Public
Licence", tal como es publicada por la Free
Software Foundation, versión 1 o 2 a elección del usuario.
En resumen, esta licencia te da el derecho de modificar este documento,
siempre y cuando tú a la vez redistribuyas las modificaciones que hagas al
mismo. De ninguna forma puedes remover el encabezado de copyright al tope de
este documento ni la licencia de este documento. Las modificaciones que hagas
deben liberarse bajo la misma licencia que este documento.
Contenido
Cascading Style Sheets (CSS)
- Las hojas de estilo (style sheets) intentan independizar la estructura de
un documento en HTML de su presentacón.
- Permiten modificar la presentación de cada elemento de HTML.
Propiedades de un estilo
- Son cinco los diferentes tipos de características que puede alterar un
estilo:
- Color de texto y de fondo, incluyendo el fondo de imágenes
- Fuentes
- Propiedades del texto (espaciamiento entre palabras, entre letras)
- Cajas (márgenes, bordes, elementos flotantes)
- Clasificaciones: Control de la apariencia de listas.
- A estos cinco tipos de les llama propiedades.
Agentes del Usuario
- El efecto de un estilo dependerá fuertemente del agente del usuario
(UA)
- El agente del usuario es el responsable de interpretar el estilo y
aplicarlo al documento.
- Tipos de agente:
- Gráfico
- Braile
- Texto solamente
- Malas noticias:
- No todas las propiedades son soportadas por todos los UA.
Un estilo simple
- Los CSS son muy simples. Constan de reglas
- Una regla consiste de tres partes:
nombre-de-elemento { propiedad:
lista}
- Ejemplo:
<html><head>
<style type="text/css">
body {background: cyan}
H2 {color: blue; font-size:18pt}
</style>
</head>
<body>
<h2>Patito</h2>
</body> </html>
|
test.htm
body {background: cyan}
H2 {color: blue; font-size:18pt}
|
test.css
Estilos en Conflicto
- Tanto el publicista como el lector desean especificar como desean
visualizar la información
- Publicista:
- Cree saber cual es la forma de presentar su información
- Desea imponer su propio "look and feel"
- Lector
- Conoce mejor que nadie sus limitaciones de equipo y personales
- Tiene preferencias
Conflictos
- ¿Que pasa si tanto el lector como el publicista (autor) desean especificar
su estilo?
- Cada especificación de estilo tiene una prioridad
- Estilo con mayor prioridad gana
Prioridad en Estilos
- CSS da preferencia al publicista
- Estilos tienen dos tipos prioridad:
- Estilo con mayor prioridad gana
- Si ambos (publicista y lector) especifican misma prioridad, publicista
gana.
- Problema difícil: siempre existirán problemas.
Propiedades
H1 { background : blue;
color : yellow}
Propiedades sensibles al contexto
BLOCKQUOTE P { font-style: italic}
Propiedades de Fuentes
- font-family
-
serif
-
sans-serif
-
monospace
-
cursive
-
fantasy
- font-style
- font-size, font-weight
Ejemplo
BODY { font-family: "new century schoolbook", serif}
H1 EM {font-style: normal; font-weight: lighter}
|
style1.css
<html> <head>
<link rel="STYLESHEET" type="text/css" HREF="style1.css">
<title>Ejemplo 1</title>
</head>
<body>
<h1>Título 1</h1>
<h1> Título 1 <em>relevante</em></h1>
<h2> Título h2 <em>menos relevante</em></h2>
<p><em>Más texto relevante</em>
</body></html> |
ejemplo1.htm
Text Properties
-
word-spacing espacio entre
palabras
-
letter-spacing espacio entre
letras
-
text-decoration subrayado,
sobrerayado, flasheado
-
vertical-align baseline,
middle, sub, super, text-top, etc.
-
text-transform Mayúsculas o
minúsculas
-
text-align left, center, right
-
text-indent indentación de la primera
línea de texto en un párrafo (este texto es tan sólo para que el párrafo
expanda a más de una línea
-
line-height distancia entre líneas
base
Ejemplo anterior
<ul>
<li><div style="word-spacing: 0.5em"><tt>word-spacing</tt> espacio entre palabras</div>
<li><div style="letter-spacing: 0.1em"><tt>letter-spacing</tt> espacio entre letras</div>
<li><div style="text-decoration: blink"><tt>text-decoration</tt>
subrayado, sobrerayado, flasheado</div>
<li><div style="vertical-align: super"><tt>vertical-align</tt>
<i>baseline, middle, sub, super, text-top,</i> etc.</div>
<li><div style="text-transform:uppercase"><tt>text-transform</tt>
Mayúsculas o minúsculas</div>
<li><div style="text-align:right"><tt>text-align</tt> left, center, right</div>
<li><div style="text-indent:3cm"><tt>text-indent</tt> indentación de
la primera línea de texto en
un párrafo (este texto es tan sólo para que el párrafo expanda a
más de una línea</div>
<li><div style="line-height: 3cm"><tt>line-height</tt> distancia entre líneas base</div>
</ul>
Propiedades de Cajas
- Las cajas en CSS tienen las siguientes características:
- Cada elemento es un rectángulo,
- Cada elemento tiene un margen
- Dentro del margen, hay un borde opcional
- Dentro del borde hay un relleno opcional
Propiedades de Cajas (2)
- margin, margin-top, margin-bottom, margin-left, margin-right
- padding, padding-top, padding-bottom, padding-left, padding-right
- border, border-top, border-bottom, border-left, bottom-right
- width, height
- float
- clear
Ejemplos
H1 {margin-top: 2em; font-size:3em}
H1 {margin-right: 30%}
H1 {margin-left: 30%}
H1 {border-width: thin;color: blue; background: red}
P {border-width: thick; color: black}
IMG.icon {width: 100px}
IMG.icon {height: 100px}
|
style2.css
<html> <head>
<link rel="STYLESHEET" type="text/css" HREF="style2.css">
</head>
<body>
<h1>Título 1</h1>
<p>Más texto irrelevante</p>
<img src="_kaye.jpg" class="icon">
</body></html>
|
ejemplo2.htm
Propiedades de Clasificación
- Estas propiedades clasifican elementos en categorías más que especificar
parámetros visuales.
- display afecta como se ve el elemento en la pantalla (o papel):
- block abre una nueva caja (H1, P)
- list-item como block pero agrega un marcador de lista
- inline una nueva caja en la misma línea que el previo contenido
- white-space
- list-style-type: características de las listas:
- disc, circle, square, decimal, lower-roman, upper-roman,
lower-alpha, upper-alpha, none
- list-style-image
Ejemplos
P {display: block}
EM {display: inline}
IMG.non {display: none}
OL {list-style-type: alpha}
UL {list-style-image: url(_kaye.jpg)}
UL UL {list-style-type: circle}
P {margin-top: 2em; font-size:x-large}
P {margin-right: 30%}
P {margin-left: 30%}
P {border-width: thin;color: blue; background: red}
EM {border-width: thin;color: red; background: white}
|
style3.css
<html> <head>
<link rel="STYLESHEET" type="text/css" HREF="style3.css">
</head>
<body>
<h1>Título 1</h1>
<p>Más texto irrelevante con algo de <em>texto relevante</em></p>
<ol>
<li>Lista
<li>Ordenada
</ol>
<ul>
<li>Lista
<li>desordenada
<ul>
<li>lista desordenada
<li>dentro de lista desordenada
</ul>
</ul>
<img src="_kaye.jpg" class="non">
<hr>
<img src="_kaye.jpg">
</body></html>
|
ejemplo3.htm
Especificando el estilo
- 4 formas:
- link
- style
- @import (sólo puede existir al principio del estilo)
- style attribute
Ejemplo
<html> <head>
<link rel="STYLESHEET" type="text/css" HREF="style3.css">
<style TYPE="text/css">
@import "style1.css";
h1 {color: green}
</style>
</head>
<body>
<h1 >Título 1 <em > Em</em></h1>
<h1 style="color:cyan"> Titulo h1 </h1>
<p>Más texto irrelevante con algo de <em>texto relevante</em></p>
</body></html>
|
ejemplo4.htm
Agrupamiento
Herencia
- Generalmente un elemento hereda las características de su ancestro
- Default: body
- Algunas propiedades no se heredan: v.gr. background
Ejemplo 5
<html> <head>
<style TYPE="text/css">
body {color: red; background: url(_kaye.jpg)}
h1.dif {color: green}
</style>
</head>
<body>
<h1 >Título 1 </h1>
<h1 class="dif"> Titulo h1 </h1>
<p>Más texto irrelevante con algo de <em>texto relevante</em></p>
</body></html>
|
ejemplo5.htm
Herencia de valores porcentuales
Selectores
- Aplican selectivamente un estilo.
- Tres tipos:
- Clase
- ID
- Contextual
Clase
ID
Ejemplo 6
<html> <head>
<style TYPE="text/css">
body {color: black; background: white}
h1.dif {color: green}
#faye {color:yellow}
P #cat {color:green}
</style>
</head>
<body>
<h1 >Título 1 </h1>
<h1 class="dif"> Titulo h1 </h1>
<p id=faye>Más texto irrelevante con algo de <em>texto relevante</em></p>
<p id=cat>Más texto irrelevante con algo de <em>texto relevante</em></p>
</body></html>
|
ejemplo6.htm
Selectores de Contexto
- Permiten especificar propiedades que sólo serán aplicados bajo ciertas
excepciones.
- Cuando un elemento está incluído dentro de otro:
H1 EM {color:
black}
- Esta propiedad se aplicará en EM cuando esté dentro de
H1.
- La relación no es de padre, sino de ancestro.
Comentarios
- Estos se especificarán como los de C:
/* Este es un comentario
*/
Pseudoelementos y Pseudoclases
- Estos no existen como parte del HTML fuente
- Especifican características del medio ambiente donde el documento es
mostrado
Ejemplo: Anclas
- A:link, A:visited, A:active
- Liga por visitar, visitada y abajo del ratón, respectivamente.
Las clases no son equivalentes a las pseudoclases
- Las propiedades para pseudoclases no aplican a clases y
viceversa.
A:link { color: red}
<A CLASS=link NAME=patito>Adf
adf adf</A>
Uso de Pseuclases
Pseudoclases tipográficas
- Primera línea:
P:first-line {font-style: small-caps}
- Primer caracter:
P:first-letter {font-size: 200%}
La Cascada
Important
Algoritmo de Orden de la cascada
- Encuentra todas las declaraciones que apliquen al elemento en questión.
- Si no hay declaración, usa valor heredado
- Si no hay valor heredado, utiliza valor inicial de UA
- Ordenar las declaraciones por su peso (importantes son más valiosas que
las normales)
- Ordenar por origen:
- Autor
- Lector
- Agente de Usuario
- Ordenar por que tan específico es el selector: specificity. Para
encontrar la especificidad:
- Cuenta el número de atributos en el selector (a)
- Cuenta el número de atributos de clase en el selector (b)
- Cuenta el Número de nombres de etiquetas en el selector (c)
- Concatena los tres números (a b c) en una base lo suficientemente
grande. Este valor es la specificity de la propiedad.
BODY {background:white}
LI { color: cyan}
UL LI {color: blue}
UL UL LI { color: green}
#x34y {color:black}
LI.red {color:red}
UL UL LI.red {color: magenta}
#x34y {color:yellow}
|
style7.css
- Ordenar por orden en que se especifican: la última propiedad gana. Autores
tienen ventaja sobre el autor sobre el UA.
Ejemplo
BODY {background:white}
LI { color: cyan}
UL LI {color: blue}
UL UL LI { color: green}
#x34y {color:black}
LI.red {color:red}
UL UL LI.red {color: magenta}
#x34y {color:yellow}
|
style7.css
<html> <head>
<link rel="STYLESHEET" type="text/css" HREF="style7.css">
</style>
</head>
<body>
<ul>
<li>Item 1
<ul>
<li>Item en cuestion
<li class=red>¿Será rojo?
</ul>
<li class=red>En que color?
<li class=red id=x34y>¿Y este?
</ul>
</body></html>
|
ejemplo7.htm
Más información
© Daniel M.
Germán (dmg@csg.uwaterloo.ca)