History.
CSS was first
proposed by Hakon
Wium Lie on October 10, 1994. At
the time, Lie was working with Tim
Berners-Lee at CERN. Several
other style sheet languages for the web were proposed around the same time, and
discussions on public mailing lists and inside W3C resulted in the first W3C CSS Recommendation (CSS1) being released in 1996. In particular, Bert Bos' proposal was influential; he became co-author of CSS1 and is
regarded as co-creator of CSS. Style sheets have existed in one form or another
since the beginnings of Standard Generalized Markup Language (SGML) in the 1980s, and CSS was developed to provide style
sheets for the web. One
requirement for a web style sheet language was for style sheets to come from
different sources on the web. Therefore, existing style sheet languages like DSSSL and FOSI were not suitable. CSS, on the other hand, allowed a
document's style to be influenced by multiple style sheets by way of
"cascading". As HTML grew, it came to encompass a wider variety of stylistic capabilities
to meet the demands of web
developers. This evolution gave the designer more
control over site appearance, at the cost of more complex HTML. Variations in web browser implementations, such as Viola WWW and World
Wide Web, made
consistent site appearance difficult, and users had less control over how web
content was displayed. The browser/editor developed by Tim Berners-Lee had
style sheets that were hard-coded into the program. The style sheets could
therefore not be linked to documents on the web. Robert Cailliau, also of CERN, wanted to separate the structure from the
presentation so that different style sheets could describe different
presentation for printing, screen-based presentations, and editors. Improving
web presentation capabilities was a topic of interest to many in the web
community and nine different style sheet languages were proposed on the
www-style mailing list. Of these
nine proposals, two were especially influential on what became CSS: Cascading
HTML Style Sheets and Stream-based
Style Sheet Proposal (SSP). Two
browsers served as testbeds for the initial proposals; Lie worked with Yves Lafon to implement CSS in Dave
Raggett's Arena browser. Bert Bos implemented his own SSP proposal in the Argo browser. Thereafter,
Lie and Bos worked together to develop the CSS standard (the 'H' was removed
from the name because these style sheets could also be applied to other markup
languages besides HTML). Lie's
proposal was presented at the "Mosaic and the Web" conference (later
called WWW2) in Chicago, Illinois in 1994, and again with Bert Bos in
1995. Around this time the W3C
was already being established, and took an interest in the development of CSS.
It organized a workshop toward that end chaired by Steven Pemberton. This resulted in W3C
adding work on CSS to the deliverables of the HTML editorial review board
(ERB). Lie and Bos were the primary technical staff on this aspect of the
project, with additional members, including Thomas Reardon of Microsoft, participating as well. In
August 1996 Netscape
Communication Corporation presented
an alternative style sheet language called JavaScript
Style Sheets (JSSS). The spec was never finished and is
deprecated. By the end of 1996,
CSS was ready to become official, and the CSS level 1 Recommendation was
published in December. Development of HTML, CSS,
and the DOM had all been taking place in one group, the HTML
Editorial Review Board (ERB). Early in 1997, the ERB was split into three working groups: HTML
Working group, chaired by Dan Connolly of W3C; DOM Working group, chaired by Lauren Wood of Soft Quad; and CSS
Working group, chaired by Chris Lilley of W3C. The CSS Working Group began
tackling issues that had not been addressed with CSS level 1, resulting in the
creation of CSS level 2 on November 4, 1997. It was published as a W3C
Recommendation on May 12, 1998. CSS level 3, which was started in 1998, is
still under development as of 2014. In 2005 the CSS Working Groups decided to
enforce the requirements for standards more strictly. This meant that already
published standards like CSS 2.1, CSS 3 Selectors and CSS 3 Text
were pulled back from Candidate Recommendation to Working Draft level.
Difficulty With Adoption.
The CSS 1
specification was completed in 1996. Microsoft's Internet Explorer 3 was released in that year, featuring some limited support
for CSS. But it was more than three years before any web browser achieved
near-full implementation of the specification. Internet Explorer 5.0 for the Macintosh, shipped in March 2000, was the first browser to have
full (better than 99 percent) CSS 1 support, surpassing Opera, which had been the leader since its introduction of CSS
support 15 months earlier. Other browsers followed soon afterwards, and many of
them additionally implemented parts of CSS 2. As of August 2010, no
(finished) browser had fully implemented CSS 2, with implementation levels
varying (see Comparison of
layout engines (CSS)). Even
though early browsers such as Internet
Explorer 3 and 4, and Netscape 4.x had support for CSS, it was typically
incomplete and had many bugs that prevented their implementations
from being usefully adopted. When later 'version 5' browsers began to offer a
fairly full implementation of CSS, they were still incorrect in certain areas
and were fraught with inconsistencies, bugs and other quirks. The proliferation
of such CSS-related inconsistencies and even the variation in feature support
has made it difficult for designers to achieve a consistent appearance across
browsers and platforms. Some
authors resorted to workarounds such as CSS hacks and filters. Problems with browsers' patchy adoption of CSS, along
with errata in the original specification, led the W3C to revise the CSS 2
standard into CSS 2.1, which moved nearer to a working snapshot of current
CSS support in HTML browsers. Some CSS 2 properties that no browser
successfully implemented were dropped, and in a few cases, defined behaviors
were changed to bring the standard into line with the predominant existing
implementations. CSS 2.1 became a Candidate Recommendation on February 25,
2004, but CSS 2.1 was pulled back to Working Draft status on June 13,
2005, and only returned to
Candidate Recommendation status on July 19, 2007. In the past, some web servers
were configured to serve all documents with the filename extension
.css
as mime type application/x-pointplus
rather
than text/css
. At the time, there was a software product on the market to
convert PowerPoint files into Compact Slide Show files using the .css
extension.
Variations.
CSS has various levels and
profiles. Each level of CSS builds upon the last, typically adding new features
and typically denoted as CSS 1, CSS 2, CSS 3, and CSS 4.
Profiles are typically a subset of one or more levels of CSS built for a
particular device or user interface. Currently there are profiles for mobile
devices, printers, and television sets. Profiles should not be confused with
media types, which were added in CSS 2.