CSS
- CSS Básico
- Referencias (V2)
- Metodología
- Ejemplos
- Otros Enlaces
Ruta: >Programación>CSS
(PREREQUISITOS: Tener conocimientos del lenguaje HTML, de sus tags y de su estructura, ya que el css se apoya directamente sobre este lenguaje.)
Una hoja de estilo CSS es una plantilla que permite cambiar el formato de presentación de cualquier etiqueta de HTML.
CSS también es un lenguaje que permite a un usuario asociar un estilo (por ejemplo, tipo de letra del texto, color del texto, fondo de la hoja, espacio entre líneas y letras, tamaño y color de los títulos, etc.) a los documentos estructurados (por ejemplo, documentos HTML y aplicaciones XML).
La gran importancia de las hojas css reside en que:
Existen tres técnicas esenciales que permiten autor aplicar el estilo CSS a un documento HTML:
Hoja de estilo insertada:
Por Ejemplo:
|
Hoja de estilo global:
Por Ejemplo:
|
Hoja de estilo vinculada:
Por Ejemplo:
|
Antes de entrar a fondo en la sintaxis de la hoja de estilo CSS, sugerimos seguir este sencillo ejemplo , ya que ayudará a entender mejor la necesidad de crear el estilo separado del contenido de la página.
En una página simple de html como ésta:
|
Queremos que el texto del body de la página html aparezca en azul. Tenemos tres opciones:
|
|
|
Las tres opciones darían como resultado esta vista de la página html:
Esto es una página simple de html. |
En principio, la tercera forma ofrece más ventajas, ya que permite aplicar una misma hoja css a todas las páginas html que queramos. Así, cuando queramos modificar el estilo, cambiando las características de esa única hoja CSS, automáticamente se actualizará el estilo de todas las hojas html que la utilicen.
<html> <head> <meta http-equiv="Content-Language" content="es"> <meta name="GENERATOR" content="Microsoft FrontPage 4.0"> <meta name="ProgId" content="FrontPage.Editor.Document"> <meta http-equiv="Content-Type" content="text/css; charset=windows-1252"> <link rel="stylesheet" type="text/css" href="C:/CSS/ejemplo1.css"/> <title>tilulo de página</title> </head> <body> <h2>Cabecera h2</h2> <p>Esto es un párrafo</p> <p>Esto es otro párrafo</p> </body> </html> |
<html> <head> <meta http-equiv="Content-Language" content="es"> <meta name="GENERATOR" content="Microsoft FrontPage 4.0"> <meta name="ProgId" content="FrontPage.Editor.Document"> <meta http-equiv="Content-Type" content="text/html; charset=windows-1252"> <link rel="stylesheet" type="text/css" href="C:/CSS/ejemplo1.css"/> <title>tilulo de página</title> </head> <body> <h2>Cabecera h2</h2> <p>Esto es un párrafo</p> <p>Esto es otro párrafo</p> </body> </html> |
En un documento HTML la información del estilo puede estar:
<p style='color: red'>Este documento irá en rojo</p> </body> |
En la pantalla aparecerá Este documento irá en rojo.
<head> <style> h1 { color: FF0000 } p {text-align: justify} </style> </head> <body> <h1>Este texto irá en rojo</h1> </body> |
En la pantalla aparecerá Este documento irá en rojo.
<html> <head> <meta http-equiv="Content-Language" content="es"> <meta name="GENERATOR" content="Microsoft FrontPage 4.0"> <meta name="ProgId" content="FrontPage.Editor.Document"> <meta http-equiv="Content-Type" content="text/css; charset=windows-1252"> <link rel="stylesheet" type="text/css" href="C:/CSS/ejemplo1.css"/> <title>tilulo de página</title> </head> <body> <h2>Cabecera h2</h2> <p>Esto es un párrafo</p> <p>Esto es otro párrafo</p> </body> </html> |
Determinada incluso por el servidor HTTP.
Tanto el publicista como el lector desean especificar como quieren visualizar la información.
Publicista:Entonces surge el Conflicto de estilo:¿Que pasa si tanto el lector como el publicista (autor) desean especificar su estilo?
Podemos condensar tres reglas con idénticas declaraciones en una sola:
h1 { font-family: sans-serif } h2 { font-family: sans-serif } h3 { font-family: sans-serif } |
Es equivalente a:
h1, h2, h3 { font-family: sans-serif } |
h1 { font-family: sans-serif } h1 { color: blue } h1 { background-color: purple } |
Es equivalente a:
h1 {font-family: sans-serif; color: blue; background-color: purple} |
h1 { font-style: normal } h1 { font-size: 14pt } h1 { font-family: sans-serif } |
Es equivalente a:
h1 {font: normal 14pt sans-serif} |
Ejemplo:
Default: body Algunas propiedades no se heredan: v.gr. background |
1. Si la cascada da como resultado un valor, lo usa.
2. De lo contrario, si la propiedad es heredada, usa el valor del elemento padre, generalmente el valor computado.
3. De otro modo, usa el valor inicial de la propiedad. El valor inicial de cada propiedad es indicado en la definición de la propiedad.
Suponga que hay un elemento h1 con un elemento enfatizado adentro, por ejemplo, el elemento em. Éste elemento heredará las propiedades del elemento padre (h1), por ejemplo, el color azul del texto:
<h1>El título es de <em>color azul</em> en su texto</h1> |
Dará como resultado:
El título es de color azul en su texto. |
body { color: black } |
Dada la siguiente hoja de estilo, el valor de font-size del elemento h1, dado en porcentaje, no será heredado, pero sí el valor 10pt del elemento body:
body { font-size: 10pt } h1 { font-size: 120% } |
Al aplicar la hoja CSS en el siguiente fragmento del documento html, la propiedad 'font-size' del elemento h1 tendrá el valor computado '12pt' (el 120% de 10pt, el valor del padre). Como el valor computado de 'font-size' es heredado, el elemento em tendrá el valor computado '12pt' también. Si la aplicación del usuario no tiene la fuente de 12pt disponible, el valor real de 'font-size' para h1 y también para em podría ser, por ejemplo, '11pt'.
<body> <h1>Un <em>gran</em> titular</h1> </body> |
Las propiedades 'color' y 'background' son definidas para el elemento body. En todos los demás elementos, el valor de 'color' será heredado y el fondo será transparente. Si estas reglas son parte de la hoja de estilo del usuario, el texto negro sobre un fondo blanco será forzado en todo el documento.
body { color: black !important; background: white !important; } * { color: inherit !important; background: transparent; } |
1. Gráfico
2. Braile
3. Texto solamente
Hoja de estilo insertada: el estilo se define directamente en el documento. El estilo insertado no se diferencia demasiado del HTML tradicional, pero su inconveniente es que el aspecto del documento no es fácil de modificar.
Hoja de estilo global: define el estilo del documento al comienzo del mismo, dentro del tag <head>. El uso de hojas de estilo globales permite separar mejor la presentación de los contenido y facilita una rápida y sencilla modificación, pero aún así, si se quieren aplicar a varios documentos, lleva más tiempo, porque hay que modificarlo uno a uno.
Hoja de estilo vinculada: define el estilo independientemente en otro documento. El uso de hojas de estilo vinculadas aporta mayores ventajas al permitir que el aspecto de una serie de páginas se definan en un único archivo CSS, que se aplica al documento CSS mediante un link en la cabecera del documento HTML.
Autor: El autor especifica las hojas de estilo para un documento fuente de acuerdo a las convenciones del lenguaje del documento.
Por ejemplo, en HTML, las hojas de estilo pueden incluirse en el documento o vincularse externamente.
Usuario: El usuario puede especificar información de estilo para un documento particular.
Por ejemplo, el usuario puede especificar un archivo que contenga una hoja de estilo o la aplicación del usuario puede proporcionar una interfaz que genere una hoja de estilo del usuario (o comportarse como si lo hubiese hecho).
Aplicaciones del usuario: Las aplicaciones del usuario con conformidad deben aplicar una hoja de estilo predeterminada (o comportarse como si lo hubiesen hecho) previa a todas las hojas de estilo para un documento. La hoja de estilo predeterminada de una aplicación del usuario debe presentar los elementos del lenguaje de documento de un modo que satisfaga las expectativas generales de presentación del lenguaje del documento.
Por ejemplo, en los navegadores visuales, el elemento EM en HTML es presentado usando una fuente itálica.
Para encontrar el valor para una combinación elemento/propiedad, las aplicaciones del usuario deben aplicar el siguiente orden de disposición:
1. Hallar todas las declaraciones que se aplican al elemento y la propiedad en cuestión, para el tipo de medio al que está dirigido.
Las declaraciones se aplican si el selector asociado coincide con el elemento en cuestión.
(Un tipo de medio de CSS designa un juego de propiedades CSS. Una aplicación del usuario que aspira a dar soporte a un tipo de medio por nombre debe implementar todas las propiedades que se aplican a ese tipo de medio.)
2. La primera disposición de las declaraciones se hace por fuerza y origen:
3. La segunda disposición es por la especificidad del selector:
4. Finalmente, se dispone por el orden especificado:
1. Encontrar todas las declaraciones que apliquen al elemento en questión.
2. Ordenar las declaraciones por importancia (son más importantes las que tengan !important que las normales).
3. Ordenar por origen:
4. Ordenar por el selector específico: <em>specificity</em>. Para encontrar la especificidad:
|
5. Ordenar por orden en que se especifican: la última propiedad gana. Autores tienen ventaja sobre el autor sobre el UA.
body { color: blue } |
Por ejemplo: /* esto es un comentario */.
Se pueden clasificar los selectores en dos tipos:
El selector simple:
Por ejemplo:
p { color: blue } /* selector simple de elemento único*/ .especial {font-weight:bold} /* selector simple de clase */ #amarillo { background: yellow} /* selector simple de ID*/ |
El selector contextual:
Por ejemplo:
ul li.especial .cool {font-weight:bold; font-size: 120%; } /* Estilo para cualquier elemento del documento html que cumpla estas condiciones: un elemento de class="cool", que esté contenido en un elemento li de class="especial", y además esté contenido en un elemento ul */ |
h1, h2, h3, h4 { color: blue } /* Selecores agrupados */ |
cabecera { color: blue } /* No existe un tag en html que sea "cabecera" */ h1, "h2" { color: blue } /* Uso de comillas "h2" es inválido */ h1 & h2 { color: blue } /* Signo & es inválido */ |
Para saber más, consultar el tema ampliado sobre los Selectores
body { } /* Declaración vacía */ body { color: red } /* Declaración única: propiedad "color", valor "red" */ |
h1 { font-weight: bold } h1 { font-size: 14pt } h1 { font-family: verdana } h1 { font-style: normal } |
Podemos escribirlo de la siguiente forma, poniendo una declaración en cada línea, y separándolas mediante el signo punto y coma (menos la última de todas, que no hace falta que lo lleve):
h1 { font-weight: bold; font-size: 14pt; font-family: verdana; font-style: normal } |
h1 { color: green } /* la propiedad color tiene una palabra */ h1 { background-color: white } /* propiedad color de fondo está compuesta de dos palabras separadas por un guión */ |
Por ejemplo: en el caso de la propiedad "margen", pueden escribirse los cuatro valores correspondientes a los márgenes de la página con respecto al texto, de la siguiente manera:
p { margin-left: 2cm; margin-right: 4cm; margin-top: 3cm; margin-bottom: 4cm; } |
Estas cuatro propiedades del párrafo, podrían resumirse en la misma línea, si se agrupan los cuatro valores en una sola propiedad:
p { margin: 2cm 4cm 3cm 4cm } |
Daría como resultado en el explorador la siguiente página:
Esta es una página con los cuatro márgenes definidos en la hoja CSS. |
- Identificadores-contadores (counter-increment: par-num, etc.)
- Cadenas de caracteres (de la a-z, sin signos de puntuación, en inglés)
- Números enteros (de 0 a 9) y reales (enteros con signos + y -)
- Medidas de dimensiones vertical-horizontal (em, cm, pixel, pt, etc.)
- Porcentajes (50%)
- Direcciones URL. Se escriben URL("http://tic.dyndns.org/image.jpg")
- Colores (red, rgb(255,0,0), #080800)
- Ángulos en hojas de texto auditivas (en grados)
- Tiempos en hojas de texto auditivas (milisegundos o segundos)
- Frecuenciasen hojas de texto auditivas (en hertz o kilohertz).
h1 { font-style: 12pt } /* Valor inválido 12pt, no es un valor de "font-style" */ p { color: blue; font-vendor: any } /* No existe la propiedad "font-vendor" */ |
|
body {background: white} h2 {color: pink; font-size:18pt} p {color: blue; font-size:12pt} |
Guardamos esta página con la extensión .css en un directorio de nuestro equipo, por ejemplo C:/CSS/ejemplo1.css. Hay que tener en cuenta que la hoja CSS debe estar en el mismo directorio o nivel que las páginas html a las que se va a aplicar, o en su defecto, si está en un directorio superior, hay que poner bien la dirección de la hoja CSS, porque si no, no se aplicará.
|
-Esto es la cabecera h2- Esto es un párrafo. Esto es otro párrafo. |
Tenemos la siguiente hoja css, con comentarios:
p {color: navy; font-family: verdana} /* comentario del párrafo */ |
Cabecera h1 Párrafo Párrafo |
Los signos de comentario sólo anula las reglas que queden entre ellos:
/* comienza el comentario y anula las siguientes reglas: h1 {color: purple; background-color: pink} p {color: navy; font-family: verdana} termina el comentario */ /* pero no anula estas reglas: */ h2 {color: purple; background-color: black} p {color: navy; font-family: verdana} |
Un comentario dentro de otro es inválido. Por ejemplo:
/* Esto es un /* comentario */ inválido */ |
Se puede utilizar también el comentario de XML: <!-- comentario --> , pero sólo para escribir texto, ya que no anulan las reglas. Por ejemplo:
<!-- Esto es un comentario de XML en CSS --> <!-- Esto es un comentario inválido: h2 {color: purple; background-color: black} p {color: navy; font-family: verdana} --> |
Tenemos la siguiente hoja html:
De acuerdo con estas reglas, el lienzo subyacente del siguiente documento HTML tendrá un fondo "mármol".
Esto es un fondo con tréboles. |
Tenemos una hoja CSS con las siguientes propiedades para el párrafo: texto indentado 3cm, alineado a la izquierda de la página, subrayado, sin sombra, con distancia de 0´1cm entre las letras, con distancia de 0.50cm entre palabras, con la primera letra de cada palabra en capital, y los espacios en blanco normales. Sería de este modo:
Daría como resultado algo como esto:
Hola Esto Es Un Texto De Párrafo. Hola Esto Es Un Texto De Párrafo.
Hola Esto Es Un Texto De Párrafo. Hola Esto Es Un Texto De Párrafo.
Hola Esto Es Un Texto De Párrafo. Hola Esto Es Un Texto De Párrafo.
Un signo es la representación gráfica concreta con la que se presenta un signo abstracto, en forma de contorno o mapa de bits que puede dibujarse en la pantalla o en papel.
Una fuente es un conjunto de signos gráficos, observando todos ellos el mismo motivo básico de acuerdo al diseño, tamaño, apariencia y otros atributos asociados a todo el conjunto.
1. ¿Está especificada, directamente o por herencia, una fuente para un carácter?
2. ¿El usuario tiene disponible esta fuente?
3. Si es así, ¿qué signo(s) le será asignado a este carácter o secuencia de caracteres?
4. Si no, ¿qué se deberá hacer? ¿Deberá ser reemplazada por otra fuente? ¿Puede ser sintetizada la fuente? ¿Puede recuperarse de la Web?
1. Los autores de hojas de estilo pueden describir las fuentes que desean que se usen.
2. Las aplicaciones del usuario pueden seleccionar una fuente cuando la requerida por el autor no está disponible en ese momento.
3. Permite descargar "Fuentes web" de otras páginas web y aplicarlas desde nuestro equipo.
Por ejemplo, el término 'itálica' es usado comúnmente para definir al texto inclinado, pero el texto inclinado también puede denominarse oblicuo, sesgado, inclinado o cursivo.
Otro ejemplo, una fuente que podría considerarse como negrita puede ser descripta como regular, media, semi-negra o ultra-negra, dependiendo de cuán negra sea la versión "normal" de la fuente dentro del diseño.
font-family Especifica qué familia será usada para procesar visualmente el texto. Las familias pueden ser: cursiva, otra negrita, otra condensada o versalitas.
Los nombres de las familias de fuentes no se restringen a caracteres latinos y pueden estar agrupadas en diferentes categorías: aquellas con o sin serif, aquellas cuyos caracteres están o no espaciados proporcionalmente, las que imitan la escritura manual, aquellas que son tipos de fantasía, etc.
font-style Especifica si el texto será procesado visualmente usando un tipo en versión normal, itálica u oblicua. La itálica es la versión cursiva que acompaña al tipo normal, pero no tanto como para resultar una letra manuscrita. La oblicua es una versión inclinada del tipo normal y es usada más comúnmente en las sans-serif. Esta definición evita tener que denominar un tipo ligeramente inclinado como oblicuo o una tipografía griega normal como itálica.
font-variant Indica si el texto debe ser procesado visualmente usando los signos normales para los caracteres en minúsculas o usando versalitas para las minúsculas. Una fuente particular puede contener sólo signos en minúsculas, sólo versalitas o ambos tipos de signos; esta propiedad se usa para solicitar la fuente apropiada y, si la fuente contiene ambas variantes, el signo apropiado.
font-weight Se refiere al grado de solidez o de ligereza de los signos usados para procesar visualmente el texto, con relación a otras fuentes en la misma familia.
font-stretch Indica la cantidad deseada de condensación o expansión de los signos usados para procesar visualmente el texto, con relación a otras fuentes en la misma familia.
font-size Se refiere al tamaño de la fuente desde una línea de base a otra cuando tiene asignada una interlinea normal (en términos CSS, esto es así cuando la propiedades 'font-size' y 'line-height' tienen el mismo valor).
Tenemos la siguiente hoja CSS:
El resultado sería:
Hola, esto es un ejemplo de las propiedades de las fuentes en CSS.
@font-face {font-family: FontName; src:url(filename.eot);}
Por Ejemplo:
Tenemos la siguiente hoja CSS con una fuente establecida para la página web:
@font-face { font-family: demoFont; src: url(http://unlugar.com/midirfont/coolFont.eot) } h1 {font-family: demoFont, arial, sans-serif}
Así, la fuente es cargada desde la url especificada, su nombre es "coolfont.eot", y se le ha denominado "demoFont" para aplicarla tabién al tipo de fuente utilizada para la cabecera h1.
Tenemos la siguiente hoja html:
p { border-style: double border-color: #FF0000 #0000FF border-width: 10px 10px 10px 10px }
Daría como resultado:
Característica de los bordes |
Estilo del borde: Doble |
Ancho del margen: 10px |
Color de los bordes: rojo y azul |
El valor computado de los márgenes de la caja encima y abajo del área de la página es '0'.
Tenemos la siguiente hoja html:
Y se vería de la siguiente forma:
Hola, esto es un ejemplo de las propiedades de las fuentes en CSS. Tiene márgenes arriba, abajo, a la derecha y a la izquierda. |
El siguiente caso ilustra cómo los marcadores pueden ser usados para agregar puntos después de cada ítem de una lista numerada. Este programa HTML y esta hoja de estilo:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"> <html> <head> <title>Creando una lista con marcadores</TITLE> <style type="text/css"> li {list-style-type: roman} </style> </head> <body> <ol> <li> Este es el primer ítem.</li> <li> Este es el segundo ítem.</li> <li> Este es el tercer ítem.</li> </ol> </body> </html>
produciría algo semejante a esto:
I. Este es el primer ítem. II. Este es el segundo ítem. III. Este es el tercer ítem.
En el siguiente ejemplo, el contenido es centrado dentro de una caja de marcador de un ancho fijo:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"> <html> <head> <title>Alineación del contenido en la caja del marcador</title> <style type="text/css"> li:before { display: marker; content: "(" counter(counter) ")"; counter-increment: counter; width: 6em; text-align: center; } </style> </head> <body> <ol> <li>Este es el primer ítem.</li> <li>Este es el segundo ítem.</li> <li>Este es el tercer ítem.</li> </ol> </body> </html>
produciría algo semejante a esto:
(1) Este es el primer ítem. (2) Este es el segundo ítem. (3) Este es el tercer ítem.
.pastoral { color: green } /* todos los elementos con class~=pastoral */ |
|
|
|
Nota. CSS le otorga tanto poder al atributo "class", que los autores podrían conceptualmente diseñar su propio "lenguaje del documento" basados en elementos con casi ninguna presentación asociada (tales como div y span en HTML) y asignando información acerca del estilo a través del atributo "class". Los autores deben evitar esta práctica ya que los elementos estructurales de un lenguaje de documento comúnmente tienen significados aceptados y reconocidos mientras que las clases definidas por el autor no pueden tenerlos.
|
Cuando el selector universal está compuesto de varios componentes, se puede escribir de estas maneras:
*[LANG=fr] y [LANG=fr] son lo mismo. *.warning y .warning son lo mismo. *#myid y #myid son lo mismo. |
La siguiente regla que tiene por selector tipo a la cabecera h1 en el documento CSS, y equivale a todos los elementos o tags h1 de la estructura del documento HTML:
h1 { font-family: sans-serif } |
|
Por ejemplo, tenemos estas dos reglas:
p { color: black } |
Aunque la estas reglas definen el color negro del texto en la cabecera h1 y el párrafo, el efecto se perderá en un caso como el que sigue, ya que ambos poseen el mismo color y p es descendiente de h1:
|
Se puede resolver este caso si se le añade a las reglas anteriores una regla que asigna otro color al texto, pero siempre que un p aparezca en cualquier lugar dentro de un h1. Así, el texto de de h1 será de color negro, pero el de h1 p será rojo:
p { color: black } h1 p { color: red } |
El resutado será
El título es un párrafo muy importante |
La siguiente regla asigna el estilo de todos los elementos p que son hijos de body:
body > p { line-height: 1.3 } |
En el siguiente ejemplo se combinan un selector de descendiente con un selector de hijo:
div ol>li p { color: red; font-family: verdana } |
Esta regla equivale a:
Un elemento "p" es descendiente de un elemento "li";
El elemento "li" debe ser hijo de un elemento "ol";
El elemento "ol" debe ser descendiente de un "div".
En estos casos, el espacio en blanco opcional alrededor del combinador ">" se quita.
En la siguiente regla se establece que cuando un elemento p sigue inmediatamente a un elemento math, su color será negro:
math + p { color: black } |
Se puede reducir el espacio vertical (en milímetros) que separa a dos cabeceras distintas, h1 y h2, cuando h2 sigue inmediatamente a h1, como muestra el siguiente ejemplo:
H1 + H2 { margin-top: -5mm } |
|
[att] Equivale con los elementos que tienen asignado el atributo "att", cualquiera sea el valor del atributo.
[att=val] Equivale cuando el valor del atributo "att" del elemento es exactamente "val".
[att~=val] Equivale cuando el valor del atributo "att" del elemento es una lista de "palabras" separadas por espacios, una de las cuales es exactamente "val". Si se usa este selector, las palabras en el valor no deben contener espacios (ya que ellas están separadas por espacios).
[att|=val] Equivale cuando el valor del atributo "att" del elemento es una lista de "palabras" separadas por guiones, comenzando con "val". La correspondencia siempre comienza al principio del valor del atributo.
En este ejemplo, el selector de atributo equivale a todos los elementos h1 que especifican el atributo "title", cualquiera sea su valor:
|
En el siguiente ejemplo, el selector equivale a todos los elementos span cuyo atributo "class" tiene exactamente el valor "ejemplo":
|
Múltiples selectores de atributos pueden ser usados para referirse a varios atributos de un elemento o, incluso, varias veces al mismo atributo. Aquí, el selector equivale a todos los elementos span cuyo atributo "hola" tiene exactamente el valor "Cleveland" y cuyo atributo "adios" tiene exactamente el valor "Columbus":
|
Los siguientes selectores ilustran la diferencia entre "=" y "~=". El primer selector equivale, por ejemplo, al valor "copyright copyleft copyeditor" para el atributo "rel". El segundo selector sólo será equivalente cuando el atributo "href" tenga el valor "http://www.w3.org/".
A[href="http://www.w3.org/"] |
La siguiente regla esconde a todos los elementos cuyo valor del atributo "lang" es "fr" (es decir, la lengua es el francés).
|
La siguiente regla será equivalente a valores del atributo "lang" que empiecen con "en", incluyendo "en", "en-US" y "en-cockney":
|
De modo similar, la siguiente regla de una hoja de estilo auditiva permite leer un escrito en voz alta con voces diferentes para cada rol:
{ voice-family: "Lawrence Olivier", charles, male } DIALOGUE[character=julieta] { voice-family: "Vivien Leigh", victoria, female } |
Podemos asignar información de estilo a todos los elementos con class~="pastoral", de las dos formas que se escriben a continuación:
.pastoral { color: green } /* todos los elementos con class~=pastoral */ |
En el siguiente caso sólo se asigna estilo a los elementos h1 con class~="pastoral". Para equivaler a un subconjunto de valores "class", cada valor debe ir precedido por un ".", en cualquier orden:
|
Dadas estas reglas, el siguiente primer ejemplo de h1 no tendría el texto en verde, mientras que el segundo sí.
<h1 class="pastoral">Muy verde</h1> |
La siguiente regla equivale a cualquier elemento p a cuyo atributo "class" le ha sido asignado una lista de valores separados por espacios que incluyen "pastoral" y "marino". Esta regla equivale en el caso de class="pastoral rojo azul marino" pero no se corresponde en class="pastoral rojo":
|
Nota. CSS le otorga tanto poder al atributo "class", que los autores podrían conceptualmente diseñar su propio "lenguaje del documento" basados en elementos con casi ninguna presentación asociada (tales como div y span en HTML) y asignando información acerca del estilo a través del atributo "class".
Los autores deben evitar esta práctica ya que los elementos estructurales de un lenguaje de documento comúnmente tienen significados aceptados y reconocidos mientras que las clases definidas por el autor no pueden tenerlos.
El siguiente selector de id equivale al elemento h1 cuyo atributo id tiene el valor "capitulo1":
|
En el siguiente ejemplo, la regla de estilo equivale al elemento que tiene el valor de id "z98y". La regla será, de este modo, equivalente al elemento p:
<head> <title>Equivalencia con p</title> <style type="text/css"> *#z98y { letter-spacing: 0.3em } </style> </head> <body> <p id=z98y>Texto espaciado</p> </body> |
El selector de ID tiene una precedencia mayor que los selectores de atributos. En el ejemplo que sigue, sin embargo, la regla de estilo sólo equivale a un elemento H1 que tiene un valor ID de "z98y". La regla no será equivalente con el elemento p en este ejemplo:
<head> <title>Equivalencia con H1 solamente</title> <style type="text/css"> h1#z98y { letter-spacing: 0.5em } </style> </head> <body> <p id=z98y>Texto espaciado</p> </body> |
h1 { color: green } /* la propiedad color tiene una palabra */ h1 { background-color: white } /* propiedad color de fondo está compuesta de dos palabras separadas por un guión */ |
p { font-style: italic} H1 { background-color: blue; color: yellow} |
El elemento p (párrafo) sólo tiene una propiedad, que es el estilo de la fuente (itálica). El elemento h1 (cabecera) tiene dos propiedades separadas por punto y coma, el fondo azul y el color del texto amarillo.
- Color de texto y de fondo, incluyendo el fondo de imágenes.
- Fuentes del texto.
- Propiedades del texto (espaciamiento entre palabras, entre letras).
- Cajas (márgenes, bordes, elementos flotantes).
- Clasificaciones (Control de la apariencia de listas).
1. Propiedades del color de texto y de fondo (también fondo de imágenes):
body {background-image:url("/Imagenes/ICONOS/DEVIL.GIF"")} h1 {color: white; background-color: blue} p {color: blue; background-color: yellow} |
El resultado sería:
Cabecera h1 Esto es un párrafo. Esto es otro párrafo. |
2. Propiedades de la fuentes del texto (tipo de letra, tamaño, fuente):
body {font-family: courier} h1 {font-weight: bold; font-style: oblique} p {font-style: normal; font-size: 100%; font-family: courier} |
El resultado sería:
Cabecera h1 Esto es un párrafo. Esto es otro párrafo. |
3. Propiedades del texto (espaciamiento entre palabras, entre letras, alineación):
h1 {letter-spacing: 10px} p {text-align: center} |
El resultado sería:
C a b e c e r a h 1 Esto es un párrafo. Esto es otro párrafo. |
4. Cajas (márgenes, bordes, elementos flotantes):
h1 {margin-left: 2cm} p {margin: 4cm 2cm 2cm 2cm} |
El resultado sería:
|
display afecta como se ve el elemento en la pantalla (o papel):
white-space
list-style-type características de las listas:
list-style-image
Tenemos la siguiente hoja CSS, llamada "style3.css":
|
La hoja CSS es aplicada al siguiente documento html, y se hace mediante un link situado en la cabecera de la página. Las propiedades descritas en el CSS se aplicarán a los elementos del body:
|
Aplicado el CSS, al abrir el documento html con un explorador, su vista resultaría:
Título 1Más texto con algo de texto relevante
|
blockquote p { font-style: italic} |
- 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.
límite del contenido o límite interno: El límite del contenido rodea al contenido procesado del elemento.
límite de padding: El límite de padding (relleno) rodea a la caja de relleno. Si padding tiene un ancho de 0, el límite del relleno es el mismo que el límite de contenido. El límite del relleno de una caja define el límite de la caja de contención establecida por la caja.
límite de border: El límite de border (borde) rodea el borde de la caja. Si border tiene un ancho de 0, el límite del borde es el mismo que el límite del relleno (padding).
límite de margin o límite externo: El límite de margin (margen) rodea el margen de la caja. Si margin tiene un ancho de 0, el límite del margen es el mismo que el límite del borde (border).
Area del contenido: La propiedad 'background' del elemento generador.
Area del relleno (padding): La propiedad 'background' del elemento generador.
Area del borde (border) Las propiedades del borde del elemento generador.
Area del margen (margin): Los márgenes son siempre transparentes.
Por ejemplo:
|
- medida: Especifica un ancho fijo.
Ejemplo: margin-top: 1cm.
- porcentaje: El porcentaje es calculado con respecto al ancho del bloque de contención de la caja generada. Esto es así para 'margin-top' y 'margin-bottom', excepto en el contexto de la página, donde los porcentajes se refieren a la altura de la caja de la página.
Ejemplo: margin-bottom: 10%.
- auto: Los valores computados de las propiedades 'margin-left', 'margin-right', 'left' y 'right' de un elemento dependen del tipo de caja generada y la relación entre sí. En principio, los valores computados son los mismos valores especificados, con 'auto' reemplazado por algún valor apropiado, aunque existen excepciones.
Ejemplo: margin-left: auto.
Por ejemplo:
'margin-top', 'margin-right', 'margin-bottom', 'margin-left' Valor: <margin-width> | inherit Inicial: 0 Se aplica a: todos los elementos Se hereda: no Porcentajes: se refieren al ancho del bloque de contención Medios: visuales |
<p>Este es un párrafo normal.<p> <p class="gato">Este es un párrafo de clase gato.<p> <p class="perro">Este es un párrafo de clase perro.<p>Hay un párrafo normal, y para diferenciar los otros, se les incluye una clase a cada uno, siendo una "gato" y la otra "perro".
p {color: black}
p.gato {color: red}
p.perro {color: brown}
Este es un párrafo normal.
Este es un párrafo de clase gato.
Este es un párrafo de clase perro.
<p>Este es un párrafo normal.<p> <p id="gato">Este es un párrafo de clase gato.<p> <p id="perro">Este es un párrafo de clase perro.<p>Hay un párrafo normal, y para diferenciar los otros, se les incluye una clase a cada uno, siendo una "gato" y la otra "perro".
p {color: black} p#gato {color: red} p#perro {color: brown}
Este es un párrafo normal.
Este es un párrafo de clase gato.
Este es un párrafo de clase perro.
Daria como resultado un hiperenlace de color rojo:
Esto es un link de clase "gatito".
El selector equivale a cualquier elemento p que sea el primer hijo de un elemento div. La regla elimina el sangrado del primer párrafo de un div:
Este selector sería equivalente a p dentro de div en el siguiente fragmento:
pero no se correspondería con el segundo p en el siguiente fragmento:
La siguiente regla especifica 'bold' para el peso de la fuente de cualquier elemento em que es algún descendiente de un elemento p que es un primer hijo:
Observe que toda vez que las cajas anónimas no forman parte de la estructura del documento, no se cuentan en el cálculo del primer hijo. Por ejemplo, aquí el em es el primer hijo de p:
Los siguientes dos selectores son equivalentes:
* < a:first-child ("a" es el primer hijo de cualquier elemento)La pseudo-clase :link se aplica a los vínculos que aún no han sido visitados.
La pseudo-clase :visited se aplica una vez que el vínculo ha sido visitado por el usuario.
Nota. Después de cierta cantidad de tiempo, las aplicaciones del usuario pueden elegir devolver un vínculo visitado a la condición de (no visitado) ':link'.
El lenguaje del documento determina qué elementos son las anclas de orígen de los hipervínculos. Por ejemplo, en HTML 4.0, las pseudo-clases link se aplica a los elementos "a" con el atributo "href". De este modo, las siguientes dos declaraciones CSS2 tienen un efecto similar:
Si el siguiente link:
ha sido visitado, esta regla provocará que sea azul:
Una hoja de estilo puede especificar que la propiedad 'font-size' de un vínculo :active debe ser mayor que la de un vínculo inactivo, pero como esto puede ocasionar que las letras cambien de posición cuando el lector selecciona el vínculo, una "au" puede ignorar la regla de estilo correspondiente:
a:link { color: red } (vínculos no visitados)Observe que a:hover debe ir después que las reglas a:link y a:visited, de otro modo las
reglas de cascada ocultarán la propiedad 'color' de la regla a:hover.
También, debido a que
a:active está ubicada después de a:hover, el color activo (lime) será aplicado cuando el usuario
active y señale el elemento a.
Un ejemplo de combinación de pseudo-clases dinámicas:
El último selector equivale a los elementos a que se encuentran en la pseudo-clase :focus y en la pseudo-clase :hover.
La regla siguiente significa "convertir las letras de la primera línea de cada párrafo en mayúsculas". Sin embargo, el selector "p:first-line" no equivale a ningún elemento HTML real. Se corresponde con un pseudo-elemento que las aplicaciones del usuario con conformidad insertarán al comienzo de cada párrafo.
Observe que la medida de la primer línea depende de un número de factores, incluyendo el ancho de la página, el tamaño de la fuente, etc. De este modo, un párrafo HTML común como:
las líneas que resultan partidas como sigue:
pueden ser "re-escritas" por las aplicaciones del usuario para incluir la secuencia ficticia de marcas para :first-line. Esta secuencia ficticia de marcas ayuda a mostrar cómo se heredan las propiedades.
Si un pseudo-elemento divide un elemento real, el efecto deseado a menudo se consigue con una secuencia ficticia de marcas que cierra y reabre el elemento. De este modo, si marcamos el párrafo anterior con un elemento SPAN:
la aplicación del usuario puede generar las marcas de inicio y cierre apropiadas para SPAN cuando inserta la secuencia ficticia de marcas para :first-line.
El pseudo-elemento :first-line sólo puede ser aplicado en elementos a nivel de bloque.
El pseudo-elemento :first-line es similar a un elemento a nivel de línea, pero con ciertas restricciones. Sólo las siguientes propiedades se aplican al pseudo-elemento :first-line: propiedades de la fuente, propiedades del color, propiedades del fondo, 'word-spacing', 'letter-spacing', 'text-decoration', 'vertical-align', 'text-transform', 'line-height', 'text-shadow' y 'clear'.
*propiedades de la fuente
*propiedades del color
*propiedades del fondo
'text-decoration'
'vertical-align' (sólo si 'float' es 'none'),
'text-transform'
'line-height'
*propiedades de los márgenes
*propiedades del relleno
*propiedades de los bordes
'float'
'text-shadow'
'clear'.
La siguiente CSS2 hará una capitular caída que abarca dos líneas:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<html> <head> <title>Capitular caída</title> <style type="text/css"> p { font-size: 12pt; line-height: 12pt; color: blue } p:first-letter { font-size: 200%; font-style: italic; font-weight: bold; float: left; color: red } span { text-transform: uppercase } </style> </head> <body>
<p><span>Algunas</span> palabras de un artículo en un periódico.</p> </body> </html>
Este ejemplo sería formateado como sigue:
Algunas palabras de un artículo
en un periódico, siendo la primera letra
una letra capital.
La secuencia ficticia de marcas es:
Observe que la marca para el pseudo-elemento :first-letter es contigua al contenido (es decir, el carácter inicial), mientras que la marca de inicio del pseudo-elemento :first-line se inserta después de la marca de inicio del elemento al que está asignado.
Con el propósito de conseguir el formato de las capitulares caídas tradicionales, las aplicaciones del usuario pueden aproximar los tamaños de la fuente, por ejemplo para emparejar las líneas de base. Además, el contorno del signo puede ser tenido en cuenta al establecer el formato.
La puntuación (es decir, los caracteres definidos en Unicode [UNICODE] en las clases de puntuación "open" (Ps), "close" (Pe) y "other" (Po)), que precede a la primera letra debe se incluida, como en:
'Más vale pájaro en mano
que cien volando'
dice un proverbio.
Los pseudo-elementos :first-letter equivalen a partes de los elementos a nivel de bloque solamente.
Algunos lenguajes pueden tener reglas específicas acerca de cómo tratar ciertas combinaciones de letras. En alemán, por ejemplo, si la combinación de las letras "ij" aparece al comienzo de una palabra, ambas letras deberían ser consideradas dentro del pseudo-elemento :first-letter.
El siguiente ejemplo ilustra cómo pueden interactuar los pseudo-elementos que se superponen. La primera letra de cada elemento p será verde con una tamaño de fuente de '24pt'. El resto de la primer línea formateada será azul mientras que el resto del párrafo será rojo.
p { color: red; font-size: 12pt } p:first-letter { color: green; font-size: 200% } p:first-line { color: blue } <p>Un texto corto que ocupa dos líneas</p>
Asumiendo que el corte de la línea ocurre antes de la palabra "ocupa", la secuencia ficticia de marcas para este fragmento podría ser:
Observe que el elemento :first-letter está dentro del elemento :first-line. Las propiedades adjudicadas a :first-line son heredadas por :first-letter, pero son anuladas si la misma propiedad es determinada en :first-letter.
Página generada automáticamente desde la Base de Datos: CSS/ el 27/3/2008 19:58:47