HTML Dinámico



Introducción

Bajo el nombre de HTML Dinámico se engloba un conjunto de técnicas con dos objetivos claros: proporcionar un control absoluto al diseñador de páginas HTML y romper con el carácter estático de este tipo de documentos. Hasta ahora, una vez mostrado un documento HTML, nada podía hacerse para modificarlo.

Los tres componentes del HTML Dinámico son:

Las hojas de estilo permiten especificar atributos para los elementos de su página web. Con el posicionamiento de contenidos se puede asegurar que las diferentes partes serán mostradas exactamente donde usted quiera que aparezcan y podrá modificar su aspecto y posicion tras ser mostrada. Con las fuentes descargables podemos asegurar que siempre se utilizara la fuente correcta, pues podemos enviar la fuente junto con la página.


Introducción a las Hojas de Estilos

Antes de la introducción de las hojas de estilo, los creadores de páginas web sólo tenían un control parcial sobre el aspecto final de sus páginas. Por ejemplo, se podía especificar que cierto texto debia verse como una cabecera, pero no se podían colocar márgenes a una página ni escoger un borde decorado para un texto.

Las hojas de estilo nos permiten un mayor control sobre el aspecto de nuestros documentos. Con ellas podemos especificar muchos atributos tales como colores, márgenes, alineación de elementos, tipos y tamaños de letras, y muchos más. Podemos utilizar bordes para hacer que ciertos elementos resalten del resto de un documento. Podemos especificar que se utilicen diferentes fuentes para diferentes elementos tales como párrafos o cabeceras.

Además podemos emplear hojas de estilo como patrones o páginas maestras de forma que múltiples páginas puedan tener el mismo aspecto.

Las hojas de estilo pueden crearse empleando dos tipos de sintaxis, CSS (Cascade Style Sheets) y JavaScript.


Introducción al Posicionamiento de Contenidos

Ya no se está restringido al posicionamiento secuencial de los elementos sobre la página. Especificando la posición de los bloques podemos decidir donde se mostrara cada elemento en vez de dejar esta tarea al arbitrio del navegador. Por ejemplo, podemos colocar un bloque en la esquina superior izquierda, y otro en la inferior derecha. También podemos hacer que varios bloques compartan espacio, de forma que se puedan solapar. Ahora se puede decidir la posición exacta de los elementos.

Utilizando JavaScript podemos cambiar el aspecto de la página dinámicamente. Podemos hacer que los elementos aparezcan o se desvanezcan, podemos cambiar su color y su posición, etc. Podemos añadir animaciones dentro de nuestras páginas moviendo y modificando ciertas partes de la misma.

El uso conjunto las hojas de estilo y el posicionamiento de contenidos nos permite crear páginas web que utilicen diferentes estilos en diferentes partes de la página.

Para el posicionamiento de contenidos también podemos utilizar dos tipos de sintaxis: CSS y JavaScript.


Introducción a las Fuentes Descargables

Utilizando fuentes descargables podemos adjuntar fuentes con nuestras páginas web. De esta forma se garantiza que las página siempre serán mostradas con la fuente que deseemos. Ya no es necesario emplear las fuentes genéricas para conseguir que sus páginas tengan aproximadamente el mismo aspecto en todas las plataformas. Tampoco estaremos restringidos por las características propias de las fuentes en cada plataforma.

Para protejer los derechos de autor de los diseñadores de fuentes, estas están protegidas de forma que es imposible que el usuario las copie y las pueda usar de nuevo. Asi podemos incluir fuentes en nuestras páginas sin tener que preocuparnos de que los usuarios las puedan copiar.


Hojas de Estilo

En esta sección se introduce el uso de las hojas de estilo. Se da un breve resumen de los diferentes tipos de sintaxis que se pueden emplear para definir estilos, se muestran algunos ejemplos y se explica la herencia de propiedades.


Definición de Estilos mediante Hojas de Estilo en Cascada

Una hoja de estilo consiste en una o más definiciones de estilo. En sintaxis CSS, los nombres de las propiedades y los valores se encierran entre llaves {}.

El criterio de selección determina a que elementos se aplica, o es aplicable, el estilo. Si el criterio de selección es un elemento HTML, el estilo es aplicado a todos las instancias de dicho elemento. El criterio de selección también puede ser una clase, un ID o contextual. Cada una de estos criterios de selección se verán a continuación.

En una definicion de estilo cada propiedad es seguida por dos puntos y el valor de dicha propiedad. Cada par propiedad/valor está separado del siguiente por un punto y coma (;).

Por ejemplo, la siguente hoja de estilo en cascada contiene dos definiciones de estilos. El primero especifica que todos los párrafos, <p>, se veran en negrita y en color blanco. El segundo hará que todas las cabeceras, <h1>, aparezcan centradas.

<style type="text/css">
<!--
    p {font-weight: bold; color: white;}
    h1 {text-align: center;}
-->
</style>

La definición de estilos se puede encerrar entre commentarios (<!-- ... -->), de esta forma los navegadores que no reconozcan la etiqueta <style> la ignorarán.

Es importante no incluir dobles comillas en la especificacion de valores de atributos en sintaxis CSS.

CSS exige un estricto cumplimiento de sus normas de sintaxis. Asegurese de no omitir ningun punto y coma entre los pares nombre/valor. Si lo hace se ignorara por completo la definición de estilo. De igual forma, si accidentalmente se añade un simbolo extraño la definición será ignorada.


Definición de Estilos mediante el Modelo de Objetos Documento de JavaScript

Mediante JavaScript también es posible definir hojas de estilo utilizando el modelo de objetos documento. Este modelo ve una página web como un objeto con propiedades que pueden ser consultadas y modificadas. En el siguiente ejemplo se cambia el valor de color de la etiqueta h1 de la propiedad tags del objeto document:

document.tags.h1.color = "red"

La propiedad tags siempre se aplica al objeto document del documento actual, por eso algunos navegadores permiten omitir document en la expresion document.tags.

El siguiente ejemplo usa JavaScript para crear una hoja de estilo que contiene dos definiciones de estilo. El primero especifica que todos los párrafos <p> se veran en negrita y en color blanco. El segundo hará que todas las cabeceras <h1> aparezcan centradas.

<style type="text/javascript">
    tags.p.weight = "bold";
    tags.p.color = "white";
    tags.h1.textAlign = "center";
</style>

No se pueden encerrar entre comentarios (<!-- ... -->) los contenidos de una hoja de estilo creada mediante JavaScript.

También se puede utilizar with para abreviar la definición de estilos para elementos sobre los que hay que modificar varias propiedades. Este ejemplo especifica que todas las etiquetas <p> serán verdes, negritas, cursivas y usaran la fuente helvética.

with (tags.p)
{
    color = "green";
    fontWeight = "bold";
    fontStyle = "italic";
    fontFamily = "helvetica";
}
    

Ejemplos

Usando hojas de estilo se pueden especificar muchos atributos de estilo. Algunas de estas características son el alineación, indentación y color del texto, la familia, peso y estilo de las fuentes,... Podemos seleccionar una imagen o un color de fondo para cualquier elemento. También podemos escoger el color y estilo de las marcas de lista.

Se pueden poner márgenes y especificar bordes para elementos de bloque, escoger el relleno de los elementos que tienen bordes, indicar la distancia entre el borde y el contenido del elemento.

El siguiente ejemplo muestra una hoja de estilo sencilla descrita mediante sintaxis CSS y JavaScript. En ella se especifica que todos los elementos <p> tendran márgenes derecho e izquierdo y que su texto estará centrado. Todos los elementos <h4> estarán subrayados y en verde. Todos los elementos <h5> se mostraran en mayúsculas, tendran un borde con aspecto 3D sobresaliente de 4 puntos de ancho y color rojo. Su texto será rojo y el fondo amarillo. Finalmente, los <blockquote> serán azules y en cursiva, su altura de línea (interlínea) será un 150% mayor que por defecto y su primera línea estará indentado un 10%.

