- 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 gonna discuss how you can do
all those things, but before we get into how to track
CSS specifications, I wanna take a moment
to cover some of CSS's history that's gonna 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.
These early CSS specifications were released
at a very volatile time in the development of web browsers.
In the late 90s, 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.
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 continue 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.
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 rereleased again over the course
of about six years.
Saner minds might reason that the W3C should get
one standard release and implement it
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 websites 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.
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 global 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 gonna 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.
What does that mean?
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.
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 wanna 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
does 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.