CSS 2 Para XML
Autor: F. Javier García Castellano Web: http://decsai.ugr.es/~fjgc, Mail: fjgc@decsai.ugr.es |
(C) GeNeura Team Web: http://geneura.ugr.es, Mail: tutti@geneura.ugr.es |
La especificación de CSS2 fue publicada en W3C en 1998 tanto para HTML como para XML, aunque es con XML donde toma la potencia real que tiene.
CSS2 incorpora herramientas para los desarrolladores WEB y para los diseñadores y no sólo añade funcionabilidad sino que también redefine algunas de las ya especificadas en CSS1. Estas nuevas características permiten al usuario selecionar y formatear elementos de forma precisa.
Se han añadido pseudoClases, y pseudoElementos que permiten dar formato a objetos seleccionados, objetos apuntados, etc. Se han añadido los tipos de medios. Esta nueva característica permite crear formatos diferentes dependiendo del tipo de médio que se vaya a utilizar para mostrarlo, video, TV, impresoras, etc. Se añade la base para manejar otros lenguajes como el Chino y el Árabe.
Utilizando CSS2 se pueden seleccionar elementos basandose en un patron. El navegador busca ese patrón y despues aplica las reglas especificadas para él.
En la siguiente tabla se resumen todos los selectores y su forma de trabajar.
Patrón | Significado | |
---|---|---|
* | Selector universal. | |
E | Selector de elementos del tipo E. | |
E F | Selector del elemento del tipo F descendiente de un elemento del tipo E. | |
E > F | Selectiona cualquier elemento F hijo del elemento E. | |
E:first-child | Selecciona todos los elementos E que son el primer hijo del elemento padre de que se trate. | |
E:active | Selecciona todos los elementos E que están seleccionados. | |
E:hover | Seleciona los elementos E apuntados por el ratón. | |
E:lang(c) | Selecciona los elementos E que están diseñados para utilizar el lenguaje c utilizando el atributo xml:lang. | |
E + F | Selecciona todos los elementos F cuyo inmediato hermano es un elemento E. | |
E[atributo] | Selecciona todos los elementos E con el atributo especificado. | |
E[atributo="mi_valor"] | Selecciona todos los elementos E con el atributo especificado e inicializado a mi_valor. | |
E[atributo~="mi_valor"] | Selecciona todos los elementos E con el atributo inicializado a una lista de valores entre el que se incluye mi_valor | |
E[lang|="codigo"] | Selector de todos los elementos E con codigo asignado al atributo lang. | |
E#mi_ID | Selecciona cualquier elemento E con el atributo ID igual a mi_ID. |
Por ejemplo:
*:before{content:"_________"}
Muestra una raya delante de cada elemento.
POEMA * VERSO
Este selector representa todos los versos que son nietos de un poema. Con el selector
ESTROFA > VERSO
Se seleccionan los versos que son hijos directos de una estrofa.
Todo esto se puede combinar realizando por ejemplo la siguiente seleccion:
POEMA ESTROFA > VERSO:first-letter
Selecciona la primera letra de todos los versos dentro de una estrofa y a su vez hijas de un poema.
Por ejemplo:
ESTROFA + NOTAS
Selecciona el elemento NOTAS que existe justo detras de un elemento ESTROFA.
Por ejemplo:
ESTROFA[NUMERO="2"]
Selecciona el elemento ESTROFA que tiene el valor 2 en el atributo NUMERO.
Por ejemplo:
@import url(poesia.css)
Pero a diferencia de CSS1 se debe especificar para qué tipo de médio está hecho el fichero de estilo:
@import url(poesia.css) screen;
Este ejemplo inluirá el fichero poesia.css para mostrar en pantalla nuestro fichero XML. En el caso de que existieran reglas que se solapan en CSS2 tiene mayor importancia la regla del fichero de estilos asignado al fichero XML frente a los ficheros importados.
@media print{ POESIA{font-size: 20pt; font-family: Times, serif}}
Indica que cuando el texto sea impreso, se utilizará una fuente de tamaño 20pt y una letra Times o serif en su defecto.
Tambien se pueden especificar reglas comunes:
@media print,screen{ POESIA{font-size: 20pt; font-family: Times, serif}}
Que indica que para la impresora y para la pantalla una POESIA se mostrará con las mismas características.
Los diferentes tipos de medios son:
No todos los tipos de medios están soportados todavía pero lo estarán.
El tipo de cada medio determina las propiedades que cada uno puede manejar puesto que algunas propiedades solo se pueden aplicar a dispositivos paginados por ejemplo.
Cada declaración lleva una información detallada acerca de la fuente. Estas declaraciones se denominan descriptores de fuente y se pueden clasificar en tres tipos:
Cada regla font-face se aplica a un sólo tipo de fuente por lo que si en el fichero CSS utiliza más de una será necesario especificar una regla font-face para cada tipo de fuente.
@font-face {font-family: "Comic Sans"; src: url(http://metalab.unc.edu/xml/fonts/comicsans)}
Cada fichero CSS puede tener una sóla regla @charset que debe aparecer en la primera línea del documento. El conjunto de caracteres asignado debe ser un nombre válido por ejemplo:
@charset "ISO-8859-1"
Esta regla asigna el conjunto de caracteres del latín al fichero.
ESTROFA:after {content: "________"}
En este ejemplo se indica que despues de cada estrofa, se debe colocar "________". Si en vez de un texto se desea indicar algún símbolo se pueden utilizar estas dos opciones:
AUTOR:lang(es) {direction:"rtl"}
Esta regla cambia la dirección de los elementos escritos en español.
@page:right {margin: 3cm} @page:left {margin: 5cm} @page:first {margin: 7cm}
EJERCICIO 9:
Formatear el fichero XML de ejemplo para que aparezca la primera letra de los contenidos de varias etiquetas, de diferente tamaño.
Se indican mediante @page y se aplican a una página no a un elemento individual de XML. CSS2 asume que las páginas son rectángulares. Las propiedades disponibles son:
Por ejemplo:
@page narrow {size: 9cm 18cm} @page rotated {size: landscape} POEMA {page: narrow} ESTROFA {page: rotated}
CSS2 añade nuevas formas de la propiedad display que son:
Por ejemplo:
POESIA {display: table} ESTROFA{display:table-row} VERSO{display:table-cell}
Este ejemplo alinea todos los versos en celdas. El resultado es una tabla de tres columnas, puesto que en cada estrofa existen tres versos.
EJERCICIO 10:
Realiza los cambios necesarios para que aparezcan los versos en una tabla.
Estas dos propiedades permiten fijar el tamaño de la caja que contiene a cada elemento. El tamaño por defecto de una caja de un elemento se calcula según su contenido, pero este calculo se puede modificar mediante seis propiedades:
EJERCICIO 11:
Comprobar cual es la implementación de estas propiedades en nuestro navegador.
Cuando el tamaño de la caja asignado es menor que el necesario, entonces esta propiedad permite especificar qué hacer con la parte no visible. Las posibilidades son:
EJERCICIO 12:
Mostrar cada estrofa en una ventana independiente con barras de scroll.
Indica qué porción del texto debe mostrarse cuando existe un overflow. la forma de indicarlo es mediante la función rect(top, bottom, left, right).
Ejemplo de utilización:
VERSO {height: 80px; width: 150px; overflow:auto; clip: rect(5px,5px,5px,5px) }
Nota: Esta propiedad sólo funciona en el IExplorer 5.0.
La visibilidad de un elemento puede ser visible, hidden, collapse ( Lo mismo que hidden en algunos elementos pero es diferente en tablas por ejemplo ), y inherit.
EJERCICIO 13:
Explica la diferencia entre hidden y poner la propiedad display con none.
Se trata de la propiedad que especifica el cursor del ratón cuando el elemento es apuntado por éste. Los posibles valores son:
Nota: Esta propiedad sólo funciona en el IExplorer 5.0.
CSS2 Añade una nueva forma de asignar colores y es utilizando los mismos colores que el entorno esté utilizando. Algunas de las posibilidades son:
Color | Descripción |
ActiveBorder | Borde de una ventana activa |
Background | Color de fondo del escritorio |
ButtonHighlight | Boton seleccionado |
ButtonShadow | Sombra de los botones |
ButtonText | Color del texto de los botones |
Highlight | Elementos seleccionados |
HighlightText | Texto seleccionado |
InactiveBorder | Borde inactivo |
InactiveCaption | Color de un título inactivo |
InactiveCaptionText | Color del texto de un título inactivo |
InfoBackground | Color de fondo de la ayuda |
InfoText | Color del texto de la ayuda |
Menu | Menu |
MenuText | Texto del menú |
Scrollbar | Barra de scroll |
ThreeDDarkShadow | Sombra oscura en 3D |
ThreeDFace | Cara principal en 3D |
ThreeDHighlight | Cara de iluminación en 3D |
ThreeDLightShadow | Sombra clara 3D |
ThreeDShadow | Sombra 3D |
Window | Ventana |
WindowFrame | Frame de la ventana |
WindowText | Texto de la ventana |
CSS2 aporta una serie de propiedades nuevas para las fuentes que son:
Nota: Esta propiedad no funciona en Mozilla.
Especifica el color y tamaño de la sombra de un texto. El formato es: text-shadow: color distancia-h-texto, distancia-v-texto
VERSO {text-shadow: red -5pt -5pt}
Nota: No está disponible en Mozilla.
Especifica el desplazamiento del texto respecto a la base de la línea. Puede tomar los valores baseline, sub, super, top, middle, bottom, text-top y text-bottom.
CSS2 añade opciones que nos permiten situar una caja en un aposición concreta, dentro de otra caja o en una ventana.
Para ello se utilizan las propiedades de posicionamiento y las propiedades outline.
La diferencia entre este tipo de línea y un borde es que el borde se añade al ancho de la caja mientras que una línea de este tipo no.
Nota: No está disponible en Mozilla.
Este conjunto de propiedades manejan la posición de una caja. El nombre de la propiedad es position y los valores que puede tomar son:
EJERCICIO 14:
Muestra el fichero sonatinaFormateo.xml y formatea tu fichero de ejemplo de forma parecida.
EJERCICIO 15:
Haz un segundo CSS para tu fichero de ejemplo. (que no se parezca en nada al primero)
Sintaxis:
Selector {propiedad:valor; propiedad:valor; ... propiedad:valor}