Sintaxis CSS

<style type="text/css">
    p {text-align: center; margin-left: 20%; margin-right: 20%;}
    h4 {text-decoration: underline; color: green;}
    h5
    {
        text-transform: uppercase;color:red;
        border-width: 4pt; border-style: outset;
        background-color: yellow; padding: 4pt;
        border-color: red;}
    }
    blockquote
    {
        color: blue; font-style: italic; 
        line-height: 1.5; text-indent: 10%
    }
</style>

Sintaxis JavaScript

<style type="text/javascript">
    with (tags.p)
    {
        textAlign = "center"; marginLeft = "20%"; marginRight = "20%";
    }
    with (tags.h4) {textDecoration = "underline"; color = "green";}
    with (tags.h5)
    {
        textTransform = "uppercase"; color = "red";
        borderWidth = "4pt"; borderStyle = "outset";
        backgroundColor = "yellow"; paddings("4pt");
        borderColor = "red";
    }
    with (tags.blockquote)
    {
        color = "blue"; fontStyle = "italic";
        lineHeight = "1.5"; textIndent = "20pt";
    }
</style>

Uso de la hoja de estilo

<h4>Titulo subrayado</h4>
<blockquote>
    Esto es un bloque. Normalmente los bloques están indentados, 
    pero en este, además, la primera línea tiene una indentación 
    extra. También la interlínea es mayor de lo habitual.
</blockquote>
<h5>Titulo h5 en mayusculas y con borde</h5>
<p>Este párrafo está centrado. También tiene unos amplios 
márgenes derecho e izquierdo.</p>

Resultado del ejemplo

Titulo subrayado

Esto es un bloque. Normalmente los bloques están indentados, pero en este, además, la primera línea tiene una indentación extra. También la interlínea es mayor de lo habitual.
Titulo en mayusculas y con borde

Este párrafo está centrado. También tiene unos amplios márgenes derecho e izquierdo.


Herencia de Estilos

Un elemento HTML que contenga a otro se considera como el padre del elemento que contiene, y el elemento contenido se considera el elemento hijo.

Por ejemplo, en el siguiente texto HTML, el elemento <body> es el padre del elemento <h1>, que a su vez es padre del elemento <em>.

<body>
    <h1>¡El titulo <em>es</em> importante!</h1>
</body>

En muchos casos, los hijos adquieren o heredan el estilo de los elementos de sus padres. Por ejemplo, supongamos que asignamos a <h1> el estilo color azul:

<style type="text/css">
    h1 {color: blue;}
</style>
<body>
    <h1>¡El titulo <em>es</em> importante!</h1>
</body>

En este caso el elemento hijo <em> hereda el estilo de su padre, que es el elemento <h1>. Asi la palabra "es" apareceria en color azul. Supongamos ahora que previamente se habia especificado para <em> el color rojo. En este caso la palabra "es" apareceria en rojo porque las propiedades del hijo tienen preferencia sobre las que hereda del padre.

La herencia comienza desde el elemento de más alto nivel. En HTML, este elemento es <html>, que es seguido de <body>.

Para establecer las propiedades de estilo por defecto para todos los elementos de un documento lo normal es asignárselas al elemento <body>. Por ejemplo, el siguiente código fija el color por defecto del texto a verde:

Sintaxis CSS

<style type="text/css">
    body {color: green;}
</style>

Sintaxis JavaScript

<style type="text/javascript">
    tags.body.color = "green"
</style>

Muy pocas propiedades no son heredadas de padres a hijos, pero en la mayoría de los casos el resultado final es el mismo que si lo hiciesen. Por ejemplo, la propiedad color de fondo no se hereda. Si un hijo no especifica un color de fondo propio, se vera el color de fondo del padre a través suyo, tal como ocurriria si heredase la propiedad. Para más información sobre las propiedades que se heredan y cuales no, dirigirse al manual de referencia del final de este tutorial.


Creación y uso de Hojas de Estilo

En esta sección se verán las diferentes formas de definir estilos y como aplicar esos estilos a los elementos HTML.

Una hoja de estilo es una serie de una o más definiciones de estilo. Podemos definir una hoja de estilos en el interior del documento que la utiliza, pero también podemos utilizar hojas de estilo desde un documento externo. Por ejemplo, podemos emplear una única hoja de estilo para definir el estilo empleado por un grupo de personas en sus páginas.

Si la hoja de estilos no va a ser aplicada a otros documentos, es más conveniente definirla en el interior de dicho documento para asi tener la hoja de estilo y el contenido de la página todo en un mismo sitio.


Definición de Hojas de Estilo con la etiqueta <STYLE>

Para definir una hoja de estilo directamente dentro de un documento se utiliza la etiqueta <style> dentro de la sección <head> ... </head>. La etiqueta <style> abre la hoja de estilo, y la etiqueta </style> la cierra. Asegurese de utilizar <style> antes de <body>.

Cuando use <style> podrá especificar el atributo type para indicar que tipo de sintaxis se va a emplear. Los dos valores posibles son "text/css" y "text/javascrip". EL valor por defecto es "text/css".

El siguiente ejemplo define una hoja de estilo que especifica que todos los titulos de nivel 4 serán en mayúsculas y azules, y todos los bloques en cursiva y rojos:

Sintaxis CSS

<head>
    <style type="text/css">
        h4 {text-transform: uppercase; color: blue;}
        blockquote {font-style: italic; color: red;}
    </style>
</head>
<body>
    ...
</body>

Sintaxis JavaScript

<head>
    <style type="text/javascript">
        tags.h4.textTransform = "uppercase"
        tags.h4.color = "blue"
        tags.blockquote.fontStyle = "italic"
        tags.blockquote.color = "red"
    </style>
</head>
<body>
    ...
</body>

Uso de la hoja de estilo

<h4>Este titulo es azul y esta en mayusculas.</h4>
<blockquote>Este bloque en cursiva es rojo.<blockquote> 

Resultado del ejemplo

Este titulo es azul y esta en mayusculas.

Este bloque en cursiva es rojo.

Definición de Hojas de Estilo en Ficheros Externos

Se puede definir una hoja de estilo en un fichero distinto del que contiene la página y despues enlazarlos. Las ventajas de este método son que podremos utilizar la hoja de estilo desde cualquier documento HTML. Se podría pensar en una hoja de estilo asi definida como en un patrón que pudiera aplicarse a cualquier documento. De esta forma, se puede aplicar un estilo a todas las páginas servidas desde un sitio web sin más que incluir un enlace al fichero con la hoja de estilo en cada página.

La sintaxis para definir estilos en ficheros es identica a la que se usa para definirlos en el propio documento, excepto que no es necesario incluir la etiqueta <style>. He aquí un ejemplo:

Sintaxis CSS

/* hoja de estilo externa estilo.html */
.BOLDBLUE {color: blue; font-weight: bold;}
h1 {line-height: 18pt;}
p {color: yellow;}
/* fin de fichero */

Sintaxis JavaScript

/* hoja de estilo externa estilo.html */
tags.BOLDBLUE.all.color = "blue";
tags.BOLDBLUE.all.fontWeight = "bold";
tags.h1.lineHeight = "18pt";
tags.p.color = "yellow";
/* fin de fichero */

Para utilizar esta hoja de estilo, se usa la etiqueta <link> como se muestra en el siguiente ejemplo:

Sintaxis CSS

<head>
    <title>El titulo</title>
    <link rel = stylesheet type = "text/css" href = "estilo.css">
</head>

Sintaxis JavaScript

<head>
    <title>El titulo</title>
    <link rel = stylesheet type = "text/javascript" href = "estilo.js">
</head>

Definición de Clases de Estilo

Si un documento incluye o se enlaza con una hoja de estilo, todos los estilos definidos en dicha hoja podrán utilizarse en cualquier punto del documento. Si la hoja de estilo especifica el estilo de una etiqueta HTML, entonces todos las etiquetas de ese tipo en el documento utilizarán dicho estilo.

