CSS
CSS (siglas en inglés de Cascading Style Sheets; en español: «hojas de estilo en cascada») es un lenguaje informático especializado en definir y cohesionar la presentación de un documento escrito en un lenguaje de marcado como HTML o XML; por ello, puede ser aplicado a cualquier documento etiquetado en XHTML, SVG, XUL, RSS, etcétera.[2] Junto con el propio HTML y JavaScript, CSS está en la base de la tecnología usada por muchos sitios web para crear páginas visualmente atractivas, interfaces de usuario para aplicaciones web y GUIs para aplicaciones móviles.[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 fuentes.[4] Esta separación busca mejorar la accesibilidad del documento, proveer más flexibilidad y control en la especificación de características presentacionales, permitir que varios documentos HTML compartan un mismo estilo usando una sola hoja de estilos separada en un archivo La separación del formato y el contenido hace posible presentar el mismo documento marcado en diferentes estilos para diferentes métodos de renderizado, como en pantalla, en impresión, en voz (mediante un navegador de voz o un lector de pantalla), y dispositivos táctiles basados en el sistema Braille. También se puede mostrar una página web de manera diferente dependiendo del tamaño de la pantalla o tipo de dispositivo. Los lectores pueden especificar una hoja de estilos diferente, como una hoja de estilos CSS guardado en su computadora, para sobreescribir la hoja de estilos del diseñador. La especificación CSS describe un esquema prioritario para determinar qué reglas de estilo se aplican si más de una regla coincide para un elemento en particular. Estas reglas son aplicadas con un sistema llamado de cascada, de modo que las prioridades son calculadas y asignadas a las reglas, así que los resultados son predecibles. La especificación CSS es mantenida por el World Wide Web Consortium (W3C). El MIME type SintaxisCSS 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. SelectoresLos selectores declaran qué etiquetas se aplican a los estilos que coincidan con la etiqueta o atributo señalados en la regla. Los selectores pueden aplicarse a:
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 a 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 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, La tabla siguiente proporciona 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:
Bloque de declaracionesUn bloque de declaraciones consiste en una lista de declaraciones unidas. Cada declaración consiste en una propiedad, dos puntos ( 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. UsoAntes 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 ( Antes de CSS, los diseñadores que deseaban asignar características tipográficas, por ejemplo, a todos los elementos Por ejemplo, aplicando estilos mediante etiquetas presentacionales HTML, un elemento <h1><span style="color:blue;"> Capítulo 1. </span></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" type="text/css" />
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>
FuentesLos 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 sobrescritas, 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 sobrescribir solo el estilo de los encabezados rojos en itálica sin alterar otros atributos.
EspecificidadLa especificidad se refiere a los pesos relativos de varias reglas. Determina qué 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 ( Por lo tanto los siguientes selectores de reglas dan como resultado la especificidad indicada:
EjemploConsidera 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 HerenciaLa 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 solo 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 con 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 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. EjemploSe tiene la siguiente hoja de estilos: h1 {
color: pink;
}
Este es un elemento <h1>
Esto es para <em>ilustrar</em> la herencia
</h1>
Si no se asigna un color al elemento em {
color: gray;
}
Espacios en blancoLos 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. PosicionamientoCSS 2.1 define 3 esquemas de posicionamiento:
Propiedades de posicionamientoHay 4 posibles valores para la propiedad
Float y clearLa propiedad
HistoriaCSS 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 80, 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 medio de los estilos en «cascada».[13] 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 Sheets[9] 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. Las adiciones a CSS de allí en adelante, conocidas colectivamente como "CSS3", tomaron un aspecto modular, desarrollándose cada función de forma independiente. En 2005 el grupo de trabajo de CSS decidió mejorar los requerimientos 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". NivelesCSS 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. CSS1La 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:
CSS2La 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:
CSS 2.1La 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] CSS3A diferencia de CSS2, que fue una única especificación que definía varias funcionalidades, CSS3 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, comenzaron a la vez que se publicó la recomendación oficial de CSS2, y los primeros borradores de CSS3 fueron liberados en junio de 1999.[26] Debido a la modularización del CSS3, 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] CSS4No existe una especificación integrada de CSS4, ya que la especificación ha sido dividida en diversos módulos separados que manejan niveles de forma independiente. Módulos que edificaban sobre cosas del CSS Nivel 2 iniciaron en Nivel 3. Algunas de ellas han alcanzado el Nivel 4 o incluso están acercándose al Nivel 5. Otros módulos que definen funcionalidad completamente nueva, como Flexbox, han sido designados como Nivel 1 y algunos de ellos se aproximan al nivel 2. El CSS Working Group a veces publica "snapshots", que son una colección de módulos enteros y partes de otros borradores que son considerados suficientemente estables para ser implementados por desarrolladores de navegadores web. Hasta el momento, cinco de aquellos documentos de "mejores prácticas actuales" han sido publicados como Notas, en 2007, 2010, 2015, 2017, y 2018. Dado que estas especificaciones son entendidas para desarrolladores, ha habido una creciente demanda por documentos de referencia similares pero dirigidos a autores, lo cual presentaría el estado de las implementaciones interoperables mientras se documenta por sitios web como "Can I Use..." y los MDN Web Docs. Un grupo llamado el W3C Community Group ha sido establecido a inicios de 2020 a fin de discutir y definir dichos recursos. El tipo actual de versionado es también sujeto a debate, lo cual significa que el documento, una vez producido, podría no llamarse "CSS4". Soporte por los navegadores webCada navegador web utiliza un motor de renderizado para visualizar páginas web, y el soporte de CSS no es exactamente igual en todos los motores de renderizado. Dado que los navegadores no aplican el CSS de manera uniforme, se ha desarrollado muchas técnicas de programación específicas para un navegador en particular (comúnmente conocida como CSS hacks o CSS filters). La adopción de nuevas funcionalidades en CSS son obstaculizadas por la ausencia de soporte en los navegadores más populares. Por ejemplo, Internet Explorer ha sido lento para añadir soporte para algunas características de CSS3, lo que ha dificultado la adopción de estas características, y ha dañado la reputación del navegador entre los desarrolladores.[29][30] Para garantizar una experiencia consistente para sus usuarios, los desarrolladores web a menudo prueban sus sitios en múltiples navegadores, sistemas operativos y versiones de navegadores, lo que incrementa el tiempo de desarrollo y la complejidad. Se ha desarrollado varias herramientas, como BrowserStack, para reducir la complejidad en el mantenimiento de las páginas web. Además de las herramientas de prueba mencionadas, muchos sitios web mantienen listas del soporte de navegadores para propiedades específicas de CSS, incluyendo recursos como CanIUse y Mozilla Developer Network. Además, CSS3 define muchas consultas, entre las cuales se incluye la directiva Como los sitios web adoptan nuevas normas del código que son incompatibles con los navegadores más antiguos, a estos navegadores se les restringe el acceso a muchos de los recursos en la web, a veces de manera intencional. Muchos de los sitios más populares en Internet no solo tienen un aspecto visual deficiente en los navegadores antiguos a causa de la mala compatibilidad con CSS, sino que tampoco funcionan en absoluto, en gran parte debido a la evolución de JavaScript y otras tecnologías web.[32] LimitacionesAlgunas de las limitaciones conocidas de las capacidades actuales de CSS son:
Limitaciones resueltasTambién hay limitaciones que ya han sido resueltas:
VentajasPor otro lado, algunas ventajas de utilizar CSS son:
Frameworks de CSSLos frameworks de CSS son bibliotecas preparadas para simplificar y mejorar el cumplimiento de los estándares en el diseño de páginas web mediante el uso del lenguaje CSS. Algunos de los frameworks de CSS más comunes son Tailwind, Foundation, Blueprint, Bootstrap, Cascade Framework y Materialize. Como ocurre en la programación con bibliotecas en los lenguajes de script, los frameworks de CSS se suelen incorporar como hojas de estilo CSS externas referenciadas a través la etiqueta Véase también
Referencias
Enlaces externos
|