<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Witslog Wiki &#187; CSS</title>
	<atom:link href="http://witslog.com/wiki/category/technical/css/feed" rel="self" type="application/rss+xml" />
	<link>http://witslog.com/wiki</link>
	<description>Technical Log</description>
	<lastBuildDate>Fri, 14 May 2010 06:17:11 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>CSS framework</title>
		<link>http://witslog.com/wiki/technical/css/css-framework</link>
		<comments>http://witslog.com/wiki/technical/css/css-framework#comments</comments>
		<pubDate>Sat, 06 Mar 2010 23:08:54 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[CSS]]></category>

		<guid isPermaLink="false">http://witslog.com/wiki/?p=32</guid>
		<description><![CDATA[A CSS framework, also known as a web design framework is a pre-prepared library that is meant to allow for easier, more standards-compliant styling of a webpage using the Cascading Style Sheets language. Just like programming and scripting language libraries, CSS frameworks (usually packaged as...]]></description>
			<content:encoded><![CDATA[<p>A CSS framework, also known as a web design framework is a pre-prepared library that is meant to allow for easier, more standards-compliant styling of a webpage using the Cascading Style Sheets language. Just like programming and scripting language libraries, CSS frameworks (usually packaged as external .css sheets inserted into the header) package a number of ready-made options for designing and outlaying a webpage.</p>
<h2>Advantages</h2>
<ul>
<li><a title="Tableless web design" href="http://en.wikipedia.org/wiki/Tableless_web_design">Tableless web design</a>.</li>
<li>Faster development.</li>
<li><a title="Cross-browser" href="http://en.wikipedia.org/wiki/Cross-browser">Cross-browser compatibility</a>.</li>
<li>Facilitate code generators and visual editors.</li>
</ul>
<h2>[<a title="Edit section: Criticism" href="http://en.wikipedia.org/w/index.php?title=CSS_framework&amp;action=edit&amp;section=2">edit</a>] Criticism</h2>
<ul>
<li>Lack of flexibility outside the limitations of the framework</li>
<li>Bloated source code</li>
<li>Additional <a title="Hypertext Transfer Protocol" href="http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_message">HTTP requests</a> for multiple  files</li>
<li>Lack of substantial additional features beyond what is already  available with CSS</li>
</ul>
<h2>[<a title="Edit section: See also" href="http://en.wikipedia.org/w/index.php?title=CSS_framework&amp;action=edit&amp;section=3">edit</a>] See also</h2>
<ul>
<li><a title="Tableless web design" href="http://en.wikipedia.org/wiki/Tableless_web_design">Tableless web design</a></li>
</ul>
<h2>[<a title="Edit section: CSS Frameworks" href="http://en.wikipedia.org/w/index.php?title=CSS_framework&amp;action=edit&amp;section=4">edit</a>] CSS Frameworks</h2>
<ul>
<li><a title="Blueprint (CSS framework)" href="http://en.wikipedia.org/wiki/Blueprint_%28CSS_framework%29">Blueprint (CSS framework)</a></li>
<li><a rel="nofollow" href="http://developer.yahoo.com/yui/grids">YUI Grids (CSS framework)</a></li>
<li><a rel="nofollow" href="http://www.yaml.de/en/">YAML (CSS framework)</a></li>
<li><a rel="nofollow" href="http://elasticss.com/">Elastic  (CSS framework)</a></li>
<li><a rel="nofollow" href="http://960.gs/">960  Grid System</a></li>
<li><a rel="nofollow" href="http://code.google.com/p/emastic/">Emastic</a></li>
<li><a rel="nofollow" href="http://www.wedoui.com/">snowdust (CSS framework)</a></li>
<li><a rel="nofollow" href="http://wiki.github.com/anthonyshort/csscaffold">CSScaffold (CSS framework for PHP)</a></li>
<li><a rel="nofollow" href="http://wiki.github.com/chriseppstein/compass">compass</a> (CSS framework based on  <a title="Sass (stylesheet language)" href="http://en.wikipedia.org/wiki/Sass_%28stylesheet_language%29">Sass</a>)</li>
<li><a rel="nofollow" href="http://baselinecss.com/">Baseline</a> (HTML5 ready CSS framework)</li>
<li><a rel="nofollow" href="http://code.google.com/p/the-golden-grid/">The Golden Grid (CSS framework)</a></li>
<li><a rel="nofollow" href="http://code.google.com/p/floatz/">floatz (CSS framework)</a></li>
<li><a rel="nofollow" href="http://www.ez-css.org/">ez-css (lightweight CSS framework)</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://witslog.com/wiki/technical/css/css-framework/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CSSTidy</title>
		<link>http://witslog.com/wiki/technical/css/csstidy</link>
		<comments>http://witslog.com/wiki/technical/css/csstidy#comments</comments>
		<pubDate>Sat, 06 Mar 2010 23:08:03 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[CSS]]></category>

		<guid isPermaLink="false">http://witslog.com/wiki/?p=30</guid>
		<description><![CDATA[CSSTidy is an open source Cascading Style Sheets parser and optimiser written by Florian Schmitz. C++ and PHP versions are available. The name derives from HTML Tidy, since CSSTidy is supposed to be its counterpart for CSS. Currently CSSTidy is able to fix some common...]]></description>
			<content:encoded><![CDATA[<p>CSSTidy is an open source Cascading Style Sheets parser and optimiser written by Florian Schmitz. C++ and PHP versions are available. The name derives from HTML Tidy, since CSSTidy is supposed to be its counterpart for CSS. Currently CSSTidy is able to fix some common errors (like missing units or semicolons), reformat and compress CSS code.</p>
<p>The current version of CSSTidy is 1.3. This version was noted in the changelog as the last version — the project was abandoned and the author is seeking a new maintainer for the project.</p>
]]></content:encoded>
			<wfw:commentRss>http://witslog.com/wiki/technical/css/csstidy/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CSS</title>
		<link>http://witslog.com/wiki/technical/css/css</link>
		<comments>http://witslog.com/wiki/technical/css/css#comments</comments>
		<pubDate>Sat, 06 Mar 2010 23:07:01 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[CSS]]></category>

		<guid isPermaLink="false">http://witslog.com/wiki/?p=27</guid>
		<description><![CDATA[Cascading Style Sheets (CSS) is a style sheet language used to describe the presentation semantics (that is, the look and formatting) of a document written in a markup language. Its most common application is to style web pages  written in HTML  and XHTML,...]]></description>
			<content:encoded><![CDATA[<p>Cascading Style Sheets (CSS) is a style sheet language used to describe the presentation semantics (that is, the look and formatting) of a document written in a markup language. Its most common application is to style web pages  written in HTML  and XHTML, but the language can be applied to any kind of XML document, including SVG and XUL.</p>
<p>CSS is designed primarily to enable the separation of document content (written in HTML or a similar markup language) from document presentation, including elements such as the layout, colors, and fonts. This separation can improve content accessibility, provide more flexibility and control in the specification of presentation characteristics, enable multiple pages to share formatting, and reduce complexity and repetition in the structural content (such as by allowing for tableless web design). CSS can also allow the same markup page to be presented in different styles for different rendering methods, such as on-screen, in print, by voice (when read out by a speech-based browser or screen reader) and on Braille-based, tactile devices. While the author of a document typically links that document to a CSS style sheet, readers can use a different style sheet, perhaps one on their own computer, to override the one the author has specified.</p>
<p>CSS specifies a priority scheme to determine which style rules apply if more than one rule matches against a particular element. In this so-called cascade, priorities or weights are calculated and assigned to rules, so that the results are predictable.</p>
<p>The CSS specifications are maintained by the World Wide Web Consortium (W3C). Internet media type (MIME type) text/css is registered for use with CSS by RFC 2318</p>
<h2>Syntax</h2>
<p>CSS has a simple <a title="Syntax" href="http://en.wikipedia.org/wiki/Syntax">syntax</a> and uses a number of English keywords to  specify the names of various style properties.</p>
<p>A style sheet consists of a list of <em>rules</em>. Each rule or  rule-set consists of one or more <em>selectors</em> and a <em>declaration  block</em>. A declaration-block consists of a list of <em>declarations</em> in braces. Each declaration itself consists of a <em>property</em>, a  colon (<code>:</code>), a <em>value</em>, then a semi-colon (<code>;</code>).<sup id="cite_ref-0"><a href="http://en.wikipedia.org/wiki/Css#cite_note-0">[1]</a></sup></p>
<p>In CSS, <em>selectors</em> are used to declare which of the markup  elements a style applies to, a kind of match expression. Selectors may  apply to all elements of a specific type, or only those elements which  match a certain attribute; elements may be matched depending on how they  are placed relative to each other in the markup code, or on how they  are nested within the <a title="Document object model" href="http://en.wikipedia.org/wiki/Document_object_model">document object model</a>.</p>
<p><em>Pseudo-classes</em> are another form of specification used in CSS  to identify markup elements, and in some cases, specific user actions to  which a particular declaration block applies. An often-used example is  the <code>:hover</code> pseudo-class that applies a style only when the  user &#8216;points to&#8217; the visible element, usually by holding the mouse  cursor over it. It is appended to a selector as in <code>a:hover</code> or <code>#elementid:hover</code>. Other pseudo-classes and <em>pseudo-elements</em> are, for example, <code>:first-line</code>, <code>:visited</code> or <code>:before</code>.  A special pseudo-class is <code>:lang(c)</code>, &#8220;c&#8221;.</p>
<p>A <em>pseudo-class</em> selects entire elements, such as <code>:link</code> or <code>:visited</code>, whereas a <em>pseudo-element</em> makes a  selection that may consist of partial elements, such as <code>:first-line</code> or <code>:first-letter</code>.</p>
<p>Selectors may be combined in other ways too, especially in CSS 2.1,  to achieve greater specificity and flexibility.<sup id="cite_ref-1"><a href="http://en.wikipedia.org/wiki/Css#cite_note-1">[2]</a></sup></p>
<p>Here is an example summing up the rules above:</p>
<div dir="ltr">
<div>
<pre>selector [, selector2, ...][:pseudo-class] {
  property: value;
 [property2: value2;
  ...]
}
/* comment */
</pre>
</div>
</div>
<h3>Use</h3>
<p>Prior to CSS, nearly all of the presentational attributes of HTML  documents were contained within the HTML markup; all font colors,  background styles, element alignments, borders and sizes had to be  explicitly described, often repeatedly, within the HTML. CSS allows  authors to move much of that information to a separate style sheet  resulting in considerably simpler HTML markup.</p>
<p><a title="Heading" href="http://en.wikipedia.org/wiki/Heading">Headings</a> (<code>h1</code> elements), sub-headings (<code>h2</code>),  sub-sub-headings (<code>h3</code>), etc., are defined structurally using  HTML. In print and on the screen, choice of <a title="Typeface" href="http://en.wikipedia.org/wiki/Typeface">font</a>, <a title="Point  (typography)" href="http://en.wikipedia.org/wiki/Point_%28typography%29">size</a>, <a title="Color" href="http://en.wikipedia.org/wiki/Color">color</a> and <a title="Emphasis (typography)" href="http://en.wikipedia.org/wiki/Emphasis_%28typography%29">emphasis</a> for these elements is <em>presentational</em>.</p>
<p>Prior to CSS, document authors who wanted to assign such <a title="Typography" href="http://en.wikipedia.org/wiki/Typography">typographic</a> characteristics to, say, all <code>h2</code> headings had to use the  HTML <code>font</code> and other presentational elements for each  occurrence of that heading type. The additional presentational markup in  the HTML made documents more complex, and generally more difficult to  maintain. In CSS, presentation is separated from structure. In print,  CSS can define color, font, text alignment, size, borders, spacing,  layout and many other typographic characteristics. It can do so  independently for on-screen and printed views. CSS also defines  non-visual styles such as the speed and emphasis with which text is read  out by aural text readers. The <a title="W3C" href="http://en.wikipedia.org/wiki/W3C">W3C</a> now considers the advantages of CSS for defining all aspects of the  presentation of HTML pages to be superior to other methods. It has  therefore <a title="Deprecation" href="http://en.wikipedia.org/wiki/Deprecation">deprecated</a> the use of all the original  presentational HTML markup.</p>
<h3>Sources</h3>
<p>CSS information can be provided by various sources. CSS style  information can be either attached as a separate document or embedded in  the HTML document. Multiple style sheets can be imported. Different  styles can be applied depending on the output device being used; for  example, the screen version can be quite different from the printed  version, so that authors can tailor the presentation appropriately for  each medium.</p>
<p>Priority scheme for CSS sources (from highest to lowest priority):</p>
<ul>
<li>Author styles (style information provided by the web page author),  in the form of
<ul>
<li>inline styles, inside the HTML document, style information on a  single element, specified using the &#8220;style&#8221; attribute.</li>
<li>embedded style, blocks of CSS information inside the HTML document  itself</li>
<li>external style sheets, i.e. a separate CSS-file referenced from the  document</li>
</ul>
</li>
<li>User style
<ul>
<li>a local CSS-file specified by the user using options in the web  browser, and acting as an override, to be applied to all documents.</li>
</ul>
</li>
<li><a title="User agent" href="http://en.wikipedia.org/wiki/User_agent">User  agent</a> style
<ul>
<li>the default style sheet applied by the user agent, e.g. the  browser&#8217;s default presentation of elements.</li>
</ul>
</li>
</ul>
<p>The style sheet with the highest priority gets used to display the  content. Declarations that are not set in the highest priority source,  will get passed on by a source of lower priority such as the user agent  style. This process is called <em>cascading</em>.</p>
<p>One of the goals of CSS is also to allow <em>users</em> a greater  degree of control over presentation; those who find the red italic  headings difficult to read may apply other style sheets to the document.  Depending on their browser and the web site, a user may choose from  various style sheets provided by the designers, may remove all added  style and view the site using his or her browser&#8217;s default styling or  may perhaps override just the red italic heading style without altering  other attributes.</p>
<p>File <tt>highlightheaders.css</tt> containing:</p>
<div dir="ltr">
<div>
<pre>h1 { color: white; background-color: orange !important; }
h2 { color: white; background-color: green !important; }
</pre>
</div>
</div>
<p>Such a file is stored locally and is applicable if that has been  specified in the browser options. &#8220;!important&#8221; means that it prevails  over the author specifications.</p>
<h2>History</h2>
<p>Style sheets have existed in one form or another since the beginnings  of <a title="SGML" href="http://en.wikipedia.org/wiki/SGML">SGML</a> in the 1970s. Cascading Style Sheets were  developed as a means for creating a consistent approach to providing  style information for web documents.</p>
<p>As <a title="HTML" href="http://en.wikipedia.org/wiki/HTML">HTML</a> grew, it came to encompass a wider variety of stylistic capabilities to  meet the demands of <a title="Web  development" href="http://en.wikipedia.org/wiki/Web_development">web developers</a>. This evolution gave the designer more  control over site appearance but at the cost of HTML becoming more  complex to write and maintain. Variations in <a title="Web browser" href="http://en.wikipedia.org/wiki/Web_browser">web  browser</a> implementations made consistent site appearance difficult,  and users had less control over how web content was displayed.</p>
<p>To improve the capabilities of web presentation, nine different style  sheet languages were proposed to the <a title="W3C" href="http://en.wikipedia.org/wiki/W3C">W3C</a>&#8217;s  www-style mailing list. Of the nine proposals, two were chosen as the  foundation for what became CSS: <a title="Cascading HTML Style Sheets (page does not exist)" href="http://en.wikipedia.org/w/index.php?title=Cascading_HTML_Style_Sheets&amp;action=edit&amp;redlink=1">Cascading  HTML Style Sheets</a> (CHSS) and <a title="Stream-based Style Sheet Proposal (page does not  exist)" href="http://en.wikipedia.org/w/index.php?title=Stream-based_Style_Sheet_Proposal&amp;action=edit&amp;redlink=1">Stream-based Style Sheet Proposal</a> (SSP). First, <a title="Håkon  Wium Lie" href="http://en.wikipedia.org/wiki/H%C3%A5kon_Wium_Lie">Håkon Wium Lie</a> proposed Cascading HTML Style Sheets (CHSS)  in October 1994, a language which has some resemblance to today&#8217;s CSS. <a title="Bert Bos" href="http://en.wikipedia.org/wiki/Bert_Bos">Bert Bos</a> was working on a browser called <a title="Argo  (web browser)" href="http://en.wikipedia.org/wiki/Argo_%28web_browser%29">Argo</a> which used its own style sheet language,  Stream-based Style Sheet Proposal (SSP). Lie and Bos worked together to  develop the CSS standard (the &#8216;H&#8217; was removed from the name because  these style sheets could be applied to other markup languages besides  HTML).</p>
<p>Unlike existing style languages like <a title="Document Style Semantics and Specification Language" href="http://en.wikipedia.org/wiki/Document_Style_Semantics_and_Specification_Language">DSSSL</a> and <a title="FOSI" href="http://en.wikipedia.org/wiki/FOSI">FOSI</a>,  CSS allowed a document&#8217;s style to be influenced by multiple style  sheets. One style sheet could <a title="Inheritance (computer science)" href="http://en.wikipedia.org/wiki/Inheritance_%28computer_science%29">inherit</a> or &#8220;cascade&#8221; from another, permitting a mixture of stylistic preferences  controlled equally by the site designer and user.</p>
<p>Håkon&#8217;s proposal was presented at the &#8220;Mosaic and the Web&#8221; conference  in <a title="Chicago, Illinois" href="http://en.wikipedia.org/wiki/Chicago,_Illinois">Chicago, Illinois</a> in  1994, and again with Bert Bos in 1995. Around this time, the <a title="World Wide Web Consortium" href="http://en.wikipedia.org/wiki/World_Wide_Web_Consortium">World Wide Web Consortium</a> was  being established; the W3C took an interest in the development of CSS,  and it organized a workshop toward that end chaired by <a title="Steven  Pemberton" href="http://en.wikipedia.org/wiki/Steven_Pemberton">Steven Pemberton</a>. This resulted in W3C adding work on CSS  to the deliverables of the HTML editorial review board (ERB). Håkon and  Bert were the primary technical staff on this aspect of the project,  with additional members, including Thomas Reardon of <a title="Microsoft" href="http://en.wikipedia.org/wiki/Microsoft">Microsoft</a>,  participating as well. By the end of 1996, CSS was ready to become  official, and the CSS level 1 Recommendation was published in December.</p>
<p>Development of HTML, CSS, and the <a title="Document Object Model" href="http://en.wikipedia.org/wiki/Document_Object_Model">DOM</a> had all been taking place in one  group, the HTML Editorial Review Board (ERB). Early in 1997, the ERB was  split into three <a title="Working group" href="http://en.wikipedia.org/wiki/Working_group">working groups</a>: HTML Working group, chaired by  <a title="Dan  Connolly" href="http://en.wikipedia.org/wiki/Dan_Connolly">Dan Connolly</a> of W3C; DOM Working group, chaired by Lauren  Wood of <a title="SoftQuad" href="http://en.wikipedia.org/wiki/SoftQuad">SoftQuad</a>; and CSS Working group, chaired by <a title="Chris  Lilley (W3C)" href="http://en.wikipedia.org/wiki/Chris_Lilley_%28W3C%29">Chris Lilley</a> of W3C.</p>
<p>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 2009.</p>
<p>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.</p>
<h3>Difficulty with  adoption</h3>
<p>Although the CSS1 specification was completed in 1996 and Microsoft&#8217;s  <a title="Internet Explorer 3" href="http://en.wikipedia.org/wiki/Internet_Explorer_3">Internet Explorer 3</a> was released in that  year featuring some limited support for CSS, it would be more than  three years before any web browser achieved near-full implementation of  the specification. <a title="Internet  Explorer 5" href="http://en.wikipedia.org/wiki/Internet_Explorer_5">Internet Explorer 5.0</a> for the <a title="Apple  Macintosh" href="http://en.wikipedia.org/wiki/Apple_Macintosh">Macintosh</a>, shipped in March 2000, was  the first browser to have full (better than 99 percent) CSS1 support<sup title="This claim needs references to reliable  sources from June 2008">[<em><a title="Wikipedia:Citation needed" href="http://en.wikipedia.org/wiki/Wikipedia:Citation_needed">citation needed</a></em>]</sup>,  surpassing <a title="Opera  (web browser)" href="http://en.wikipedia.org/wiki/Opera_%28web_browser%29">Opera</a>, 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  CSS2. As of July 2008<sup><a rel="nofollow" href="http://en.wikipedia.org/w/index.php?title=Cascading_Style_Sheets&amp;action=edit">[update]</a></sup>, no (finished)  browser has fully implemented CSS2, with implementation levels varying  (see <a title="Comparison of layout engines (CSS)" href="http://en.wikipedia.org/wiki/Comparison_of_layout_engines_%28CSS%29">Comparison  of layout engines (CSS)</a>).</p>
<p>Even though early browsers such as <a title="Internet  Explorer 3" href="http://en.wikipedia.org/wiki/Internet_Explorer_3">Internet Explorer 3</a> and <a title="Internet  Explorer 4" href="http://en.wikipedia.org/wiki/Internet_Explorer_4">4</a>, and <a title="Netscape  Navigator" href="http://en.wikipedia.org/wiki/Netscape_Navigator">Netscape 4.x</a> had support for CSS, it was typically  incomplete and afflicted with serious <a title="Software bug" href="http://en.wikipedia.org/wiki/Software_bug">bugs</a>.  This was a serious obstacle for the adoption of CSS.</p>
<p>When later &#8216;version 5&#8242; 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 platforms. Some authors commonly resort to  using some <a title="Workaround" href="http://en.wikipedia.org/wiki/Workaround">workarounds</a> such as CSS hacks and <a title="CSS filter" href="http://en.wikipedia.org/wiki/CSS_filter">CSS  filters</a> in order to obtain consistent results across web browsers  and <a title="System  platform" href="http://en.wikipedia.org/wiki/System_platform">platforms</a>.</p>
<p>Problems with browsers&#8217; patchy adoption of CSS along with errata in  the original specification led the W3C to revise the CSS2 standard into  CSS2.1, which may be regarded as something nearer to a working snapshot  of current CSS support in HTML browsers. Some CSS2 properties which no  browser had successfully implemented were dropped, and in a few cases,  defined behaviours were changed to bring the standard into line with the  predominant existing implementations. CSS2.1 became a Candidate  Recommendation on February 25, 2004, but CSS2.1 was pulled back to  Working Draft status on June 13, 2005,<sup id="cite_ref-2"><a href="http://en.wikipedia.org/wiki/Css#cite_note-2">[3]</a></sup> and only returned to Candidate Recommendation status on July 19, 2007.<sup id="cite_ref-3"><a href="http://en.wikipedia.org/wiki/Css#cite_note-3">[4]</a></sup></p>
<p>In the past, some web servers were configured to serve all documents  with the filename extension <code>.css</code> as mime type <code>application/x-pointplus</code> rather than <code>text/css</code>. At the time, the Net-Scene company  was selling PointPlus Maker to convert <a title="Microsoft PowerPoint" href="http://en.wikipedia.org/wiki/Microsoft_PowerPoint">PowerPoint</a> files into Compact Slide  Show files (using a <code>.css</code> extension).<sup title="This claim needs references to reliable  sources from July 2008">[<em><a title="Wikipedia:Citation needed" href="http://en.wikipedia.org/wiki/Wikipedia:Citation_needed">citation needed</a></em>]</sup></p>
<h3>Variations</h3>
<p>CSS has various levels and profiles. Each level of CSS builds upon  the last, typically adding new features and typically denoted as CSS1,  CSS2, and CSS3. 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 CSS2.</p>
<h4>CSS 1</h4>
<p>The first CSS specification to become an official W3C Recommendation  is CSS level 1, published in December 1996.<sup id="cite_ref-4"><a href="http://en.wikipedia.org/wiki/Css#cite_note-4">[5]</a></sup> Among its capabilities are support for:</p>
<ul>
<li><a title="Typeface" href="http://en.wikipedia.org/wiki/Typeface">Font</a> properties such as typeface and emphasis</li>
<li>Color of text, backgrounds, and other elements</li>
<li>Text attributes such as spacing between words, letters, and lines of  text</li>
<li><a title="Alignment (typesetting)" href="http://en.wikipedia.org/wiki/Alignment_%28typesetting%29">Alignment</a> of  text, images, <a title="Table (HTML)" href="http://en.wikipedia.org/wiki/Table_%28HTML%29">tables</a> and other elements</li>
<li>Margin, border, padding, and positioning for most elements</li>
<li>Unique identification and generic classification of groups of  attributes</li>
</ul>
<p>The W3C maintains the CSS1 Recommendation.<sup id="cite_ref-5"><a href="http://en.wikipedia.org/wiki/Css#cite_note-5">[6]</a></sup></p>
<h4>CSS 2</h4>
<p><strong>CSS level 2</strong> was developed by the W3C and published as a  Recommendation in May 1998. A superset of CSS1, CSS2 includes a number  of new capabilities like absolute, relative, and fixed positioning of  elements and <a title="Z-index" href="http://en.wikipedia.org/wiki/Z-index">z-index</a>, the concept of media types, support for  aural style sheets and bidirectional text, and new font properties such  as shadows. The W3C maintains the CSS2 Recommendation.<sup id="cite_ref-6"><a href="http://en.wikipedia.org/wiki/Css#cite_note-6">[7]</a></sup></p>
<p>CSS level 2 revision 1 or CSS 2.1 fixes errors in CSS2, removes  poorly-supported features and adds already-implemented browser  extensions to the specification. While it was a <a rel="nofollow" href="http://www.w3.org/TR/CSS21/">Candidate  Recommendation</a> for several months, on June 15, 2005 it was reverted  to a working draft for further review.<sup id="cite_ref-7"><a href="http://en.wikipedia.org/wiki/Css#cite_note-7">[8]</a></sup> It was returned to Candidate Recommendation status on 19 July 2007.</p>
<h4>CSS 3</h4>
<p>CSS level 3 is currently under development.<sup id="cite_ref-8"><a href="http://en.wikipedia.org/wiki/Css#cite_note-8">[9]</a></sup> The W3C maintains a <a rel="nofollow" href="http://www.w3.org/Style/CSS/current-work#table">CSS3 progress report</a>. CSS3 is modularized and  will consist of several separate recommendations. The W3C CSS3 Roadmap  provides a summary and introduction.<sup id="cite_ref-9"><a href="http://en.wikipedia.org/wiki/Css#cite_note-9">[10]</a></sup></p>
<h2>Browser support</h2>
<div>Further information: <a title="Comparison of layout engines (Cascading Style Sheets)" href="http://en.wikipedia.org/wiki/Comparison_of_layout_engines_%28Cascading_Style_Sheets%29">Comparison  of layout engines (Cascading Style Sheets)</a></div>
<p>Because not all browsers comply identically with CSS code, a coding  technique known as a <a title="CSS filter" href="http://en.wikipedia.org/wiki/CSS_filter">CSS filter</a> can be used to show or hide parts of  the CSS to different browsers, either by exploiting CSS-<a title="Parsing" href="http://en.wikipedia.org/wiki/Parsing">handling</a> quirks or bugs in the browser, or by taking advantage of lack of  support for parts of the CSS specifications.<sup id="cite_ref-10"><a href="http://en.wikipedia.org/wiki/Css#cite_note-10">[11]</a></sup> Using CSS filters, some designers have gone as far as delivering  entirely different CSS to certain browsers in order to ensure that  designs are rendered as expected. Because very early web browsers were  either completely incapable of handling CSS, or render CSS very poorly,  designers today often routinely use CSS filters that completely prevent  these browsers from accessing any of the CSS. <a title="Internet  Explorer" href="http://en.wikipedia.org/wiki/Internet_Explorer">Internet Explorer</a> support for CSS began with <a title="Internet  Explorer 3" href="http://en.wikipedia.org/wiki/Internet_Explorer_3">IE 3.0</a> and increased progressively with each version. By  2008, the first Beta of <a title="Internet  Explorer 8" href="http://en.wikipedia.org/wiki/Internet_Explorer_8">Internet Explorer 8</a> offered support for CSS 2.1 in its  best web standards mode.</p>
<p>An example of a well-known CSS browser bug is the <a title="Internet Explorer box model bug" href="http://en.wikipedia.org/wiki/Internet_Explorer_box_model_bug">Internet Explorer box model bug</a>,  where box widths are interpreted incorrectly in several versions of the  browser, resulting in blocks which are too narrow when viewed in  Internet Explorer, but correct in standards-compliant browsers. The bug  can be avoided in <a title="Internet  Explorer 6" href="http://en.wikipedia.org/wiki/Internet_Explorer_6">Internet Explorer 6</a> by using the correct <a title="Doctype" href="http://en.wikipedia.org/wiki/Doctype">doctype</a> in (X)HTML documents. CSS hacks and <a title="CSS filter" href="http://en.wikipedia.org/wiki/CSS_filter">CSS  filters</a> are used to compensate for bugs such as this, just one of  hundreds of CSS bugs that have been documented in various versions of <a title="Netscape (web browser)" href="http://en.wikipedia.org/wiki/Netscape_%28web_browser%29">Netscape</a>, <a title="Mozilla  Firefox" href="http://en.wikipedia.org/wiki/Mozilla_Firefox">Mozilla Firefox</a>, <a title="Opera  (web browser)" href="http://en.wikipedia.org/wiki/Opera_%28web_browser%29">Opera</a>, and Internet Explorer (including <a title="Internet  Explorer 7" href="http://en.wikipedia.org/wiki/Internet_Explorer_7">Internet Explorer 7</a>).<sup id="cite_ref-11"><a href="http://en.wikipedia.org/wiki/Css#cite_note-11">[12]</a></sup><sup id="cite_ref-12"><a href="http://en.wikipedia.org/wiki/Css#cite_note-12">[13]</a></sup></p>
<p>Even when the availability of CSS-capable browsers made CSS a viable  technology, the adoption of CSS was still held back by designers&#8217;  struggles with browsers&#8217; incorrect CSS implementation and patchy CSS  support. Even today, these problems continue to make the business of CSS  design more complex and costly than it was intended to be, and  cross-browser testing remains a necessity. Other reasons for continuing  non-adoption of CSS are: its perceived complexity, authors&#8217; lack of  familiarity with CSS syntax and required techniques, poor support from  authoring tools, the risks posed by inconsistency between browsers and  the increased costs of testing.</p>
<p>Currently there is strong competition between <a title="Mozilla" href="http://en.wikipedia.org/wiki/Mozilla">Mozilla</a>&#8217;s  <a title="Gecko (layout engine)" href="http://en.wikipedia.org/wiki/Gecko_%28layout_engine%29">Gecko</a> layout engine used in <a title="Firefox" href="http://en.wikipedia.org/wiki/Firefox">Firefox</a>, the <a title="WebKit" href="http://en.wikipedia.org/wiki/WebKit">WebKit</a> layout engine used in <a title="Apple Inc." href="http://en.wikipedia.org/wiki/Apple_Inc.">Apple</a> <a title="Safari (web browser)" href="http://en.wikipedia.org/wiki/Safari_%28web_browser%29">Safari</a> and <a title="Google Chrome" href="http://en.wikipedia.org/wiki/Google_Chrome">Google  Chrome</a>, the similar <a title="KHTML" href="http://en.wikipedia.org/wiki/KHTML">KHTML</a> engine used in <a title="KDE" href="http://en.wikipedia.org/wiki/KDE">KDE</a>&#8217;s <a title="Konqueror" href="http://en.wikipedia.org/wiki/Konqueror">Konqueror</a> browser, and Opera&#8217;s <a title="Presto (layout engine)" href="http://en.wikipedia.org/wiki/Presto_%28layout_engine%29">Presto layout engine</a>—each of them is  leading in different aspects of CSS. As of August 2009, Internet  Explorer 8, Firefox 2 and 3 have reasonably complete levels of  implementation of CSS 2.1.<sup id="cite_ref-13"><a href="http://en.wikipedia.org/wiki/Css#cite_note-13">[14]</a></sup></p>
<h2>Limitations</h2>
<p>Some noted disadvantages of using &#8220;pure&#8221; CSS include:</p>
<dl>
<dt>Poor layout controls for flexible layouts </dt>
<dd>While new additions to CSS3 provide a stronger, more robust layout  feature-set, CSS is still very much rooted as a styling language, not a  layout language. This problem has also meant that creating fluid layouts  is still very much done by hand-coding CSS, and make the development of  a standards-based WYSIWYG editor more difficult than expected.</dd>
<dt>Selectors are unable to ascend </dt>
<dd>CSS offers no way to select a parent or ancestor of an element that  satisfies certain criteria. A more advanced selector scheme (such as <a title="XPath" href="http://en.wikipedia.org/wiki/XPath">XPath</a>) would  enable more sophisticated style sheets. However, the major reasons for  the CSS Working Group rejecting proposals for parent selectors are  related to browser performance and incremental rendering issues.</dd>
<dt>Vertical control limitations </dt>
<dd>While horizontal placement of elements is generally easy to control,  vertical placement is frequently unintuitive, convoluted, or  impossible. Simple tasks, such as centering an element vertically or  getting a footer to be placed no higher than bottom of viewport, either  require complicated and unintuitive style rules, or simple but widely  unsupported rules.<sup title="The text  in the vicinity of this tag needs clarification or removal of jargon  from March 2009">[<em><a title="Wikipedia:Please clarify" href="http://en.wikipedia.org/wiki/Wikipedia:Please_clarify">clarification needed</a></em>]</sup></dd>
<dt>Absence of expressions </dt>
<dd>There is currently no ability to specify property values as simple  expressions (such as <code>margin-left: 10% - 3em + 4px;</code>). This  would be useful in a variety of cases, such as calculating the size of  columns subject to a constraint on the sum of all columns. However, a <a title="W3C  recommendation" href="http://en.wikipedia.org/wiki/W3C_recommendation">working draft</a> with a calc() value to address this  limitation has been published by the CSS WG.<sup id="cite_ref-14"><a href="http://en.wikipedia.org/wiki/Css#cite_note-14">[15]</a></sup> Internet Explorer versions 5 to 7 support a proprietary expression()  statement,<sup id="cite_ref-properties1_15-0"><a href="http://en.wikipedia.org/wiki/Css#cite_note-properties1-15">[16]</a></sup> with similar functionality. This proprietary expression() statement is  no longer supported from Internet Explorer 8 onwards, except in  compatibility modes. This decision was taken for &#8220;standards compliance,  browser performance, and security reasons&#8221;.<sup id="cite_ref-properties1_15-1"><a href="http://en.wikipedia.org/wiki/Css#cite_note-properties1-15">[16]</a></sup></dd>
<dt>Lack of orthogonality </dt>
<dd>Multiple properties often end up doing the same job. For instance, <code>position</code>,  <code>display</code> and <code>float</code> specify the placement  model, and most of the time they cannot be combined meaningfully. A <code>display:  table-cell</code> element cannot be floated or given <code>position:  relative</code>, and an element with <code>float: left</code> should not  react to changes of <code>display</code>. In addition, some properties  are not defined in a flexible way that avoids creation of new  properties. For example, you should use the &#8220;border-spacing&#8221; property on  table element instead of the &#8220;margin-*&#8221; property on table cell  elements. This is because according to the CSS specification, internal  table elements do not have margins.</dd>
<dt>Control of element shapes </dt>
<dd>CSS currently only offers rectangular shapes. Rounded corners or  other shapes may require non-semantic markup. However, this is addressed  in the <a title="W3C recommendation" href="http://en.wikipedia.org/wiki/W3C_recommendation">working draft</a> of the CSS3 backgrounds  module.<sup id="cite_ref-16"><a href="http://en.wikipedia.org/wiki/Css#cite_note-16">[17]</a></sup></dd>
<dt>Lack of column declaration </dt>
<dd>While possible in current CSS, layouts with multiple columns can be  complex to implement. With the current CSS, the process is often done  using floating elements which are often rendered differently by  different browsers, different computer screen shapes, and different  screen ratios set on standard monitors.</dd>
<dt>Cannot explicitly declare new scope independently of position </dt>
<dd>Scoping rules for properties such as z-index look for the closest  parent element with a position:absolute or position:relative attribute.  This odd coupling has two undesired effects: 1) it is impossible to  avoid declaring a new scope when one is forced to adjust an element&#8217;s  position, preventing one from using the desired scope of a parent  element and 2) users are often not aware that they must declare  position:relative or position:absolute on any element they want to act  as &#8220;the new scope&#8221;. Additionally, a bug in the Firefox browser prevents  one from declaring table elements as a new css scope using  position:relative (one can technically do so, but numerous graphical  glitches result).</dd>
<dt>Pseudo-class dynamic behavior not controllable </dt>
<dd>CSS implements pseudo-classes which allow a degree of user feedback  by conditional application of alternate styles. One CSS pseudo-class,  &#8220;:hover&#8221;, is dynamic (equivalent of javascript &#8220;onMouseOver&#8221;) and has  potential for abuse (e.g., to implement cursor-proximity popups)<sup id="cite_ref-17"><a href="http://en.wikipedia.org/wiki/Css#cite_note-17">[18]</a></sup>,  but CSS has no ability for a client to disable it (no &#8220;disable&#8221;-like  property) or limit its effects (no &#8220;nochange&#8221;-like values for each  property).</dd>
<dt>Inconsistent browser support </dt>
<dd>Different browsers will render CSS layout differently as a result of  browser bugs or lack of support for CSS features. For example Microsoft  <a title="Internet Explorer" href="http://en.wikipedia.org/wiki/Internet_Explorer">Internet Explorer</a>, whose older versions,  such as IE 6.0, implemented many CSS 2.0 properties in its own,  incompatible way, misinterpreted a significant number of important  properties, such as <code>width</code>, <code>height</code>, and <code>float</code>.<sup id="cite_ref-18"><a href="http://en.wikipedia.org/wiki/Css#cite_note-18">[19]</a></sup> Numerous so-called CSS &#8220;hacks&#8221; have been created to achieve consistent  layout among out of date browsers.</dd>
</dl>
<h2>Advantages</h2>
<h3>Flexibility</h3>
<p>By combining CSS with the functionality of a <a title="Content Management System" href="http://en.wikipedia.org/wiki/Content_Management_System">Content Management  System</a>, a considerable amount of flexibility can be programmed into  content submission forms. This allows a contributor, who may not be  familiar or able to understand or edit CSS or HTML code to select the  layout of an article or other page they are submitting on-the-fly, in  the same form. For instance, a contributor, editor or author of an  article or page might be able to select the number of columns and  whether or not the page or article will carry an image. This information  is then passed to the Content Management System, and the program logic  will evaluate the information and determine, based on a certain number  of combinations, how to apply classes and IDs to the HTML elements,  therefore styling and positioning them according to the pre-defined CSS  for that particular layout type. When working with large-scale, complex  sites, with many contributors such as news and informational sites, this  advantage weighs heavily on the feasibility and maintenance of the  project.</p>
<h3>Separation  of Content from Presentation</h3>
<p>CSS facilitates publication of content in multiple presentation  formats based on nominal parameters. Nominal parameters include explicit  user preferences, different web browsers, the type of device being used  to view the content (a desktop computer or mobile Internet device), the  geographic location of the user and many other variables.</p>
<h3>[<a title="Edit section: Site-wide consistency" href="http://en.wikipedia.org/w/index.php?title=Cascading_Style_Sheets&amp;action=edit&amp;section=15">edit</a>] Site-wide consistency</h3>
<div>Main articles: <a title="Separation of presentation and content" href="http://en.wikipedia.org/wiki/Separation_of_presentation_and_content">Separation of  presentation and content</a> and <a title="Style sheet (web development)" href="http://en.wikipedia.org/wiki/Style_sheet_%28web_development%29">Style sheet (web development)</a></div>
<p>When CSS is used effectively, in terms of inheritance and  &#8220;cascading,&#8221; a global style sheet can be used to affect and style  elements site-wide. If the situation arises that the styling of the  elements should need to be changed or adjusted, these changes can be  made easily, simply by editing a few rules in the global style sheet.  Before CSS, this sort of maintenance was more difficult, expensive and  time-consuming.</p>
<h3>Bandwidth</h3>
<p>A style sheet will usually be stored in the browser <a title="Cache" href="http://en.wikipedia.org/wiki/Cache">cache</a>, and  can therefore be used on multiple pages without being reloaded,  increasing download speeds and reducing data transfer over a network.</p>
<h3>Page reformatting</h3>
<div>Main article: <a title="Progressive enhancement" href="http://en.wikipedia.org/wiki/Progressive_enhancement">Progressive enhancement</a></div>
<p>With a simple change of one line, a different style sheet can be used  for the same page. This has advantages for accessibility, as well as  providing the ability to tailor a page or site to different target  devices. Furthermore, devices not able to understand the styling will  still display the content.</p>
]]></content:encoded>
			<wfw:commentRss>http://witslog.com/wiki/technical/css/css/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