Puede haber casos en que interese aplicar un estilo selectivamente. Por ejemplo, se puede querer que los párrafos de un documento sean unas veces rojos y otras veces azules. En este caso definir un estilo que se aplique a todos los párrafos no será la solucion correcta. Podemos obtener el efecto deseado definiendo una clase de estilo y especificando cuando queremos que sea utilizada.

Para aplicar una clase de estilo a un elemento HTML, primero se debe definir la clase en la hoja de estilo, y después se utilizará empleando el atributo class en cualquier elemento.

Sintaxis CSS

<style type="text/css">
    .GREENBOLD {color: green; font-weight: bold;}
</style>

Sintaxis JavaScript

<style type="text/javascript">
    classes.GREENBOLD.all.color = "green";
    classes.GREENBOLD.all.fontWeigth = "bold";
</style>

Uso de la hoja de estilo

<h3 class=GREENBOLD>Este titulo es muy verde</h3>
<p class=GREENBOLD>
    Este párrafo usa la clase de estilo GREENBOLD. Se puede 
    utilizar el atributo class para especificar una clase de estilo
    para cualquier elemento HTML.
</p>
<blockquote class=GREENBOLD>
    Este bloque usa la clase de estilo GREENBOLD. En consecuencia, es 
    verde y está en negrita. Puede ser útil para hacer que los bloques
    resalten del resto de la página.
</blockquote> 

Resultado del ejemplo

Este titulo es muy verde

Este párrafo usa la clase de estilo GREENBOLD. Se puede utilizar el atributo class para especificar una clase de estilo para cualquier elemento HTML.

Este bloque usa la clase de estilo GREENBOLD. En consecuencia, es verde y está en negrita. Puede ser útil para hacer que los bloques resalten del resto de la página.

Con sintaxis JavaScript no se pueden utilizar guiones "-". La razón es que el guión es un operador de JavaScript. Los nombres de clases no pueden contener tampoco operadores como: -, +, *, /, %, ...

Cuando se definen clases de estilo se puede especificar a que elementos se podrán aplicar dicha clase, o usaremos la palabra clave all para indicar que todos los elementos podrán utilizarla.

En el siguiente ejemplo se crea una clase de estilo naranja que podrá utilizar cualquier elemento HTML. También se crea una clase rojo que sólo podrán utilizar párrafos y bloques.

Sintaxis CSS

<style type="text/css">
    .naranja {color: orange; font-weight: bold;}
    p.rojo {color: red; font-weight: bold;}
    blockquote.rojo {color: red; font-weight: bold;}
</style>

Sintaxis JavaScript

<style type="text/javascript">
    classes.naranja.all.color = "orange";
    classes.naranja.all.fontWeight = "bold";
    classes.rojo.p.color = "red";
    classes.rojo.p.fontWeight = "bold";
    classes.rojo.blockquote.color = "red";
    classes.rojo.blockquote.fontWeight = "bold";
</style>

Uso de la hoja de estilo

<p class="rojo">Este párrafo es rojo.</p>
<p>Este párrafo es del color por defecto, 
      porque no utiliza la clase rojo</p>
<blockquote class="rojo">Este bloque usa la clase rojo.
</blockquote>
<h4 class="rojo">
    Este titulo intenta usar la clase rojo, pero no le está permitido
</h4>
<p class="naranja">Este párrafo es amarilo</p>
<h4 class="naranja">
    Este titulo es naranja porque usa la clase naranja
</h4>

Resultado del ejemplo

Este párrafo es rojo.

Este párrafo es del color por defecto, porque no utiliza la clase rojo

Este bloque usa la clase rojo.

Este titulo intenta usar la clase rojo, pero no le está permitido

Este párrafo es amarilo

Este titulo es naranja porque usa la clase naranja

Un elemento HTML sólo puede utilizar una clase de estilo. Si se especifican dos o más clases, se utilizaran la primera. Por ejemplo, en el siguiente código un párrafo intenta usar las clases rojo y naranja. Como resultado final se acaba empleando la clase rojo que es la primera que se especifica.

Ejemplo:
<p class="rojo" class="naranja">Otro párrafo rojo.</p>
Resultado:

Otro párrafo rojo.


Definición de Estilos Individuales con Nombre

Se pueden crear estilos individuales con nombre. Los elementos HTML pueden utilizar un clase de estilo y un estilo individual con nombre. Normalmente estos se utilizan para expresar excepciones de estilo. Por ejemplo, si un párrafo utiliza la clase de estilo PRINCIPAL, podemos usar el estilo con nombre AZUL1 para expresar alguna diferencia respecto a la clase PRINCIPAL.

También son útiles para definir capas de contenidos HTML posicionadas de forma precisa.

Parar definir estilos con nombre, en sintaxis CSS, se precede el nombre con el signo #. En JavaScript se utiliza la propiedad ids.

Para aplicar el estilo a un elemento, se utiliza el nombre de estilo individual como valor del atributo ID.

En el siguiente código se define una clase de estilo PRINCIPAL. Esta clase especifica una fuente de 15 puntos, negrita y de color rojo, y una interlínea de 20 puntos. También se define un estilo con nombre llamado AZUL1 cuyo color es azul.

Sintaxis CSS

<style type="text/css">
    .PRINCIPAL 
    {
        line-height: 20pt; 
        font-size:15pt; 
        font-weight: bold; 
        color: red;
    }
    #AZUL1 {color: blue;}
</style>

Sintaxis JavaScript

<style type="text/javascript">
    with(classes.PRINCIPAL.all) 
    {
        lineHeight = "20pt";
        fontSize = "15pt"; 
        fontWeight = "bold";
        color = "red";
    }
    ids.AZUL1.color = "blue";
</style>

Uso de la hoja de estilo

      <p class="PRINCIPAL">
          AquÍ se puede ver un texto rojo y en negrita. En este 
          párrafo la interlínea y el tamaño de la fuente 
          son mayores de lo habitual.
      </p>
      <p class="PRINCIPAL" id="AZUL1">
          Este párrafo es casi igual al anterior. Está en 
          negrita y su fuente es mayor de lo habitual. Aunque usa la clase 
          PRINCIPAL es azul porque se utiliza el estilo con nombre AZUL1.
      </p>

Resultado del ejemplo

Aquí se puede ver un texto rojo y en negrita. En este párrafo la interlínea y el tamaño de la fuente son mayores de lo habitual.

Este párrafo es casi igual al anterior. Esta en negrita y su fuente es mayor de lo habitual. Aunque usa la clase PRINCIPAL es azul porque se utiliza el estilo con nombre AZUL1.


Uso de Criterios de Selección Contextual

Se pueden definir estilos para utilizarse con todos los elementos HTML de una clase particular. Si se necesita un mayor control sobre el uso de estilos podemos hacer que estos se apliquen selectivamente. Podriamos, por ejemplo, querer que el texto enfatizado sea de color verde, pero sólo si este está en el interior de un título de tamaño 4.

Se puede conseguir este nivel control sobre la aplicacion de estilos usando los criterios de selección contextual. Estos, en general, permiten especificar que un estilo se aplicara sólo si un elemento se encuentra anidado dentro de un elemento de otro cierto tipo.

Mediante la sintaxis, CSS esto se consigue listando ordenadamente los elementos HTML antes de las llaves. Con sintaxis JavaScript es necesario utilizar el método contextual().

Sintaxis CSS

      <style type="text/css">
         h4 em {color: green;}
      </style>

Sintaxis JavaScript

      <style type="text/javascript">
         contextual(tags.h4, tags.em).color ="green";
      </style>

Uso de la hoja de estilo

      <h4>El <em>texto enfatizado</em> de este titulo es verde.</h4>
      <p>En cambio este <em>texto enfatizado</em> no es verde.</p>

Resultado del ejemplo

El texto enfatizado de este titulo es verde.

En cambio este texto enfatizado no es verde.

