To me, one of the most interesting things about CSS is how it's constantly
changing and evolving.
As web designers, the ever-changing nature of CSS continues to give us new
features and capabilities that we can use to enhance our designs.
Of course, this also means that we need to keep an eye on CSS, monitor the
changes that are being made to it, and track how browsers are implementing those changes.
In this chapter, we're going to discuss how you can do all those things,
but before we get into how to track CSS specifications, I want to take a
moment to cover some of CSS's history. That's going to provide you with a
little bit of context.
In the very beginning, there were no style sheets--at least not for authors.
Each browser had its own internally defined style sheet that gave the browser
instructions on how to style page elements.
Eventually, the movement to allow authors to control the presentation of HTML
led to the publication of the CSS 1.0 specification in 1996.
This was quickly followed up by the CSS 2.0 specification, which was released as
a recommendation in 1998.
Now, these early CSS specifications were released at a very volatile time in the
development of web browsers.
You see, in the late 1990s, browser manufacturers were more interested in market
share than being standards compliant.
In fact, the movement towards supporting web standards was still very young.
At that time, browsers would introduce their own proprietary way of dealing with
presentation that didn't agree with the CSS specifications, or would even offer
uneven support for CSS.
Now, it didn't help matters that the CSS 2.0 specification continued to be
updated even after it was published.
Due to these and other factors, CSS had real problems in gaining traction among
web designers and browser manufacturers.
In fact, to this day, not a single browser fully implements the 2.0 specification.
Those issues prompted the W3C to start work on revising the 2.0 specification.
This revision, dubbed CSS 2.1 was issued as a candidate recommendation in 2004 and
is largely what people are talking about when they discuss CSS.
Support for web standards continued to grow during the development of CSS
2.1, and browser manufacturers finally began to get serious about
implementing the standard.
For the most part, modern browsers offer full implementation of the 2.1 standard.
You'll notice I said, "for the most part."
Because of uneven implementation, the W3C pulled the 2.1 specification back to
working draft status in 2005 to even out the bugs and make the standard a
little bit stricter.
It was returned to candidate recommendation in 2007 and upgraded to full
recommendation status in 2011.
Okay, so just to review, the 2.0 specification was released and never fully
implemented, and the 2.1 revision was released, pulled back to working draft, and
then re-released again over the course of about six years.
Now, saner minds might reason that the W3C should get one standard release and
implemented before moving onto the next, but that line of thinking ignores the
rapid evolution of the web.
During the course of the development of CSS, some very important changes have
occurred in the way that web sites are developed and consumed.
For example, the rise of online applications and mobile devices are just two
of the changes that the original CSS specifications just weren't designed to address.
Now, this is leading the W3C to take a very different and deliberate approach to
developing the next generation of style-sheet standards.
I'm guessing that you've at least heard of CSS3.
What you may not know, however, is that CSS3 isn't really a
single specification.
Although work on the CSS level 3 standard has been going on since at least 2001,
the days of a large singular standard document that defines CSS are over.
CSS 2.1 was the last all-encompassing CSS specification that we're going to see.
The capabilities, properties, and just sheer size of CSS have grown enormously
over the last decade.
Trying to get such an overwhelmingly large document through the development
and review process and then publish it as a recommendation is extremely
difficult and slow.
Because of this, the W3C has decided to modularize the CSS standard.
Now, what does that mean?
Well, essentially it means it's been split up into various parts.
CSS selectors, for example, are defined in their own standard, while backgrounds
and borders are defined in another.
This approach allows the working group to have much more flexibility over
the evolution of CSS.
Individual standards can be developed based on different priority levels
when needed, and it's much easier to edit or add modules as the needs of web content changes.
So in fact, there is no single CSS3 specification;
there are simply individual specifications, and some of them have that level 3
label that are based on, and meant to extend, the 2.1 core specification.
If you want to find out a little bit more behind the strategy of the W3C
regarding CSS, I recommend reading their Introduction to CSS3.
Although it was published in 2001, this document is a great job of explaining the
logic behind the move towards the modularization of CSS and gives you a list and
description of the initial CSS3 modules.
From this point on, all future additions to CSS will update the existing modules
or add new ones to the mix.
While this is a smart way to make sure the evolution of CSS responds to the web
community's needs, it can make it difficult to keep track of all of it.
In our next movie, we'll do that by discussing the current state of CSS3 and
showing you how you can keep up with the development of the different modules.