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