Ahora veremos otro ejemplo que hace que las marcas los elementos de lista que hereden de al menos dos listas desordenadas sean de color azul.

Sintaxis CSS

 ul ul li {color: blue;}

Sintaxis JavaScript

 contextual(tags.ul, tags.ul, tags.li).color = "blue";

Se pueden utilizar los criterios de selección contextual para buscar etiquetas, clases, ids o combinaciones de estos. En el siguiente ejemplo se crea la clase MAGENTA que lo colorea todo de magenta. Todos los párrafos MAGENTA que estén dentro de un <div> estarán en cursiva. Además los textos dentro de <b> anidados dentro de párrafos dentro de un <div> en MAGENTA usaran una fuente grande.

Sintaxis CSS

      <style type="text/css">
         .MAGENTA {color: magenta;}
         div p.MAGENTA {font-style: italic;}
         div p.MAGENTA b {font-size: large;}
      </style>

Sintaxis JavaScript

      <style type="text/javascript">
         classes.MAGENTA.all.color = "magenta";
         contextual(tags.div, classes.MAGENTA.p).fontStyle = "italic";
         contextual(tags.div, classes.MAGENTA.p, tags.b).fontSize = "large";
      </style>

Uso de la hoja de estilo

      <div class=MAGENTA>
      <h4> Titulo h4 en MAGENTA</h4>
      <p>Este párrafo deberia ser magenta y cursivo. Ahora 
      viene un <b>texto grande</b>. Conseguimos este efecto con 
      selección contextual</p>
      </div>
      <p class="MAGENTA">Este párrafo todavia es MAGENTA, pero 
      como no esta dentro de un bloque <div>, no es cursivo.</p>

Resultado del ejemplo

Titulo h4 en MAGENTA

Este párrafo deberia ser magenta y cursivo. Ahora viene un texto grande. Conseguimos este efecto con selección contextual

Este párrafo todavia es MAGENTA, pero como no esta dentro de un bloque <div>, no es cursivo.


Especificacion de Estilos para Elementos Individuales

De igual forma que se puden definir hojas de estilo, podemos utilizar el atributo style de cualquier etiqueta HTML para definir un estilo que le será aplicado solamente a ella. Esta aproximación puede ser útil en situaciones en que necesitemos utilizar un estilo en un sitio y no sea necesario volver a utilizarlo.

Sin embargo, en general, es mejor definir todos los estilo usados en un documento en un único lugar. Asi es más fácil realizar modificaciones en su estilo sin tener que recorrerlo. Si se necesita hacer algun cambio sólo es necesario hacerlos una vez y el cambio automáticamente se aplica a todo el documento.

A veces, sin embargo, se necesita especificar el estilo de un elemento y la forma más fácil de hacerlo es mediante el atributo style. En el ejemplo se especifica un estilo para el elemento <p>. También se muestra el uso de <span> para aplicar un estilo a varios elementos.

Sintaxis CSS

      <p style="color: green; font-weight: bold; 
                   margin-right: 20%; margin-left: 20%">
          Este párrafo, y sólo este párrafo, es verde, 
          esta en negrita y tiene unos grandes margenes.
      </p>
      <p>
          Este párrafo es del color habitual, pero esta <span 
          style="color: red; font-style: italic;">palabra</span> es 
          diferente al resto.
      <p>

Sintaxis JavaScript

      <p style="color = 'green'; fontWeight = 'bold'; 
                   marginRight = '20%'; marginLeft = '20%'">
          Este párrafo, y sólo este párrafo, es verde, 
          esta en negrita  tiene unos grandes márgenes.
      </p>
      <p>
          Este párrafo es del color habitual, pero esta <span 
          style="color = "red"; fontStyle = "italic";">palabra</span> 
          es diferente al resto.
      <p>

Resultado del ejemplo

Este párrafo, y sólo este párrafo, es verde, esta en negrita y tiene unos grandes márgenes.

Este párrafo es del color habitual, pero esta palabra es diferente al resto.


Combinando Hojas de Estilo

Se puede utilizar más de una hoja de estilo para fijar las características de un documento. Esto es deseable si se tienen varias hojas de estilos parciales, de forma que cada una de ellas define diferentes estilos.

Supongamos, por ejemplo, que estamos escribiendo un informe sobre los beneficios de un producto de red de una compañia llamada AlpargataNet. Puede que se necesite usar tres hojas de estilo: una definiendo el estilo habitual de los informes, otra que defina el estilo de los productos de red, y otra que defina el estilo de la compañia SneakerNet.

