Вы находитесь на странице: 1из 17

Hoja de estilos en cascada

CSS (siglas en inglés de Cascading Style Sheets), en español


"Hojas de estilo en cascada", es un lenguaje de diseño gráfico
Hoja de estilos en cascada
para definir y crear la presentación de un documento
estructurado escrito en un lenguaje de marcado.2 Es muy usado
para establecer el diseño visual de los documentos web, e
interfaces de usuario escritas en HTML o XHTML; el lenguaje
puede ser aplicado a cualquier documento XML, incluyendo
XHTML, SVG, XUL, RSS, etcétera. También permite aplicar
estilos no visuales, como las hojas de estilo auditivas.

Junto con HTML y JavaScript, CSS es una tecnología usada


por muchos sitios web para crear páginas visualmente
atractivas, interfaces de usuario para aplicaciones web y GUIs
para muchas aplicaciones móviles (como Firefox OS).3

CSS está diseñado principalmente para marcar la separación del


contenido del documento y la forma de presentación de este,
características tales como las capas o layouts, los colores y las
Desarrollador
fuentes.4 Esta separación busca mejorar la accesibilidad del
CSS Working Group
documento, proveer más flexibilidad y control en la
especificación de características presentacionales, permitir que https://www.w3.org/Style/CSS/ y
varios documentos HTML compartan un mismo estilo usando https://drafts.csswg.org/
una sola hoja de estilos separada en un archivo .css, y reducir Información general
la complejidad y la repetición de código en la estructura del Lanzamiento 17 de diciembre de 1996
documento. inicial
Última CSS31
La separación del formato y el contenido hace posible presentar
versión
el mismo documento marcado en diferentes estilos para
Tipo de Lenguaje de hoja de estilos
diferentes métodos de renderizado, como en pantalla, en
formato
impresión, en voz (mediante un navegador de voz o un lector de
Estándar(es) Level 1 (Recommendation) (http://w
pantalla, y dispositivos táctiles basados en el sistema Braille.
ww.w3.org/TR/2008/REC-CSS1-20
También se puede mostrar una página web de manera diferente
080411/)
dependiendo del tamaño de la pantalla o tipo de dispositivo.
Level 2 (Recommendation) (http://w
Los lectores pueden especificar una hoja de estilos diferente,
ww.w3.org/TR/2008/REC-CSS2-20
como una hoja de estilos CSS guardado en su computadora,
080411/)
para sobreescribir la hoja de estilos del diseñador.
Level 2 Revisión 1
La especificación CSS describe un esquema prioritario para
(Recommendation) (http://www.w3.
org/TR/CSS2/)
determinar qué reglas de estilo se aplican si más de una regla
Level 2 Revision 2 (CSS 2.2) (http
coincide para un elemento en particular. Estas reglas son
s://www.w3.org/TR/CSS22/)
aplicadas con un sistema llamado de cascada, de modo que las
prioridades son calculadas y asignadas a las reglas, así que los
Formato
abierto
resultados son predecibles.
La especificación CSS es mantenida por el World Wide Web Consortium (W3C). El MIME type text/css está registrado para
su uso por CSS descrito en el RFC 23185 . El W3C proporciona una herramienta de validación de CSS gratuita para los
documentos CSS.

Índice
Sintaxis
Selectores
Bloque de declaraciones
Uso
Fuentes
Especificidad
Ejemplo
Herencia
Ejemplo
Espacios en blanco
Posicionamiento
Propiedades de posicionamiento
Float y clear

Historia
Niveles
CSS1
CSS2
CSS 2.1
CSS3.1
Soporte por los navegadores web
Limitaciones
Limitaciones resueltas
Ventajas
Framework CSS
Véase también
Referencias
Enlaces externos

Sintaxis
CSS tiene una sintaxis simple y usa un conjunto de palabras clave en inglés para especificar los nombres de varias propiedades de
estilo.

Una hoja de estilos consiste en una serie de reglas. Cada regla, o conjunto de reglas consisten en uno o más selectores, y un
bloque de declaración.

Selectores
Los selectores declaran qué etiquetas se le aplican los estilos que coincidan con la etiqueta o atributo señalados en la regla.

Los selectores pueden aplicarse a:


Todos los elementos de un tipo, como los párrafos <p>.
Elementos seguidos de un atributo, en particular:

id: identificador, un identificador único para la etiqueta.


class: clase, un identificador para anotar múltiples elementos.

Las clases y los identificadores son sensibles a las mayúsculas, comienzan con letras, y pueden incluir caracteres alfanuméricos y
guiones bajos. Una clase se aplica a cualquier número de elementos. Un identificador se aplica un solo elemento.

Las pseudoclases son usadas en los selectores CSS para permitir el formateo usando información que no está incluida en el
documento. Un ejemplo de una pseudoclase muy usada es :hover, que identifica el contenido que está siendo apuntado por un
puntero, como el cursor del ratón. Este nombre se añade al selector, de esta manera: a:hover o #elementid:hover. Una
pseudoclase clasifica elementos, como :link o :visited, mientras que un pseudoelemento hace una selección de elementos
parciales, como ::first-line o ::first-letter.

Los selectores pueden ser combinados de muchas maneras para obtener una mayor flexibilidad y precisión. Múltiples selectores
pueden ser unidos en una misma línea para especificar elementos por su ubicación, tipo de elemento, identificador, clase, o
cualquier combinación de estos. El orden de los selectores es importante. Por ejemplo, div.myClass {color: red;}
aplica a todos los elementos <div> con la clase myClass, mientras que.myClass div {color: red;} aplica a todos los
elementos <div> que estén dentro de cualquier elemento con la clase myClass.

La tabla siguiente provee un resumen de la sintaxis de los diversos selectores, indicando su forma de uso y la versión de CSS en
la que fueron introducidos:
Nivel CSS de
Patrón Significado
aparición
E un elemento de tipo E 1
un elemento E que es un enlace que no ha sido visitado (:link) o ya fue
E:link 1
visitado (:visited)
E:active un elemento E que está realizando cierta acción por parte del usuario 1
E::first-line la primera línea formateada de un elemento E 1
E::first-letter la primera letra formateada de un elemento E 1
.c todos los elementos con class="c" 1
#myid el elemento con id="myid" 1
E.warning un elemento E que perteneciente a la clase "warning" 1
E#myid un elemento E cuyo id sea "myid"km.bm,. , 1
EF un elemento F descediente de un elemento E 1
* cualquier elemento 2
E[foo] un elemento E con un atributo "foo" 2
E[foo="bar"] un elemento E cuyo atributo "foo" tiene un valor exacto de "bar" 2
un elemento E cuyo atributo "foo" tiene una lista de valores separados por
E[foo~="bar"] 2
espacios, y uno de ellos es "bar"
E:first-child el primer hijo de un elemento E 2
E:lang(eo) un elemento E cuyo idioma esté especificado en "eo" 2
E::before contenido generado antes del contenido del elemento E 2
E::after contenido generado después del contenido del elemento E 2
E>F un elemento F hijo de un elemento E 2
E+F un elemento E inmediatamente sucedido de un elemento F 2
un elemento E cuyo atributo "foo" tenga un valor que comience exactamente
E[foo^="bar"] 3
con la cadena "bar"
un elemento E cuyo atributo "foo" tenga un valor que finalice exactamente
E[foo$="bar"] 3
con la cadena "bar"
un elemento E cuyo atributo "foo" tenga un valor que contenga la subcadena
E[foo*="bar"] 3
"bar"
E:root un elemento E en la raíz del documento 3
E:nth-child(n) un elemento E, el n-esimo hijo de este 3
E:nth-last-
un elemento E, el n-esimo hijo de este, contando desde el último hijo 3
child(n)
E:nth-of- un elemento E, el n-esimo hijo de este, contando solo los de el mismo tipo
3
type(n) que el padre
E:nth-last-of- un elemento E, el n-esimo hijo de este, contando solo los de el mismo tipo
3
type(n) que el padre, y desde el último hijo
E:last-child el último hijo de un elemento E 3
E:first-of-type un elemento E, los primeros hermanos de su tipo 3
E:last-of-type un elemento E, los últimos hermanos de su tipo 3
E:only-child el único hijo del elemento E 3
E:only-of- el único hermano del elemento E 3
type
E:empty un elemento E que no posea hijos (incluyendo nodos de texto) 3
E:target un elemento E de enlace siendo pulsado 3
E:enabled un elemento E de interfaz de usuario habilitado 3
E:disabled un elemento E de interfaz de usuario deshabilitado 3
un elemento E de interfaz de usuario marcado (válido para los checkboxs y
E:checked 3
los radiobuttons)
E:not(s) eunelemento E que no coincide con el selector simple s 3
E~F un elemento E sucedido de un elemento F 3

Bloque de declaraciones
Un bloque de declaraciones consiste en una lista de declaraciones unidas. Cada declaración consiste en una propiedad, dos puntos
(:), y un valor. Si hay muchas declaraciones en un bloque, un punto y coma (;) es insertado para separar cada declaración.

Las propiedades son insertadas en el estándar CSS. Cada propiedad tiene un conjunto de posibles valores. Algunas propiedades
afectan a cualquier elemento, otras solo a un grupo particular de elementos. Los valores pueden ser palabras clave, como "center"
o "inherit", o valores numéricos, como 200px (200 píxeles) o 80% (80 por ciento del ancho de la ventana). Los valores de colores
son especificados por medio de una palabra clave (ej. "red"), de valores hexadecimales (ej. #FF0000, pudiéndose abreviar como
#F00), valores RGB en una escala del 0 al 255 (ej. rgb(255, 0, 0)), valores RGBA igual que los valores RGB pero con
soporte para el canal alfa de transparencias (ej. rgba(255, 0, 0, 0.8)), y valores HSL o HSLA (ej. hsl(000, 100%,
50%), hsla(000, 100%, 50%, 80%)).

Uso
Antes del desarrollo de CSS, toda la información presentacional de los documentos HTML era incluida en el código HTML. Los
colores de las fuentes, los estilos de fondo, la alineación de los elementos, los bordes y tamaños eran descritos explícitamente, a
veces de manera redundante, dentro del HTML. CSS permite a los diseñadores mover toda la información presentacional a otro
archivo, la hoja de estilos, resultando en un código HTML notablemente más simple.

Por ejemplo, las cabeceras (h1), sub-cabeceras (h2), sub-sub-cabeceras (h3), etc., son definidas estructuralmente usando HTML.
En la impresión y las pantallas, la elección de la fuente, tamaño, color y énfasis para esos elementos es presentacional.

Antes de CSS, los diseñadores que deseaban asignar características tipográficas, por ejemplo, a todos los elementos h2 tenían que
repetir el código presentacional HTML por cada elemento al que se le deseaba aplicar ese estilo. Esto creaba documentos más
complejos, largos, más propensos a errores y difíciles de mantener. CSS permite la separación entre la presentación y la
estructura. CSS puede definir el color, fuente, alineación del texto, tamaño, bordes, espaciado, capas y muchas otras
características tipográficas, y pueden aplicarse distintos estilos de impresión y de pantalla. CSS también define estilos no
visuales, como la velocidad de lectura y énfasis en los lectores de textos aurales. El W3C ha declarado obsoleto el uso de las
etiquetas presentacionales HTML.

Por ejemplo, aplicando estilos mediante etiquetas presentacionales HTML, un elemento h1 definido con texto rojo se puede
representar como:

<h1><font color="red"> Capítulo 1. </font></h1>


Usando CSS, el mismo elemento puede escribirse usando propiedades de estilo inline en vez de atributos y etiquetas de
presentación:

<h1 style="color: red;"> Capítulo 1. </h1>

Una hoja de estilos CSS externa, descrita abajo, puede enlazarse con un documento HTML usando la sintaxis siguiente:

<link href="hojadeestilos.css" rel="stylesheet" />

El código CSS se puede incluir en el código HTML en la etiqueta <style> dentro de la etiqueta <head> del documento:

<style>
h1 {color: red}
</style>

Fuentes
Los estilos CSS puede ser provistos desde varias fuentes. Esas fuentes pueden ser el navegador web, el usuario y el diseñador. La
información del diseñador puede ser clasificada de las siguientes formas: inline, media type, importancia, especificidad del
selector, orden de reglas, herencia y definición de propiedades. La información de los estilos CSS puede estar en un documento
separado o puede estar embebido dentro de un documento HTML. Múltiples hojas de estilos pueden ser importadas al mismo
tiempo. Los diferentes estilos pueden ser aplicados dependiendo de la salida del dispositivo usado en ese momento; por ejemplo,
la versión para monitores puede ser diferente de la versión impresa, así que los diseñadores pueden aplicar diferentes estilos
dependiendo del dispositivo usado.

La hoja de estilos con la máxima prioridad controla la visualización del contenido. Las declaraciones no establecidas en la fuente
con máxima prioridad son sobreeescritas, como las hojas de estilos del agente de usuario. Este proceso es llamado cascading, o
cascada.6

Una de las metas de CSS es permitir a los usuarios un mayor control sobre la presentación. Algunas personas que encuentran a
los encabezados rojos en itálicas difíciles de leer pueden aplicar una hoja de estilos diferente. Dependiendo del navegador y del
sitio web, un usuario puede escoger entre varias hojas de estilo provistas por los diseñadores, o pueden remover todas las hojas de
estilos añadidas y ver el sitio usando los estilos por defecto del navegador, o pueden sobreescribir solo el estilo de los
encabezados rojos en itálica sin alterar otros atributos.
Esquemas de prioridad CSS (de mayor a menor importancia)
Prioridad Tipo de origen de CSS Descripción
1 Importancia La anotación !important sobreescribe la prioridad anterior

Un estilo aplicado a un elemento HTML por medio del atributo


2 Inline
style

Una propiedad aplica a todas las media types, a menos que un


3 Media Type
media type específico CSS esté definido
La mayoría de los navegadores tienen esta característica de
4 Definido por el usuario
accesibilidad: un estilo CSS definido por el usuario
Un selector contextual específico (#heading p) sobreescribe una
5 Especificidad del selector
definicón general (p)

6 Orden de las reglas La última regla especificada tiene una mayor prioridad
Si una propiedad no está especificada, es heredada del elemento
7 Herencia
padre
Definición de propiedad CSS
8 Una regla CSS común sobreescribe el valor del navegador
en el documento HTML
La prioridad más baja: estos valores son determinados por las
9 Predeterminado del navegador
especificaciones iniciales de la W3C

Especificidad
La especificidad se refiere a los pesos relativos de varias reglas. Determina que estilos se aplican a un elemento cuando más de
una regla intentan aplicar estilos a ella. Basándose en la especificación, un simple selector (h1, por ejemplo) tiene una
especificidad de 1, los selectores de clase tienen una especificidad de 1,0, y los selectores de id una especificidad de 1,0,0. Porque
los valores de especificidad no se acarrean como en el sistema decimal, las comas son usadas para separar los "dígitos" (una regla
CSS que tiene 11 elementos y 11 clases tiene una especificidad de 11,11, no 121).

Por lo tanto los siguientes selectores de reglas dan como resultado la especificidad indicada:

Selectores Especificidad
H1 {color: white;} 0, 0, 0, 1
P EM {color: green;} 0, 0, 0, 2
.grape {color: red;} 0, 0, 1, 0
P.bright {color: blue;} 0, 0, 1, 1
P.bright EM.dark {color: yellow;} 0, 0, 2, 2
#id218 {color: brown;} 0, 1, 0, 0
style=" " 1, 0, 0, 0

Ejemplo
Considera este documento HTML:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<style>
#id{propiedad:valor;}
</style>
</head>
<body>
<p id="xyz" style="color: blue;">Para demostrar la especificidad</p>
</body>
</html>

En este ejemplo, la declaración en el atributo style sobreescribe la declaración del elemento <style> porque tiene un
especificidad más alta.

Herencia
La herencia es una característica clave en CSS; basada en la relación ancestro-descendiente para operar. La herencia es el
mecanismo por el cual las propiedades no sólo se aplican a un solo elemento, sino también a sus descendientes. La herencia se
basa en el árbol del documento, el cual es la jerarquía de los elementos XHTML en una página basada en el anidamiento. Los
elementos descendientes pueden heredar los valores de las propiedades CSS de un elemento ancestro. En general, los elementos
descendientes heredan las propiedades relacionadas al texto, pero las propiedades relacionadas a la caja no. Las propiedades que
pueden ser heredadas son el color, fuente, espaciado, el peso de la línea, propiedades de lista, alineación del texto, identado,
visibilidad, espaciado de espacios and y espaciado entre palabras. Las propiedades que no pueden ser heredadas son el fondo,
bordes, visualización, posicionamiento, tamaño, márgenes, tamaño mínimo y máximo, outline, desbordamiento, relleno, posición,
alineación vertical y z-index.7

La herencia previene que algunas propiedades sean declaradas una y otra vez en la hoja de estilos, permitiendo a los diseñadores
escribir menos código CSS. Mejora la carga rápida de los sitios por los usuarios, y permite a los clientes ahorrar dinero en los
costos de desarrollo y ancho de banda.

Ejemplo
Se tiene la siguiente hoja de estilos:

h1 {
color: pink;
}

Éste es un elemento h1 con una etiqueta de énfasis (em) dentro:

<h1>
Esto es para <em>ilustrar</em> la herencia
</h1>

Si no se asigna un color al elemento em, la palabra «ilustrar» heredará el color del elemento padre, h1. Entonces, la palabra
«ilustrar» aparecerá de color rosa.

Espacios en blanco
Los espacios en blanco entre propiedades y selectores se ignoran. Este pedazo de código:

body{overflow:hidden;background:#000000;}

es igual a este otro:

body {
overflow: hidden;
background: #000000;
}

Aunque el espaciado mejora la legibilidad del código.

Posicionamiento
CSS 2.1 define 3 esquemas de posicionamiento:

Normal
Los elementos inline, o de línea, son dispuestos de la misma manera que las letras en las
palabras de un texto, una vez que ya no hay más espacio en una línea, entonces se
empieza una nueva línea abajo. Los elementos block, o de bloque, son dispuestos
verticalmente, como los párrafos.
Flotante
Un elemento float está fuera del flujo normal y puesto lo más posible a la derecha o
izquierda en el espacio disponible. Los demás elementos fluyen alrededor del elemento
float.
Absoluto
Un elemento posicionado absolutamente no tiene un lugar, y no afecta al flujo normal de
los elementos. Ocupa el espacio que se le ha asignado independientemente de los
demás elementos.

Propiedades de posicionamiento
Hay 4 posibles valores para la propiedad position. Si un elemento está posicionado de una manera diferente a static, hay
cuatro subpropiedades usadas para especificar posiciones y offsets: top, bottom, left y right.8

Static
El valor por defecto a los elementos en el flujo normal.
Relative
El elemento el posicionado en el flujo normal, y luego movido relativamente a su posición
normal. Los demás elementos son independientes del elemento movido relativamente.
Absolute
Especifica el posicionamiento absoluto. El elemento es posicionado en relación a su
antecesor no estático más cercano.
Fixed
El elemento es posicionado absolutamente en una posición fija de la pantalla aunque el
resto del documento se mueva.

Float y clear
La propiedad float puede tener 3 valores diferentes. Los elementos posicionados absolutamente o de manera fija no pueden ser
aplicados a esta propiedad. Los demás elementos flotan normalmente alrededor de los elementos flotantes, a menos que se
establezcan alguna de las propiedades clear.

left
Los elementos float flotan a la izquierda y los otros elementos fluyen a la derecha de este
elemento.
right
Los elementos float flotan a la derecha y los otros elementos fluyen a la izquierda de este
elemento.
clear
Forza al elemento a no fluir alrededor de los elementos que flotan a la izquierda (clear:
left), a la derecha (clear: right) o a ambos lados (clear: both).

Historia
CSS fue propuesto por primera vez por Håkon Wium Lie el 10 de octubre de 1994.9 Al
mismo tiempo, Lie trabajaba con Tim Berners-Lee en el CERN.10 Muchos otros
lenguajes de hojas de estilos fueron propuestos al mismo tiempo, y las discusiones en las
listas de correo públicas dentro del W3C dieron lugar a la primera Recomendación CSS
por el W3C (CSS1)11 en 1996. En particular, la propuesta de Bert Bos fue influyente; él
fue el coautor de CSS1 y es reconocido como el cocreador de CSS.12

Las hojas de estilo han existido de una forma u otra desde los comienzos del Standard
Generalized Markup Language (SGML) en la década de los 80s, y CSS fue desarrollado
para proveer hojas de estilos para la web.13 Un requerimiento para un lenguaje de hoja de
estilos web era que las hojas de estilo vinieran en diferentes estilos en la web. Por lo tanto,
los lenguajes de hojas de estilos existentes como DSSSL y FOSI no fueron adecuados.
CSS, por otro lado, permite al documento ser influido por múltiples hojas de estilo por Håkon Wium Lie, CTO de la
medio de los estilos en «cascada».13 compañía Opera Software y
cocreador del estándar CSS
A medida que HTML fue creciendo, llegó a abarcar una amplia variedad de capacidades
de diseño para satisfacer las demandas de los diseñadores web. Esta evolución dio al
diseñador mayor control sobre la apariencia del sitio, con el costo de un HTML más complejo. Variaciones en las
implementaciones de los navegadores web, como ViolaWWW y WorldWideWeb,14 hicieron más difícil la consistencia de la
apariencia del sitio web, y los usuarios tenían menos control sobre cómo era mostrado el contenido web. El navegador/editor
creado por Tim Berners-Lee tenía hojas de estilos que fueron introducidas dentro del programa. Las hojas de estilos, por lo tanto,
no eran enlazadas a los documentos en la web.15 Robert Cailliau, también del CERN, quería separar la estructura de la
presentación, de modo que diferentes hojas de estilo podrían describir diferentes presentaciones para impresión, pantallas y
editores.14

Mejorar las capacidades de la presentación en la web fue un tema de interés para muchos en las comunidades web, y 9 diferentes
lenguajes de hojas de estilos fueron propuestos en la lista de correo www-style.13 De esas nueve propuestas, dos influenciaron
profundamente en lo que sería CSS: Cascading HTML Style Sheets9 y Stream-based Style Sheet Proposal (SSP).12 16 Dos
navegadores fueron usados para pruebas para las propuestas iniciales; Lie trabajó con Yves Lafon para implementar CSS en el
navegador Arena creado por Dave Raggett.17 18 19 Bert Bos implementó su propia propuesta SSP en el navegador Argo.12
Desde entonces, Lie y Bos trabajaron juntos para desarrollar el estándar CSS. La 'H' se eliminó del nombre porque estas hojas de
estilo pueden ser aplicadas a otros lenguajes de marcado además de HTML.10

La propuesta de Lie fue presentada en la conferencia "Mosaic and the Web" (más tarde llamada WWW2) en Chicago, Illinois en
1994, y de nuevo con Bert Bos en 1995.10 En ese tiempo el W3C ya estaba siendo establecido, y mostraba interés en el
desarrollo de CSS. Organizó un taller para ese fin presidido por Steven Pemberton. Esto resultó en que W3C le dio más trabajo
sobre CSS a lo resultados del Comité de Revisión Editorial (ERB). Lie y Bos eran el equipo técnico principal en esta parte del
proyecto, con participantes adicionales como Thomas Reardon de Microsoft. En agosto de 1996 Netscape Communication
Corporation presentó una alternativa de lenguaje de hoja de estilos llamada JavaScript Style Sheets (JSSS).10 La especificación
nunca fue finalizada y quedó obsoleta.20 A finales de 1996, CSS estaba listo para ser oficial, y la recomendación CSS 1 fue
publicada en diciembre.
El desarrollo de HTML, CSS, y DOM había sido realizado en un solo grupo, el HTML Editorial Review Board (ERB). A
comienzos de 1997, el ERB fue dividido en tres grupos de trabajo: HTML Working Group, liderado por Dan Connolly del W3C;
DOM Working group, liderado por Lauren Wood de SoftQuad; y CSS Working Group, liderado por Chris Lilley del W3C.

El grupo de trabajo de CSS comenzó corrigiendo errores que no habían sido revisados en el CSS 1, resultando en la creación de
CSS 2, el 4 de noviembre de 1997. Fue publicado como una recomendación el 12 de mayo de 1998. CSS3, cuyo desarrollo inició
en 1998, sigue en desarrollo en 2014.

En 2005 el grupo de trabajo de CSS decidió mejorar los requerimentos de los estándares de forma más estricta. Esto significó que
los estándares ya publicados como CSS 2.1, CSS3 Selectors y CSS3 Text fueron retrocedidos del estado "Recomendaciones
candidatas" a "Borrador de trabajo".

Niveles
CSS se ha creado en varios niveles y perfiles. Cada nivel de CSS se construye sobre el anterior, generalmente añadiendo
funciones al nivel previo.

Los perfiles son, generalmente, parte de uno o varios niveles de CSS definidos para un dispositivo o interfaz particular.
Actualmente, pueden usarse perfiles para dispositivos móviles, impresoras o televisiones.

CSS1
La primera especificación oficial de CSS, recomendada por la W3C fue CSS1, publicada en diciembre de 1995,21 y abandonada
en abril de 2008.21

Algunas de las funcionalidades que ofrece son:

Propiedades de las fuentes, como tipo, tamaño, énfasis...


Color de texto, fondos, bordes u otros elementos.
Atributos del texto, como espaciado entre palabras, letras, líneas, etcétera.
Alineación de textos, imágenes, tablas u otros.
Propiedades de caja, como margen, borde, relleno o espaciado.
Propiedades de identificación y presentación de listas.

CSS2
La especificación CSS2 fue desarrollada por la W3C y publicada como recomendación en mayo de 1998, y abandonada en abril
de 2008.22

Como ampliación de CSS1, se ofrecieron, entre otras:

Las funcionalidades propias de las capas (<div>) como de posicionamiento relativo/absoluto/fijo, niveles (z-
index), etcétera.
El concepto de "media types".
Soporte para las hojas de estilo auditivas.
Texto bidireccional, sombras, etcétera.

CSS 2.1
La primera revisión de CSS2, usualmente conocida como "CSS 2.1", corrige algunos errores encontrados en CSS2, elimina
funcionalidades poco soportadas o inoperables en los navegadores y añade alguna nueva especificación.
De acuerdo al sistema de estandarización técnica de las especificaciones, CSS2.1 tuvo el estado de "candidato" (candidate
recommendation) durante varios años,23 pero la propuesta fue rechazada en junio de 2005. En junio de 2007 fue propuesta una
nueva versión candidata, y está actualizada en 2009, pero en diciembre de 2010 fue nuevamente rechazada.

En abril de 2011, CSS 2.1 volvió a ser propuesta como candidata,24 y después de ser revisada por el W3C Advisory Committee,
fue finalmente publicada como recomendación oficial el 7 de junio de 2011.25

CSS3.1
A diferencia de CSS2, que fue una única especificación que definía varias funcionalidades, CSS3.1 está dividida en varios
documentos separados, llamados "módulos".

Cada módulo añade nuevas funcionalidades a las definidas en CSS2, de manera que se preservan las anteriores para mantener la
compatibilidad.

Los trabajos en el CSS3.1, comenzaron a la vez que se publicó la recomendación oficial de CSS2, y los primeros borradores de
CSS3.1 fueron liberados en junio de 1999.26

Debido a la modularización del CSS3.1, diferentes módulos pueden encontrarse en diferentes estados de su desarrollo,27 de
forma que a fechas de noviembre de 2011, hay alrededor de cincuenta módulos publicados,26 tres de ellos se convirtieron en
recomendaciones oficiales de la W3C en 2011: "Selectores", "Espacios de nombres" y "Color".

Algunos módulos, como "Fondos y colores", "Consultas de medios" o "Diseños multicolumna" están en fase de "candidatos", y
considerados como razonablemente estables, a finales de 2011, y sus implementaciones en los diferentes navegadores son
señaladas con los prefijos del motor del mismo.28

Soporte por los navegadores web


Cada navegador web usa un motor de renderizado para renderizar páginas web, y el soporte de CSS no es exactamente igual en
ninguno de los motores de renderizado. Ya que los navegadores no aplican el CSS correctamente, muchas técnicas de
programación han sido desarrolladas para ser aplicadas por un navegador específico (comúnmente conocida esta práctica como
CSS hacks o CSS filters). La adopción de nuevas funcionalidades en CSS son obstaculizadas por la ausencia de soporte en los
navegadores mayoritarios. Por ejemplo, Internet Explorer ha sido lento para añadir el soporte para algunas características de
CSS3, lo cual ha dificultado la adopción de estas características, y dañado la reputación del navegador entre los
desarrolladores29 30 . Para asegurar una experiencia consistente para sus usuarios, los desarrolladores web en ocasiones prueban
sus sitios en múltiples navegadores, sistemas operativos y versiones de navegadores. Incrementando el tiempo de desarrollo y la
complejidad. Varias herramientas como BrowserStack han sido construidas para reducir la complejidad del mantenimiento de las
páginas web.

Además de las ya mencionadas herramientas de prueba, muchos sitios mantienen listas del soporte de navegadores para las
propiedades específicas de CSS, incluyendo CanIUse (http://caniuse.com/) y Mozilla Developer Network. Además, CSS3 definen
muchas queries, entre las cuales se provee la directiva @supports que permite a los desarrolladores especificar navegadores
con soporte para alguna función en específico directamente en el CSS31 . El código CSS que no es soportado por versiones
antiguas de un navegador, es provisto algunas veces por medio de polyfills en JavaScript. Estos métodos añaden complejidad a
los proyectos de desarrollo, y en consecuencia, las compañías frecuentemente definen una lista de las diferentes versiones de
navegadores que son soportadas y que no son soportadas.

Como los sitios web adoptan nuevas normas del código que son incompatibles con los navegadores más antiguos, a estos
navegadores se les quita el acceso a muchos de los recursos en la web (a veces intencionalmente). Muchos de los sitios más
populares en Internet no solo son visualmente feos en los navegadores antiguos debido a la mala compatibilidad con CSS, sino
que no funcionan en absoluto, en gran parte debido a la evolución de JavaScript y otras tecnologías web.32

Limitaciones
Algunas de las limitaciones conocidas de las capacidades actuales de CSS son:

Los selectores no pueden ascender


CSS actualmente no ofrece una manera de seleccionar al padre de un elemento que
satisfaga algún criterio33 . Los selectores CSS Nivel 4, que aún están en calidad de
Working Draft, ha propuesto un selector, pero solo como parte de otro selector34 . un
esquema de selectors más avanzado (como XPath) podría habilitar hojas de estilo más
sofisticadas. Las mayores razones del CSS Working Group para rechazar propuestas
para los selectores ascendentes son relacionadas al rendimiento del navegador y las
fallas en aumento del renderizado35 .

Las pseudoclases dinámicas no se pueden controlar


Las pseudoclases dinámicas (como :hover) no se pueden controlar o deshabilitar desde
el navegador, lo que las hace susceptibles de abuso por parte de los diseñadores de
banners o ventanas emergentes36 .

No se pueden nombrar estilos CSS


No existe manera alguna de nombrar a un estilo CSS, lo cual podría permitir scripts del
lado del cliente para referirse a la regla aún si el selector cambia.

No se pueden incluir estilos de una regla dentro de otra


Los estilos CSS en ocasiones deben de ser duplicados en varias reglas para alcanzar el
efecto deseado, causando mantenimiento adicional y requiriendo más pruebas. Algunas
características de CSS fueron propuestas para solventar esto, pero (en febrero de 2016)
no se ha implementado nada aún37 .

No se puede seleccionar texto específico sin alterar el marcado


Además del pseudo-elemento :first-letter, no se puede seleccionar un rango
específico de texto sin utilizar etiquetas como <span>.

Limitaciones resueltas
También hay limitaciones que ya han sido resueltas:

Alineado vertical
Mientras que el alineado horizontal es generalmente fácil de controlar, el alineado vertical
es frecuentemente no intuitivo, o de plano imposible. Simples tareas, como la de centrar
un elemento verticalmente o poniendo un pie de página abajo es muy difícil. El Flexible
Box Module mejora esta situación considerablemente y el alineado vertical es mucho
más simple y soportado en todos los navegadores actuales. Los navegadores más viejos
no tienen estas características (principalmente Internet Explorer 9 y abajo) y no son
soportados actualmente por sus fabricantes38 .

Ausencia de expresiones
No hay aun una opción estándar para especificar los valores de propiedades como una
expresión simple (como margin-left: 10% – 3em + 4px;). Esto puede ser útil en muchos
casos, como para calcular el número de columnas de una tabla. Internet Explorer en sus
versiones 5 a 7 soportan una extensión propietaria expression()39 , con una
funcionalidad similar. expression() ya no es soportada por Internet Explorer 8 en
adelante, excepto en los modos de compatibilidad. Esta decisión fue tomada para
mejorar "el cumplimiento de los estándares, el rendimiento del navegador, y por razones
de seguridad"39 . Como sea, una recomendación candidata calc() para superar esta
limitación ha sido publicada por el CSS WG y ahora está soportada por la mayoría de los
navegadores modernos40 .

Ausencia de la declaración de columnas de texto


Aunque ya es posible implementar esto en la especificación de CSS3 (usando el módulo
column-count), las capas con muchas columnas son difíciles de implementar con CSS
2.141 . Con CSS 2.1, el proceso se hace usando elementos flotantes, los cuales son
renderizados de diferente manera en los distintos navegadores, tamaños, formas de
pantalla y sistemas operativos. Ahora, todos los navegadores modernos soportan esta
característica de CSS3 de una forma u otra42 .

Ventajas
Por otro lado, algunas ventajas de utilizar CSS son:

Separación del contenido y la presentación


CSS facilita la publicación de contenido en múltiples formatos de presentación basado en
parámetros nominales. Estos incluyen preferencias explícitas del usuario, diferentes
navegadores web, el tipo de dispositivo usado para ver el contenido (una PC o un
smartphone), la localización geográfica u otras variables.

Consistencia del sitio


Cuando CSS es usado efectivamente, en términos de herencia y "cascading", una hoja
de estilos global puede ser usado para aplicar estilos a todo un sitio. Si más adelante
estos estilos deben de ser cambiados, los cambios pueden ser hechos solo con cambiar
las reglas en la hoja de estilos global. Antes de CSS, esto era mucho más difícil, caro y
más tardado.

Ancho de banda
Una hoja de estilos interna o externa, especifica el estilo para un conjunto de elementos
HTML seleccionados por clase, tipo, o herencia. Esto es más eficiente que repetir
información para cada ocurrencia del elemento. Una hoja de estilos externa usualmente
es guardada en la caché del navegador, y puede ser usada en múltiples páginas sin ser
cargada de nuevo, reduciendo la transferencia de datos a través de la red.

Formateo de página
Con un cambio simple en una sola línea, puede cambiarse la hoja de estilos para la
misma página. Esto trae ventajas para la accesibilidad, además de que posibilita adaptar
el sitio a diferentes dispositivos.

Accesibilidad
Sin CSS, los diseñadores web típicamente diseñaban sus páginas con elementos como
tablas que dificultaban la accesibilidad para otros usuarios, y que iban en perjuicio de
ciertos usos de los documentos, por parte de navegadores orientados a personas con
algunas limitaciones sensoriales.

Framework CSS
Los frameworks CSS son bibliotecas preparadas para permitir la simplificación, y el mayor cumplimiento de los estándares en el
diseño de páginas web usando el lenguaje CSS. Algunos de los frameworks CSS más comunes son Foundation, Blueprint,
Bootstrap, Cascade Framework y Materialize. Como en la programación de bibliotecas en los lenguajes de script, los frameworks
CSS son usualmente incorporados como hojas de estilo .css externas referenciadas con la etiqueta <link>. Esto provee una gran
cantidad de opciones listas para el diseño y la maquetación de una página web. Aunque muchos frameworks ya han sido
publicados, algunos diseñadores las usan mayormente para desarrollar prototipos rápidos, o por motivos de aprendizaje, y
prefieren construir a mano su propio código CSS43 .

Véase también
Em (tipografía)
HTML
Acid3
CSSTidy
CSS Zen Garden
Lista de lenguajes de estilos
Mejora progresiva

Referencias
eople/Bos/style.html). World Wide Web Consortium.
1. «W3C CSS2.1 specification for rule sets, declaration Consultado el 20 de junio de 2010.
blocks, and selectors» (http://www.w3.org/TR/CSS2
13. «Cascading Style Sheets» (https://web.archive.org/w
1/syndata.html#q10). World Wide Web Consortium.
eb/20141004215348/http://people.opera.com/howco
Consultado el 20 de junio de 2009. Especificaciones
me/2006/phd/). University of Oslo. Archivado desde
para el CSS2.1(en inglés)
el original (http://people.opera.com/howcome/2006/p
2. «CSS developer guide» (https://developer.mozilla.or hd/) el 4 de octubre de 2014. Consultado el 3 de
g/en-US/docs/Web/Guide/CSS). Mozilla Developer septiembre de 2014.
Network. Consultado el 21 de octubre de 2016.
14. Petrie, Charles; Cailliau, Robert (November 1997).
3. «Web-based Mobile Apps of the Future Using HTML «Interview Robert Cailliau on the WWW Proposal:
5, CSS and JavaScript» (http://www.htmlgoodies.co "How It Really Happened." » (https://web.archive.org/
m/beyond/article.php/3893911/Web-based-Mobile-Ap web/20110106041256/http://www.computer.org/porta
ps-of-the-Future-Using-HTML-5-CSS-and-JavaScript. l/web/computingnow/ic-cailliau). Institute of Electrical
htm). www.htmlgoodies.com. Consultado el 21 de and Electronics Engineers. Archivado desde el
octubre de 2016. original (http://www.computer.org/portal/web/computi
4. «HTML & CSS - W3C» (http://www.w3.org/standards/ ngnow/ic-cailliau) el 6 de enero de 2011. Consultado
webdesign/htmlcss#whatcss). www.w3.org. el 18 de agosto de 2010.
Consultado el 21 de octubre de 2016. 15. Bos, Håkon Wium Lie, Bert (1999). Cascading style
5. RFC 2318. IETF. (marzo de 1998) sheets: designing for the Web (2nd edición). Harlow,
6. «The cascade» (https://www.w3.org/TR/2016/WD-CS Essex, England: Addison-Wesley. ISBN 0-201-59625-3.
S22-20160412/cascade.html#cascade) (en inglés). 16. Bos, Bert (31 de marzo de 1995). «Stream-based
W3C. 12 de abril de 2016. Style sheet Proposal» (http://www.w3.org/People/Bo
7. «Inheritance» (https://www.w3.org/TR/2016/WD-CSS s/stylesheets.html). Consultado el 3 de septiembre
22-20160412/cascade.html#inheritance) (en inglés). de 2014.
W3C. 12 de abril de 2016. 17. Nielsen, Henrik Frystyk (7 de junio de 2002).
8. «Positioning schemes» (https://www.w3.org/TR/2016/ «Libwww Hackers» (http://www.w3.org/Library/Collab
WD-CSS22-20160412/visuren.html#positioning-sche orators.html). World Wide Web Consortium.
mee) (en inglés). W3C. 12 de abril de 2016. Consultado el 6 de junio de 2010.
9. Lie, Hakon W (10 de octubre de 1994). Cascading 18. «Yves Lafon» (http://www.w3.org/People/Lafon/).
HTML style sheets - a proposal (http://www.w3.org/P World Wide Web Consortium. Consultado el 17 de
eople/howcome/p/cascade.html). CERN. Consultado junio de 2010.
el 25 de mayo de 2014. 19. «The W3C Team: Technology and Society» (http://w
10. Lie, Håkon Wium; Bos, Bert (1999). Cascading Style ww.w3.org/People/domain?domain=Technology+and
Sheets, designing for the Web (http://www.w3.org/Sty +Society). World Wide Web Consortium. 18 de julio
le/LieBos2e/history/). Addison Wesley. ISBN 0-201- de 2008. Consultado el 22 de enero de 2011.
59625-3. Consultado el 23 de junio de 2010. 20. Lou Montulli; Brendan Eich; Scott Furman; Donna
11. «Cascading Style Sheets, level 1» (http://www.w3.or Converse; Troy Chevalier (22 de agosto de 1996).
g/TR/1999/REC-CSS1-19990111). World Wide Web «JavaScript-Based Style Sheets» (http://www.w3.org/
Consortium. Submission/1996/1/WD-jsss-960822). World Wide
Web Consortium. Consultado el 23 de junio de 2010.
12. Bos, Bert (14 de abril de 1995). «Simple style sheets
for SGML & HTML on the web» (http://www.w3.org/P 21. W3C: Especificación CSS1 (http://www.w3.org/TR/C
SS1) (en inglés)
22. «Especificación CSS2» (http://www.w3.org/TR/2008/ er-6-one-last-time/). Ars Technica. Consultado el 12
REC-CSS2-20080411/) (en inglés). W3C. 1998. de octubre de 2016.
23. CSS 2.1 fue lanzada como Candidata a 33. Molly Holzschlag (enero de 2012). «Seven Things
recomendación (http://www.w3.org/TR/2004/CR-CSS Still Missing from CSS» (http://www.creativebloq.co
21-20040225/) el 25 de febrero de 2004 (en inglés) m/css3/seven-things-still-missing-css-1126553). .net
24. W3C:CSS2.1 (http://www.w3.org/TR/2011/PR-CSS2- Magazine.
20110412/) (recomendación propuesta por la W3C) 34. «Selectors Level 4 – Determining the Subject of a
(en inglés) Selector»
25. La W3C publica el estándard CSS2.1 (http://www.w3. (http://www.w3.org/TR/selectors4/#subject). W3.org.
org/2011/05/css-pr.html.en.) (en inglés) Consultado el 13 de agosto de 2013.
26. Bos, Bert (18 de febrero de 2011). «Descriptions of 35. Snook, Jonathan (octubre de 2010). «Why we don't
all CSS specifications» (http://www.w3.org/Style/CS have a parent selector» (http://snook.ca/archives/htm
S/specs). World Wide Web Consortium. Consultado l_and_css/css-parent-selectors). snook.ca.
el 3 de marzo de 2011. Descripción de todas las 36. «Pure CSS Popups» (http://meyerweb.com/eric/css/e
especificaciones del CSS, por la W3C (en inglés) dge/popups/demo.html). meyerweb.com. Consultado
27. Bos, Bert (26 de febrero de 2011). «CSS current el 19 de noviembre de 2009.
work» (http://www.w3.org/Style/CSS/current-work). 37. Tab Atkins Jr. «CSS apply rule» (https://tabatkins.gith
World Wide Web Consortium. Consultado el 3 de ub.io/specs/css-apply-rule/). GitHub. Consultado el
marzo de 2011. Trabajos actuales en CSS (en 27 de febrero de 2016.
inglés) 38. «Internet Explorer End of Support» (https://www.micr
28. Etemad, Elika (12 de diciembre de 2010). osoft.com/en-us/WindowsForBusiness/End-of-IE-sup
«Cascading Style Sheets (CSS) Snapshot 2010» (htt port). Microsoft. Consultado el 27 de febrero de
p://www.w3.org/TR/css-2010/#css). World Wide Web 2016.
Consortium. Consultado el 3 de marzo de 2011. 39. «About Dynamic Properties» (http://msdn.microsoft.c
Definiciones del CSS (2010) (en inglés) om/en-us/library/ms537634.aspx).
29. Clemente Laboreo, Daniel. «Pop-up para usuarios de Msdn.microsoft.com. Consultado el 20 de junio de
IE» (http://www.danielclemente.com/navega/popup.ht 2009.
ml). http://www.danielclemente.com. Consultado el 40. «Can I use... Support tables for HTML5, CSS3, etc.»
12 de noviembre de 2017. (http://caniuse.com/calc). CanIUse.com. Consultado
30. «CSS3 Solutions for Internet Explorer – Smashing el 27 de febrero de 2016.
Magazine» (https://www.smashingmagazine.com/201 41. «CSS Multi-column Layout Module» (http://www.w3.o
0/04/css3-solutions-for-internet-explorer/). Smashing rg/TR/css3-multicol/). World Wide Web Consortium.
Magazine (en inglés estadounidense). 28 de abril de Consultado el 1 de mayo de 2011.
2010. Consultado el 12 de octubre de 2016. 42. «Can I use... Support tables for HTML5, CSS3, etc.»
31. «Using Feature Queries in CSS ★ Mozilla Hacks – (http://caniuse.com/columns). CanIUse.com.
the Web developer blog» (https://hacks.mozilla.org/2 Consultado el 27 de febrero de 2016.
016/08/using-feature-queries-in-css/). 43. Cederholm, Dan; Ethan Marcotte (2009).
hacks.mozilla.org. Consultado el 12 de octubre de Handcrafted CSS: More Bulletproof Web Design (http
2016. s://books.google.com/books?id=UgrUeIwsS60C&pg=
32. «Looking at the Web with Internet Explorer 6, one PA114). New Riders. p. 114. ISBN 978-0-321-64338-4.
last time» (https://arstechnica.com/information-techn Consultado el 19 de junio de 2010.
ology/2014/04/looking-at-the-web-with-internet-explor

Enlaces externos
«CSS Snapshot 2015» (https://drafts.csswg.org/css-2015/). W3C (en inglés). Consultado el 10 de diciembre de
2015. – Este documento reúne en un sólo documento todas las especificaciones que conforman el estado actual
de CSS en 2015.

«Cascading Style Sheets (CSS) Snapshot 2010» (http://www.w3.org/TR/CSS/). W3C (en inglés). Consultado el
23 de julio de 2014. – Incluye enlaces a las especificaciones.
Comparación de la presentación CSS en diferentes motores (Wikipedia en inglés)
[1] (http://www.w3schools.com/css/css3_intro.asp) CSS3 Introduction
CSS (http://dmoztools.net/Computers/Data_Formats/Style_Sheets/CSS/) en Open Directory Project.

Esta obra contiene una traducción parcial derivada de Css de Wikipedia en inglés, concretamente de esta
versión (https://en.wikipedia.org/wiki/Css?oldid=469635433), publicada por sus editores (https://en.wikipedia.org/
wiki/Css?action=history) bajo la Licencia de documentación libre de GNU y la Licencia Creative Commons
Atribución-CompartirIgual 3.0 Unported.

Obtenido de «https://es.wikipedia.org/w/index.php?title=Hoja_de_estilos_en_cascada&oldid=115714896»
Esta página se editó por última vez el 4 may 2019 a las 21:34.

El texto está disponible bajo la Licencia Creative Commons Atribución Compartir Igual 3.0; pueden aplicarse
cláusulas adicionales. Al usar este sitio, usted acepta nuestros términos de uso y nuestra política de privacidad.
Wikipedia® es una marca registrada de la Fundación Wikimedia, Inc., una organización sin ánimo de lucro.

Вам также может понравиться