El siguiente ejemplo muestra el uso de varias hojas de estilo en un mismo documento.

      <style type="text/css">
         @import "http://www.alpargatanet.com/estilo/empresa";
         @import "estilos/informe";
         @import "estilos/redes";
         h1 { color: red; }
      </style>
      <link rel=stylesheet type="text/css" 
               href=url(http://www.alpargatanet.com/estilo/empresa)>
      <link rel=stylesheet type="text/css" href=url(estilos/informe)>
      <link rel=stylesheet type="text/css" href=url(estilos/redes)>
      h1 {color: red;} /* tiene preferencia sobre las hojas externas */

Entre las hojas de estilo externas, la última tiene precedencia sobre las demás. Asi, en caso de conflicto, se escoge el estilo de la última hoja de estilo especificada.

Los estilos definidos para elementos individuales tienen precedencia sobre los definidos en el elemento <style> y sobre los definidos en las hojas externas. En general, los estilos locales se sobreponen a los generales, como se muestra en el siguiente ejemplo.

Sintaxis CSS

<style type="text/css">
  p {color: blue;}
  b {color: green;}
</style>

Sintaxis JavaScript

<style type="text/javascript">
  tags.p.color = "blue";
  tags.b.color = "green";
</style>

Uso de la hoja de estilo

<p>Tal y como debería ser este párrafo es de color
azul, <b>y esta parte en negrita es de color verde</b></p>
<p style="color: orange;">Este otro párrafo no es de color
azul, <b style="color: red;">ni esta parte en negrita es de color
 verde</b>, porque se ha usado style para cambiarles el color.</p>

Resultado del ejemplo

Tal y como debería ser este párrafo es de color azul, y esta parte en negrita es de color verde

Este otro párrafo no es de color azul, ni esta parte en negrita es de color verde, porque se ha usado style para cambiarles el color.


Propiedades de Formato de Elementos de Bloque

En esta sección se exponen las opciones de formato de los elementos de bloque. Los elementos de bloque comienzan en una nueva línea. Por ejemplo, <h1> y <p> son elementos de bloque, pero <em> no lo es.

Comenzaremos presentando unos ejemplos que muestren las posibilidades de formato de los elementos de bloque. Despues se discutirá cada opción de formato en detalle. Para finalizar se echará un vistazo a su comportamiento respecto a la herencia de propiedades.


Formato de Bloques: Introducción y Ejemplos

Las hojas de estilo tratan a cada elemento de bloque como si estuviera rodeado de una caja. Cada caja puede tener características de estilo propias tales como márgenes, bordes, relleno y una imagen o color de fondo.

modelo de caja

Los márgenes indican la separación entre el borde de la caja y el borde del documento. Estos bordes pueden tener apariencia plana o tridimensional. El relleno ("padding") indican la separación entre el borde de los elementos y el contenido de los mismos.

También se puede fijar la anchura de los elementos de bloque, bien mediante un valor especifico, o bien mediante un porcentaje de la anchura total del documento. En este caso es redundante fijar los márgenes derecho o izquierdo y la anchura.

Si se especifican la anchura y los dos márgenes, el valor de del margen izquierdo tiene prioridad sobre los demás valores en caso de conflicto. En este caso el valor del margen derecho especifica la distancia máxima desde el borde derecho de elemento que lo contiene. El valor del anchura es utilizado sólo si no sobrepasa los limites de anchura del elemento que lo contiene.

El alineación horizontal puede a izquierda, derecha o centrado. Esto se consige usando la propiedad float en CSS o la propiedad align en JavaScript.

En los siguientes ejemplos se muestra el uso de márgenes, relleno, bordes, fondos y alineación.

Sintaxis CSS

      <style type="text/css">
         p {
             color: #ffffff; /* blanco */
             /* márgenes */
             margin-left: 20%; margin-right: 20%;
             /* anchura del borde */
             border-top-width: 10pt; border-bottom-width: 10pt;
             border-right-width: 5pt; border-left-width: 5pt;
             /* estilo y color del borde */
             border-style: outset; border-color: blue;
             /* relleno */
             padding-top: 10pt; padding-bottom: 10pt;
             padding-right: 20pt; padding-left: 20pt;
         }
         h3 {
             /* alineación al centro*/
             text-align: center;
             /* tamaño y peso de la fuente*/
             font-size: 14pt; font-weight: bold;
             background-image: url("papel.jpg");
             /* anchura del 80% */
             width: 80%;
             border-color: green; border-style: solid;
             /* todas las partes del borde tienen la misma anchura */
             border-width: 10pt;
             /* relleno uniforme */
             padding: 5%;
         }
      </style>

Sintaxis JavaScript

      <style type="text/javascript">
         with (tags.p) {
             /* márgenes */
             marginLeft="20%"; marginRight="20%";
             /* anchura del borde */
             borderTopWidth="10pt"; borderBottomWidth="10pt";
             borderRightWidth="5pt"; borderLeftWidth="5pt";
             /* estilo y color del borde */
             borderStyle="outset"; borderColor="blue";
             /* relleno */
             paddingTop="10pt"; paddingBottom="10pt";
             paddingRight="20pt"; paddingLeft="20pt";
         }
         with(tags.h3) { 
             /* alineación al centro*/
             textAlign="center";
             /* tamaño y peso de la fuente*/
             fontSize="14pt"; fontWeight="bold";
             backgroundImage="papel.jpg";
             /* anchura del 80% */
             width="80%";
             borderColor="green"; borderStyle="solid";
             /* todas las partes del borde tienen la misma anchura */
             borderWidths("10pt");
             /* relleno uniforme */
             paddings("5%");
         }
      </style>

Uso de la hoja de estilo

<h3>Titulo h3 con borde sólido y fondo</h3>
<p>Los bordes se usan muy a menudo. Por ejemplo, si un bloque
tiene borde resalta mucho más que si no lo tiene.</p>
<p>Este es otro párrafo con borde. Ten cuidado con los
bordes, no los hagas demasiado anchos, pues de lo contrario ocuparan
demasido espacio.</p>

Resultado del ejemplo

Titulo h3 con borde sólido y fondo

Los bordes se usan muy a menudo. Por ejemplo, si un bloque tiene borde resalta mucho más que si no lo tiene.

Este es otro párrafo con borde. Ten cuidado con los bordes, no los hagas demasiado anchos, pues de lo contrario ocuparan demasido espacio.


Márgenes

Los márgenes indican la separación entre el borde del bloque y el borde del documento, o elemento padre. Se pueden fijar los márgenes derecho, izquierdo, superior e inferior. Para ello se deben utilizar las siguientes nombres de propiedad:

Sintaxis CSS

Sintaxis JavaScript

En vez de especificar los dos márgenes se puede utilizar la propiedad width. Se pueden utilizar valores específicos, como 200 puntos, o valores relativos, como el 50% de la anchura del elemento padre. Es redundante fijar los dos márgenes y la anchura, pues dos de estos tres valores implican el tercero.

Para especificar los márgenes por defecto para un documento se deben especificar para la etiqueta <body>. En el siguiente ejemplo se fijan dichos márgenes en 20 puntos a derecha e izquierda.

Sintaxis CSS

<style type="text/css">
    body {margin-left: 20pt; margin-right: 20pt;}
</style>

Sintaxis JavaScript

<style type="text/javascript">
    with (tags.body) { marginLeft="20pt"; maginRight="20pt"; }
</style>

Ejercicio: intente replicar el modelo de márgenes que puede objservar en la siguiente imagen:

margen

Bordes

Los bordes se pueden utilizar para muchas cosas, como por ejemplo, separar elementos o destacar ciertas partes de un documento. Para que un borde se muestre es necesario darle anchura y color. A continuación describimos como hacerlo. Se puede fijar la anchura del borde que rodea un elemento de bloque usando las siguientes propiedades:

Sintaxis CSS

Sintaxis JavaScript

Los valores que pueden tomar son tanto numéricos como palabras reservadas como thin, medium y thick. Vea una muestra:

border-width

Se puede fijar el estilo del borde usando la propiedad border-style de CSS o la propiedad borderStyle de JavaScript. Los valores que pueden tomar son dotted, dashed, solid, double, groove, ridge, inset y outset.

dotted dashed solid double
groove ridge inset outset

Las propiedades de borde se puede expresar de dos formas, por separado como hasta ahora, o combinadas como se muestra en el siguiente ejemplo:

Por separado:

p
{
  border-width: 1px;
  border-style: solid;
  border-color: blue;
}

Combinadas:

p { border: 1px solid blue; }

Relleno

El relleno indican la distancia entre el borde de un elemento y su contenido. El relleno se muestra incluso si el borde del elemento no lo hace.

Se puede fijar el tamaño del relleno de un elemento de bloque utilizando las siguientes propiedades.

Sintaxis CSS

Sintaxis JavaScript

Ejercicio: cree un estilo que aplicado a una tabla consiga que los elementos en el interior de las celdas tengan un relleno de 16 pixels a izquierda y derecha y 8 pixels arriba y abajo.


Herencia de Propiedades de Formato de Bloque

La características de anchura, márgenes, bordes y relleno de los elementos padre no son heredadas por sus hijos. Sin embargo, a primera vista, a veces puede parecer que si son heredados, pues los valores los elementos padre afectan a sus elementos hijos.

Supongamos que a un elemento <div> le fijamos un margen izquierdo de valor 10 puntos. De esta forma la caja que le rodea se encuentra desplazada 10 puntos hacia la derecha. Además supondremos que no tiene bordes ni relleno. Todos sus elementos hijo estarán pegados a su margen izquierdo, que como esta 10 puntos desplazado hacia la derecha, causara un efecto parecido a si ellos mismos también tuviesen borde izquierdo.

Pensemos en que ocurriria si los hijos heredasen estas características de sus padres. El bloque <div> esta indentado 10 puntos. Sus hijos a su vez estarán indentados otros 10 puntos con respecto a el, con lo cual el aspecto global es que los hijos estarian indentados 20 puntos.

Algo parecido ocurriría con una imagen de fondo. Si se heredase esta propiedad en vez de ver una sola copia de la imagen de fondo, normalmente apliacada a body, veriamos muchas copias de la esquina superior izquierda si no se cambia la alineación por defecto de la imagen.


Fuentes Descargables

Las fuentes cargables consisten en la posibilidad de incluir en el documento HTML la definición de las fuentes empleadas por si éstas no se encontraran disponibles en el sistema de destino. Dicha definición consiste en un fichero que se debe colocar en la máquina servidora, al igual que el documento o las imágenes.

Los ficheros de fuentes, como otros muchos recursos, se pueden conseguir en Internet, pero el usuario no las puede grabar en disco (como puede hacer con el documento o las imágenes). Por otro lado, hay que tener en cuenta que las fuentes están sujetas a las "leyes de derechos de autor", por lo que, antes de utilizarlas dentro de nuestras páginas deberemos asegurarnos de tener permiso para hacerlo.

Para que todo funcione correctamente, al servidor habrá que añadirle un nuevo tipo MIME para que reconozca este tipo de archivos. El nuevo tipo es application/font-tdpfr, asociado a la extensión .pfr.


Cómo Usar Fuentes Descargables.

Una vez se dispone del fichero de definición de fuentes, por ejemplo, fuente.pfr, se pueden asociar al documento a través de un estilo, por medio de la palabra fontdef, por ejemplo:

<style type="text/css">
    @fontdef "http://www.gutemberg.org/fuente.pfr";
</style>

o también con la etiqueta <link>:

<link rel=fontdef src="http://www.gutemberg.org/fuente.pfr">

Una vez que el fichero ha sido cargado desde el servidor donde están las páginas, imágenes, fuentes, etc., para utilizar estas fuentes, modificaremos el valor del atributo face de la etiqueta <font>, por ejemplo:

<font face = "Gutemberg">
    Vamos a probar el tipo de letra Gutemberg
</font>

o bien definiendo un estilo CSS, utilizando la propiedad font-family:

<style type="text/css">
    clasico { font-family: Gutemberg, sans-serif }
</style>
    ...
    ...
<div class="clasico">Este tipo de letra es la Gutemberg</div>

Este párrafo utilizará el tipo de fuente Gutemberg si está disponible, sino utilizará la sans-serif.

Podemos ver algunos ejemplos de fuentes descargables en la página de http://www.myfonts.com/bestsellers.html. En tenemos otros ejemplos de fuentes descargables en la página de TrueDoc. Esta es la fuente EyeBall. He aquí una muestra de la fuente Amelia tomada directamente desde su servidor: ABCDEFGHIJKLMNOPQRSTUVWXYZ


Herramientas de Diseño

Dos programas que sirven para crear este tipo de ficheros son:

Al crear el fichero de definición de fuente, podemos especificar el dominio de la red en el que permitimos que se use dicha fuente.


Manual de Referencia de Hojas de Estilo


Comentarios en las Hojas de estilo

En las hojas de estilo en cascada y en las hojas de estilo en JavaScript se pueden usar comentarios al estilo C. Por ejemplo:

em {color:red;} /* el texto enfatizado será rojo */
tags.em.color="red"; /* el texto enfatizado será rojo */

JavaScript además permite usar comentarios al estilo de C++. Por ejemplo:

tags.em.color="red"; // el texto enfatizado será rojo

Los comentarios no pueden anidarse.


Nuevas etiquetas HTML

En esta sección se veran las nuevas etiquetas que han sido añadidas para trabajar con estilos.


<DIV>

Las etiquetas <DIV> y </DIV> se usan para agrupar elementos de bloque y poder aplicarles un cierto estilo que nos interese. Esta etiueta de por sí no produce ningún cambio en el contenido de un documento. Es equivalente a <DIV>, sólo que esta se utiliza con elementos en línea.

Ejemplos:

<p>Un párrafo normal...</p>
<div class="especial">
  <p>Un párrafo especial...</p>
  <p>Otro párrafo especial...</p>
</div>
<p>Un párrafo normal...</p>
<p>Otro párrafo normal...</p>

<STYLE>

Las etiquetas <STYLE> y </STYLE> se usan para crear una hoja de estilo. En su interior podemos especificar estilos para elementos, deficir clases e identificadores y en general establecer los estilos que se utilizaran en todo el documento.

Para especificar que tipo de sintaxis se empleara utilizaremos el atributo TYPE. Su valor por defecto es "text/css" y selecciona la sintaxis CSS. Mediante el valor "text/javascript" podemos seleccionar la sintaxis JavaScript.

Ejemplos:

Sintaxis CSS

<style type="text/css">
    body {margin-left: 10%; margin-right: 10%;}
    .limon {color: yellow;}
<style>

Sintaxis JavaScript

<style type="text/javascript">
    tags.body.marginLeft="10%";
    tags.body.marginRight="10%";
    classes.limon.all.color="yellow";
<style>

<LINK>

La etiqueta <LINK> sirve para poder utilizar en un documento una hoja de estilo que esta en otro fichero.

Sintaxis CSS

<html>
    <head>
        <title>Titulo</title>
        <link rel=stylesheet type="text/css" href="http://estilos/mi_estilo.html">
    </head>
    <body> ... </body>
</html>

Sintaxis JavaScript

<html>
    <head>
        <title>Titulo</title>
        <link rel=stylesheet type="text/javascript" 
                 href="http://estilos/mi_estilo.html">
    </head> 
    <body> ... </body>
</html>

<SPAN>

Las etiquetas <SPAN> y </SPAN> se utilizan para agrupar una porción de código a la que se le va aplicar un estilo. A diferencia de <DIV>, se utiliza con elementos en línea en lugar de con elementos de bloque.

En el siguiente ejemplo se aplica un estilo a una parte del texto:

Este texto es normal. <span style="font-weight: 
bold; color: green;">Este texto es diferente gracias 
a &lt;span>.</span> De nuevo el texto es normal.

El resultado del ejemplo es:

Este texto es normal. Este texto es diferente gracias a <span>. De nuevo el texto es normal.

Veamos otro ejemplo. Este hace diferentes las letras iniciales:

<style type="text/css">
    .letron {font-family: times; font-size: 200%; font-weight: bold;}
</style>

<p><span class="letron">E</span>n un lugar de la Mancha...</p>

Resultado:

En un lugar de la Mancha...


Nuevos atributos para las etiquetas HTML

En esta sección se enumeran los nuevos atributos que podemos utilizar con las etiquetas HTML y que son utiles para trabajar con estilos. Estos atributos pueden ser usados con cualquier etiqueta para especificar su estilo.


STYLE

El atributo STYLE determina el estilo del elemento al que se aplique. Por ejemplo:

Sintaxis CSS

<h4 style="font-weight: bold; color: red;">Cabecera h4 en rojo</h4>

Sintaxis JavaScript

<h4 style="fontWeight='bold'; color='red'">Cabecera h4 en rojo</h4>

Resultado del ejemplo:

Cabecera h4 en rojo


CLASS

El atributo CLASS permite aplicar una clase de estilo a un elemento. Aunque CSS y JavaScript usen sintaxis ligeramente diferentes para la definición de clases de estilos, la forma de usar dichas clases es común. Ejemplo:

Sintaxis CSS

<style type="text/css">
    h3.cursiva {font-style: italic;}
<style>

Sintaxis JavaScript

<style type="text/javascript">
    classes.cursiva.h3.fontStyle="italic";
<style>

Uso de la hoja de estilo:

<h3 class="cursiva">Cabecera h3 cursiva</h3>

Se debe tener en cuenta que para los nombres de clase se distingue entre mayúsculas y minúsculas .

Cada elemento HTML sólo puede utilizar una clase de estilo.

Para especificar que una clase puede aplicarse a todos los elementos se utiliza el selector "all", "*" o simplemente no se especifica ninguna etiqueta cuando se definen las propiedades de la clase. En el siguiente ejemplo todos los elemento de clase limon serán amarillos.

Sintaxis CSS

<style type="text/css">
    .limon {background-color: grey; color: yellow;}
<style>

Sintaxis JavaScript

 <style type="text/javascript">
    classes.limon.all.color="yellow";
 <style>

Uso de la hoja de estilo:

 <h4 class="limon">Una cabecera amarilla</h4>
 <p class="limon">Un párrafo naranja</p>

Resultado del ejemplo

Una cabecera amarilla

Un párrafo amarillo


ID

Cuando se definen hojas de estilo, se pueden crear estilos individuales con nombre.

Un elemento puede usar clases de estilos y además usar estos estilos individuales con nombre. Con ellos podemos crear excepciones a las clases de estilos

Para definir un estilo individual con nombre, en sintaxis CSS se utiliza el signo #, mientras que en JavaScript se utiliza el selector ID.

En ambos casos se utiliza el atributo ID para especificar el estilo de un elemento HTML.

En los nombres de los ID's se distingue entre mayúsculas y minúsculas

En el siguiente ejemplo se define la clase calor, que hace a los párrafos ser de color rojo y en estar en negrita. También se crea un nombre de estilo, frio, que es de color azul. Se muestra como utilizar frio para crear una excepcion a calor.

Sintaxis CSS

<style type="text/css">
   p.calor {color: red; font-weight: bold;}
   #frio {color: blue;}
<style>

Sintaxis JavaScript

<style type="text/javascript">
   classes.calor.p.color="red";
   classes.calor.p.fontWeight="bold";
   ids.frio.color="blue";
<style>

Uso de la hoja de estilo:

<p class="calor">Un párrafo caliente...</p>
<p class="calor" id="frio">Un párrafo frio...</p>

Resultado del ejemplo:

Un párrafo caliente...

Un párrafo frio...


Nuevas propiedades de objetos JavaScript

En esta sección se exponen las nuevas propiedades de los objetos JavaScript que son utilies para definir hojas de estilos usando la sintaxis de JavaScript.


TAGS

Cuando se usa sintaxis JavaScript dentro del elemento <style>, podemos seleccionar estilos usando la propiedad tag del objeto document.

El siguiente ejemplo utiliza la sintaxis JavaScript para especificar que todos los párrafos sean de color verde.

 <style type="text/javascript">
    tags.p.color="green";
 <style>

En sintaxis CSS este ejemplo seria:

 <style type="text/css">
    p {color: green;}
 <style>

La propiedad tags siempre se refiere al objeto document del documeto actual, por esto se puede omitir document de la expresion document.tags. Asi, las dos siguentes líneas expresan lo mismo:

 document.tags.p.color="green";
 tags.p.color=green";

Para definir estilos por defecto a todos los elementos de un documento se debe hacer a traves del elemento <body>, porque todos los demás elementos heredan de este.

 tags.body.marginLeft="10%"; /* sintaxis JavaScript */
 body {margin-left: 10%;} /* sintaxis CSS */

CLASSES

Ver la sección CLASS de los nuevos atributos para las etiquetas HTML.


IDS

Ver la sección ID de los nuevos atributos para las etiquetas HTML.


Propiedades de las Hojas de Estilo


Fuentes


Tipo de Fuente

La propiedad font-family se utiliza para establecer una lista ordenada de fuentes que se utilizarán para mostrar el texto de la página. Si la primera fuente no está disponible intentará utilizar la siguiente, y así sucesivamente.

font-family

Sintaxis CSS: font-family

Sintaxis JavaScript: fontFamily

Posibles valores un nombre de fuente
Valor inicial la fuente por defecto
Se aplica atodos los elementos
Heredable si
Valores porcentualesno aplicable

Tipo de fuente: serif, sans-serif, cursive, monospace, fantasy, ...


Tamaño de Fuente

Sintaxis CSS: font-size

Sintaxis JavaScript: fontSize

Posibles valores tamaño absoluto, tamaño relativo, longitud, porcentage
Valor inicial medium
Se aplica atodos los elementos
Heredable si
Valores porcentualesrelativos al tamaño del padre

Tamaño absoluto: xx-small, s-small, small, medium, large, x-large, xx-large

Tamaño relativo: larger, smaller

Longitud: numero + unidad

Porcentaje: tamaño de fuente relativo al tamaño de fuente del padre.


Peso de Fuente

Sintaxis CSS: font-weight

Sintaxis JavaScript: fontWeight

Posibles valores normal, bold, bolder, lighter, 100 - 900
Valor inicial normal
Se aplica atodos los elementos
Heredable si
Valores porcentualesno aplicable

Estilo de Fuente

Sintaxis CSS: font-style

Sintaxis JavaScript: fontStyle

Posibles valores normal, italic
Valor inicial normal
Se aplica atodos los elementos
Heredable si
Valores porcentualesno aplicable

Las propiedades de las fuentes se pueden combinar para permitirnos una escritura más sencilla. Vea el siguinte ejemplo:

Por separado:

p 
{ 
    font-style: italic; 
    font-weight: bold; 
    font-size: 30px; 
    font-family: arial, sans.serif;
}

Combinadas:

p { font: italic bold 30px arial, sans-serif; }

Propiedades del Texto

Dar formato y estilo al texto es un elemento clave en el diseño de la mayoría de las páginas web. A continuación veremos que CSS permite una gran flexibilidad a la hora de hacerlo.


Interlínea

La interlínea es la separación con que el navegador muestra varias líneas de texto.

Sintaxis CSS: line-height

Sintaxis JavaScript: lineHeight

Posibles valores numero, longitud, porcentage, normal
Valor inicial tamaño por defecto para la fuente
Se aplica aelementos de bloque
Heredable si
Valores porcentualesrelativos al tamaño de la fuente

Decoracion del Texto

La decoración de texto agrupa varias modificaciones de estilo que en HTML se realizaban mediante varias etiquetas por separado.

Sintaxis CSS: text-decoration

Sintaxis JavaScript: textDecoration

Posibles valores none, underline, line-through, blink
Valor inicial none
Se aplica atodos los elementos
Heredable si
Valores porcentualesno aplicable

Transformaciones del Texto

Las transformaciones de texto permite alterar si el texto se muestra en mayúsculas, minúsculas u otras combinaciones.

Sintaxis CSS: text-transform

Sintaxis JavaScript: textTransform

Posibles valores capitalize, uppercase, lowercase, none
Valor inicial none
Se aplica atodos los elementos
Heredable si
Valores porcentualesno aplicable

Alineación del Texto

La alineación es equivalente al atributo align de HTML. Nos permite hacer que las líneas de texto se alineen a derecha, izquierda, centro o ambos lados a la vez. Esto último es común en prensa, pero hay que usarlo con cuidado en líneas de poca anchura porque puede producir un espaciado entre palabras excesivo.

Sintaxis CSS: text-align

Sintaxis JavaScript: textAlign

Posibles valores left, right, center, justify
Valor inicial left
Se aplica aelementos de bloque
Heredable si
Valores porcentualesno aplicable

Indentación de Texto

Esta propiedad permite añadir un toque de indentación extra a la primera linea de un párrafo.

Sintaxis CSS: text-indent

Sintaxis JavaScript: textIndent

Posibles valores longitud, porcentaje
Valor inicial 0
Se aplica aelementos de bloque
Heredable si
Valores porcentualesrelativos a la anchura del padre

Longitud: numero + unidad

Porcentaje: longitud de indentación relativo a la anchura del padre.

Ejercicio: aplique una indentación extra sólo al primer párrafo tras un título de tamaño 1 (h1). Pista: tendrá que seleccionar con h1 + p, que quiere decir cada p inmediatamente precedido por un h1.


Propiedades de Formato de Elementos de Bloque


Márgenes

Sintaxis CSS: margin-left, margin-right, margin-top, margin-bottom, margin

Sintaxis JavaScript: marginLeft, marginRight, marginTop, marginBottom, margins()

Posibles valores longitud, porcentaje,auto
Valor inicial 0
Se aplica atodos los elementos
Heredable no
Valores porcentualesrelativos a la anchura del padre

Relleno

Sintaxis CSS: padding-left, padding-right, padding-top, padding-bottom, padding

Sintaxis JavaScript: paddingLeft, paddingRight, paddingTop, paddingBottom, paddings()

Posibles valores longitud, porcentaje
Valor inicial 0
Se aplica atodos los elementos
Heredable no
Valores porcentualesrelativos a la anchura del padre

Anchura del los Bordes

Sintaxis CSS: border-left-width, border-right-width, border-top-width, border-bottom-width, border-width

Sintaxis JavaScript: borderLeftWidth, borderRightWidth, borderTopWidth, borderBottomWidth, borderWidths()

Posibles valores longitud
Valor inicial none
Se aplica atodos los elementos
Heredable no
Valores porcentualesno aplicable

Estilo del Borde

Sintaxis CSS: border-style

Sintaxis JavaScript: borderStyle

Posibles valores none, solid, double, inset, outset, groove, ridge
Valor inicial none
Se aplica atodos los elementos
Heredable no
Valores porcentualesno aplicable

Color del Borde

Sintaxis CSS: border-color

Sintaxis JavaScript: borderColor

Posibles valores color, none
Valor inicial none
Se aplica atodos los elementos
Heredable no
Valores porcentualesno aplicable

Color: nombre de un color o 6 digitos hexadecimales indicando su valor rgb.


Anchura

Esta propiedad permite especificar la anchura de un elemento. El navegador intenta respetar la solucitud del programador siempre que sea posible y no entre en conflicto con otras propiedades como los márgenes.

Sintaxis CSS: width

Sintaxis JavaScript: width

Posibles valores longitud, porcentaje, auto
Valor inicial auto
Se aplica aelementos de bloque
Heredable no
Valores porcentualesrelativos a la anchura del padre

Alineación

Todo elemento se puede hacer flotar a derecha o izquierda mediante la propiedad float. La caja que contiene el elemento se puede hacer flotar a derecha o izquierda como se intenta explicar con la siguiente imagen:

float

Sintaxis CSS: float

Sintaxis JavaScript: align

Posibles valores left, right, none
Valor inicial none
Se aplica atodos los elementos
Heredable no
Valores porcentualesrelativos a la anchura del padre

A continuación veremos el resultado de utilizar float con sus distintos valores. El código al que se le aplicará es el siguiente:

<img src="pause.png" />
<p>bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla,
bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, 
bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, 
bla, bla, bla, bla, bla, bla, bla, bla, bla, ...</p>

Sin float:

sin float

bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, ...

Con float: left:

float: left

bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, ...

Con float: right:

float: right

bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, bla, ...


Clear

La propiedad clear sirve para controlar cómo se comportarán los elementos que siguen a otros elementos flotantes. Por defecto los elementos que suguen a los que flotan se mueven hacia arriba para rellenar el espacio disponible. Esta propiedad permite especificar donde no habrá elementos flotantes. Las opciones son left, right y both.

Sintaxis CSS: clear

Sintaxis JavaScript: clear

Posibles valores none, left, right, both
Valor inicial none
Se aplica atodos los elementos
Heredable no
Valores porcentualesno aplicable

Ejercico: Modifique los ejemplos anteriores en los que se usa float para descubrir su efecto "limpiador".


Propiedades de Color y Fondo


Color

Sintaxis CSS: color

Sintaxis JavaScript: color

Posibles valores color
Valor inicial black
Se aplica atodos los elementos
Heredable si
Valores porcentualesno aplicable

Esta propiedad especifica el color del texto.

Color: especificacion de un color (nombre, valor rgb).


Imagen de Fondo

Sintaxis CSS: background-image

Sintaxis JavaScript: backgroundImage

Posibles valores url
Valor inicial vacio
Se aplica atodos los elementos
Heredable no
Valores porcentualesno aplicable

Posición del Fondo

Sintaxis CSS: background-position

Sintaxis JavaScript: backgroundPosition

Posibles valores absoluto o relativo, conjunto de coordenadas x y, palabras reservadas left, right, top, bottom, center
Valor inicial esquina superior izquierda
Se aplica atodos los elementos
Heredable no
Valores porcentualesno aplicable
background-position

Color de Fondo

Sintaxis CSS: background-color

Sintaxis JavaScript: backgroundColor

Posibles valores color
Valor inicial vacio
Se aplica atodos los elementos
Heredable no
Valores porcentualesno aplicable

Propiedades de Clasificacion


Display

Sintaxis CSS: display

Sintaxis JavaScript: display

Posibles valores ninguno, block, inline, list-item
Valor inicial segun HTML
Se aplica atodos los elementos
Heredable no
Valores porcentualesno aplicable

Esta propiedad indica cuando un elemento es en línea, como <em>, de bloque, como <h1> o de lista, como <li>.


Estilo de Lista

Sintaxis CSS: list-style-type

Sintaxis JavaScript: listStyleType

Posibles valores ninguno, disk, circle, square, decimal, lower-roman, upper-roman, lower-alpha, upper-alpha
Valor inicial disk
Se aplica aelementos cuya propiedad display es list-item
Heredable si
Valores porcentualesno aplicable

Espacios en Blanco

Sintaxis CSS: white-space

Sintaxis JavaScript: whiteSpace

Posibles valores normal, pre
Valor inicial segun HTML
Se aplica aelementos de bloque
Heredable si
Valores porcentualesno aplicable

Unidades


Unidades de Longitud

El formato de un valor de longitud es un signo opcional ('+' o '-', '+' por defecto), un numero y una unidad de medida. Ejemplos: 12pt, 2em, 3mm.

Hay tres tipos de unidades: absolutas, relativas y pixel.

Tipos de unidades absolutas:

Tipos de unidades relativas:

Los elementos hijo heredan los valores calculados y no los valores relativos. Por ejemplo:

body {font-size: 12; text-indent: 3em}
h1 {font-size: 15pt;}

En este ejempo la indentación del texto en <h1> será 36pt y no 45pt.


Unidades de Color

Un valor de color es o un nombre de color o una descripcion RGB.

La lista de colores sugerida es: aqua, black, blue, fuchsia, gray, green, maroon, navy, olive, purple, red, silver, teal, white, yellow. Estos 16 colores se han tomado de la paleta VGA de Windows.

      body {color: black;}
      tags.body.backgroundColor = "white"

Un color RGB puede especificarse mediante 6 digitos hexadecimales. Los dos primeros indican rojo, los dos segundos verde y los dos ultimos azul. Ejemplos:

      body {color: #ff0000;} /* rojo */
      tags.p.backgroundColor = "#606060"; /* gris */

También podemos utilizar la funcion rgb(). Usa tres argumentos: rojo, verde y azul. Cada color puede ser un entero entre 0 y 255, o un porcentaje. Ejemplo:

      p {color: rgb(200, 20, 240);} /* purpura brillante */
      blockquote {background-color: rgb(100%, 100%, 20%);} /* amarillo brillante */

Ejemplos de diseño

La mayoría de las páginas de empresas importantes ya venían utilizando hojas de estilo desde hace años. Ahora la mayoría de ellas están realizando una segunda transición para distribuir sus contenidos según hojas de estilo. Es decir, la distribución del contenido de la página ya no se hace como antes mediante marcos ni tablas sino mediante capas. Podemos ver ejemplos de esto en páginas tan importantes como Slashdot o Apple.

Aunque estos principios no son universales, si que son seguidos por la mayoría de los desarrolladores de páginas web. Lo más habitual es repartir el contenido de la página en capas div y luego desde la hoja de estilo distribuir las capas. Podemos ver un ejemplo muy sencillo en aquí.

La mayoría de los atributos utilizados podriamos considerarlos avanzados y no los hemos visto a lo largo de este tutorial. Para ver una lista bastante completa echadle un vistazo a la Guia de referencia rápida de hojas de estilo, especialmente al modelo de formato visual

Como ejercicio práctico os proponemos modifiqueis la hoja de estilo de esta sencilla página web y le deis un estilo "visualmente agradable". Esto suele ser algo complicado puesto que es cuestión de gustos.


Enlaces

Guía de referencia rápida XHTML 1 (copia local)

Guía de referencia rápida CSS 2.1 (copia local)

World Wide Web Consortium

Especificacion original sobre Hojas de Estilo publicada por el World Wide Web Consortium: http://www.w3.org/pub/WWW/TR/REC-CSS1(copia local)

Segunda especificacion sobre Hojas de Estilo publicada por el World Wide Web Consortium: http://www.w3.org/pub/WWW/TR/REC-CSS2(copia local)

El Jardin Zen del CSS: http://www.csszengarden.com

Compatibilidad con los navegadores

Informacion de Netscape sobre HTML Dinamico

Tutorial de JavaScript en español: http://www.dansteinman.com/dynduo/es/

DoubleYou

Validadores de código: HTML y CSS

Otros tutoriales de HTML y CSS

Manual de referencia de CSS


(C) Gustavo Romero López
Last modified: Wed Feb 20 21:51:26 CET 2008
Valid HTML 4.01! Valid CSS!