All Topics  
Cascading Style Sheets

 

   Email Print
   Bookmark   Link






 

Cascading Style Sheets



 
 
Cascading Style Sheets (CSS) is a stylesheet language
Stylesheet language

A style sheet language is a computer language used to describe the presentation of Structured document. A structured document is a document whose sections are clearly defined and categorized ....
 used to describe the presentation (that is, the look and formatting) of a document written in a markup language
Markup language

A markup language is a set of codes that give instructions regarding the structure of a text or how it is to be displayed. Markup languages have been in use for centuries, and in recent years have been used in computer typesetting and word-processing systems to specify the formatting, layout, structure, and other elements of a document....
. Its most common application is to style web page
Web page

A web page or webpage is a resource of information that is suitable for the World Wide Web and can be accessed through a web browser.This information is usually in HyperText Markup Language or eXtensible HyperText Markup Language format, and may provide Navigation bar to other web pages via hypertext Hyperlink....
s written in HTML
HTML

HTML, an Acronym and initialism of HyperText Markup Language, is the predominant markup language for Web pages. It provides a means to describe the structure of text-based information in a document?by denoting certain text as links, headings, paragraphs, lists, and so on?and to supplement that text with interactive forms, embedded '...
 and XHTML
XHTML

The Extensible Hypertext Markup Language, or XHTML, is a markup language that has the same depth of expression as HTML, but also conforms to XML syntax....
, but the language can be applied to any kind of XML document, including SVG
Scalable Vector Graphics

Scalable Vector Graphics is a family of specifications of XML-based file format for describing two-dimensional vector graphics, both static and dynamic ....
 and XUL
XUL

XUL , the XML User Interface Language, is an XML user interface markup language developed by the Mozilla project which operates in Mozilla cross-platform applications such as Mozilla Firefox and Flock ....
.

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 color
Color

Color or colour is the visual perception property corresponding in humans to the categories called red, yellow, blue and others....
s, font
Typeface

In typography, a typeface is a set of one or more fonts, in one or more sizes, designed with stylistic unity, each comprising a coordinated set of glyphs....
s, and layout
Layout

selfref|For the Wikipedia policy about articles layout, see...
.






Discussion
Ask a question about 'Cascading Style Sheets'
Start a new discussion about 'Cascading Style Sheets'
Answer questions from other users
Full Discussion Forum



Encyclopedia


Cascading Style Sheets (CSS) is a stylesheet language
Stylesheet language

A style sheet language is a computer language used to describe the presentation of Structured document. A structured document is a document whose sections are clearly defined and categorized ....
 used to describe the presentation (that is, the look and formatting) of a document written in a markup language
Markup language

A markup language is a set of codes that give instructions regarding the structure of a text or how it is to be displayed. Markup languages have been in use for centuries, and in recent years have been used in computer typesetting and word-processing systems to specify the formatting, layout, structure, and other elements of a document....
. Its most common application is to style web page
Web page

A web page or webpage is a resource of information that is suitable for the World Wide Web and can be accessed through a web browser.This information is usually in HyperText Markup Language or eXtensible HyperText Markup Language format, and may provide Navigation bar to other web pages via hypertext Hyperlink....
s written in HTML
HTML

HTML, an Acronym and initialism of HyperText Markup Language, is the predominant markup language for Web pages. It provides a means to describe the structure of text-based information in a document?by denoting certain text as links, headings, paragraphs, lists, and so on?and to supplement that text with interactive forms, embedded '...
 and XHTML
XHTML

The Extensible Hypertext Markup Language, or XHTML, is a markup language that has the same depth of expression as HTML, but also conforms to XML syntax....
, but the language can be applied to any kind of XML document, including SVG
Scalable Vector Graphics

Scalable Vector Graphics is a family of specifications of XML-based file format for describing two-dimensional vector graphics, both static and dynamic ....
 and XUL
XUL

XUL , the XML User Interface Language, is an XML user interface markup language developed by the Mozilla project which operates in Mozilla cross-platform applications such as Mozilla Firefox and Flock ....
.

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 color
Color

Color or colour is the visual perception property corresponding in humans to the categories called red, yellow, blue and others....
s, font
Typeface

In typography, a typeface is a set of one or more fonts, in one or more sizes, designed with stylistic unity, each comprising a coordinated set of glyphs....
s, and layout
Layout

selfref|For the Wikipedia policy about articles layout, see...
. This separation can improve content accessibility
Accessibility

Accessibility is a general term used to describe the degree to which a product is accessible by as many people as possible. Accessibility can be viewed as the "ability to access" the functionality, and possible benefit, of some system or entity....
, 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
Screen reader

A screen reader is a Application software that attempts to identify and interpret what is being displayed on the screen . This interpretation is then re-presented to the user with text-to-speech, sound icons, or a Refreshable Braille display....
) and on Braille
Braille

The Braille system is a method that is widely used by blindness people to read and write. Braille was devised in 1821 by Louis Braille, a Frenchman....
-based, tactile devices. While the author of a document typically links that document to a CSS stylesheet, readers can use a different stylesheet, perhaps one on their own computer, to override the one the author has specified.

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.

The CSS specifications are maintained by the World Wide Web Consortium
World Wide Web Consortium

The World Wide Web Consortium is the main international standards organization for the World Wide Web . It is arranged as a consortium where member organizations maintain full-time staff for the purpose of working together in the development of standards for the World Wide Web....
 (W3C). Internet media type (MIME type
MIME

Multipurpose Internet Mail Extensions is an Internet standard that extends the format of electronic mail to support:* Text in character sets other than ASCII...
) text/css is registered for use with CSS by RFC 2318 (March 1998).

Syntax

CSS has a simple syntax
Syntax

In linguistics, syntax is the study of the principles and rules for constructing Sentence s in natural languages. In addition to referring to the discipline, the term syntax is also used to refer directly to the rules and principles that govern the sentence structure of any individual language, as in "the Irish syntax"....
, and uses a number of English keywords to specify the names of various style properties.

A style sheet consists of a list of rules. Each rule or rule-set consists of one or more selectors and a declaration block. A declaration-block consists of a list of semicolon-separated declarations in braces. Each declaration itself consists of a property, a colon (:), a value, then a semi-colon (;).

In CSS, selectors are used to declare which 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 document object model
Document Object Model

The Document Object Model is a platform- and programming language-independent standard object model for representing HTML or XML documents as well as an Application Programming Interface for querying, traversing and manipulating such documents....
.

In addition to these, a set of pseudo-classes can be used to define further behavior. Probably the best-known of these is :hover, which applies a style only when the user 'points to' the visible element, usually by holding the mouse cursor over it. It is appended to a selector as in a:hover or #elementid:hover. Other pseudo-classes and pseudo-elements are, for example, :first-line, :visited or :before. A special pseudo-class is :lang(c), "c".

A pseudo-class selects entire elements, such as :link or :visited, whereas a pseudo-element makes a selection that may consist of partial elements, such as :first-line or :first-letter.

Selectors may be combined in other ways too, especially in CSS 2.1, to achieve greater specificity and flexibility.

Use of CSS


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 stylesheet resulting in considerably simpler HTML markup.

Heading
Heading

selfref|For Wikipedia's headings guideline, see...
s (h1 elements), sub-headings (h2), sub-sub-headings (h3), etc., are defined structurally using HTML. In print and on the screen, choice of font
Typeface

In typography, a typeface is a set of one or more fonts, in one or more sizes, designed with stylistic unity, each comprising a coordinated set of glyphs....
, size
Point (typography)

In typography, a point is the smallest Typographic unit of measure, being a subdivision of the larger Pica . It is commonly abbreviated as pt. The traditional printer's point, from the era of hot metal typesetting and Printing press, varied between 0.18 and 0.4 Milimeter depending on various definitions of the foot....
, color
Color

Color or colour is the visual perception property corresponding in humans to the categories called red, yellow, blue and others....
 and emphasis
Emphasis (typography)

In typography, emphasis is the exaggeration of words in a text with a font in a different style from the rest of the text—to emphasise them....
 for these elements is presentational.

Prior to CSS, document authors who wanted to assign such typographic
Typography

Typography is the art and techniques of typesetting, type design, and modifying type glyphs. Type glyphs are created and modified using a variety of illustration techniques....
 characteristics to, say, all h2 headings had to use the HTML font 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 W3C 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 deprecated
Deprecation

In computer software standards and documentation, the term deprecation is applied to software features that are superseded and should be avoided....
 the use of all the original presentational HTML markup.

Sources


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.

  • Author styles (style information provided by the web page author), in the form of
    • external stylesheets, i.e. a separate CSS-file referenced from the document
    • embedded style, blocks of CSS information inside the HTML document itself
    • inline styles, inside the HTML document, style information on a single element, specified using the "style" attribute.
  • User style
    • 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.
  • User agent
    User agent

    A user agent is the client application used with a particular network protocol; the phrase is most commonly used in reference to those which access the World Wide Web, but other systems such as Session Initiation Protocol use the term user agent to refer to the user's phone....
     style
    • the default style sheet applied by the user agent, e.g. the browser's default presentation of elements.


One of the goals of CSS is also to allow users 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 stylesheets provided by the designers, may remove all added style and view the site using their browser's default styling or may perhaps override just the red italic heading style without altering other attributes.

File highlightheaders.css containing:

h1 h2

Such a file is stored locally and is applicable if that has been specified in the browser options. "!important" means that it prevails over the author specifications.

History


Style sheets have existed in one form or another since the beginnings of SGML in the 1970s. Cascading Style Sheets were developed as a means for creating a consistent approach to providing style information for web documents.

As HTML grew, it came to encompass a wider variety of stylistic capabilities to meet the demands of web developers
Web development

Web development is a broad term for any activity related to developing a web site for the World Wide Web or an intranet. This can include e-commerce business development, web design, web content development, Client-side scripting/server-side scripting programming, and web server configuration....
. 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 web browser
Web browser

A Web browser is a application software which enables a user to display and interact with text, images, videos, music, games and other information typically located on a Web page at a website on the World Wide Web or a local area network....
 implementations made consistent site appearance difficult, and users had less control over how web content was displayed.

To improve the capabilities of web presentation, nine different style sheet languages were proposed to the W3C's www-style mailing list. Of the nine proposals, two were chosen as the foundation for what became CSS: Cascading HTML Style Sheets (CHSS) and Stream-based Style Sheet Proposal (SSP). First, Håkon Wium Lie
Håkon Wium Lie

H?kon Wium Lie is, , Chief Technology Officer of Opera Software, where he has worked since 1999.He attended ?stfold College, West Georgia College and MIT Media Lab receiving an MS in Visual Studies in 1991....
 (now the CTO
Chief technical officer

A chief technical officer or chief technology officer is an executive position whose holder is focused on scientific and technical issues within an organization....
 of Opera Software
Opera Software

Opera Software is a Norwegian corporation, primarily known for its Opera family of web browsers. Opera Software is also involved in promoting Web standards through participation in the World Wide Web Consortium....
) proposed Cascading HTML Style Sheets (CHSS) in October 1994, a language which has some resemblance to today's CSS. Bert Bos
Bert Bos

Bert Bos is a computer scientist. He studied mathematics at the University of Groningen, and wrote his PhD Dissertation on Rapid user interface development with the script language Gist....
 was working on a browser called Argo
Argo (web browser)

Argo was part of a project to make the Internet accessible to scholars in the Humanities at the University of Groningen. The Argo web browser was created in August 1994 by Bert Bos....
 which used its own style sheet language, Stream-based Style Sheet Proposal (SSP). Lie and Bos worked together to develop the CSS standard (the 'H' was removed from the name because these style sheets could be applied to other markup languages besides HTML).

Unlike existing style languages like DSSSL
Document Style Semantics and Specification Language

Document Style Semantics and Specification Language is a computer language for specifying stylesheets for Standard Generalized Markup Language documents, based on a subset of the Scheme ....
 and FOSI
FOSI

In computing, FOSI is a stylesheet language for SGML and, later, XML. It stands for Formatting Output Specification Instance. FOSI was developed by the US Department of Defense to control the pagination and layout of SGML and XML technical data....
, CSS allowed a document's style to be influenced by multiple style sheets. One style sheet could inherit
Inheritance (computer science)

In object-oriented programming, inheritance is a way to form new class es using classes that have already been defined. The inheritance concept was invented in 1967 for Simula....
 or "cascade" from another, permitting a mixture of stylistic preferences controlled equally by the site designer and user.

Håkon's proposal was presented at the "Mosaic and the Web" conference in Chicago, Illinois in 1994, and again with Bert Bos in 1995. Around this time, the World Wide Web Consortium
World Wide Web Consortium

The World Wide Web Consortium is the main international standards organization for the World Wide Web . It is arranged as a consortium where member organizations maintain full-time staff for the purpose of working together in the development of standards for the World Wide Web....
 was being established; the W3C took an interest in the development of CSS, and it organized a workshop toward that end chaired by Steven Pemberton
Steven Pemberton

Steven Pemberton is one of the developers of the ABC programming language and of the Views system.He is chair of the W3C XHTML2 and XForms Working Groups and also member of RDFa Taskforce....
. 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 Microsoft
Microsoft

Microsoft Corporation is a multinational corporation computer technology corporation that develops, manufactures, licenses, and supports a wide range of computer software products for computing devices....
, participating as well. 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
Document Object Model

The Document Object Model is a platform- and programming language-independent standard object model for representing HTML or XML documents as well as an Application Programming Interface for querying, traversing and manipulating such documents....
 had all been taking place in one group, the HTML Editorial Review Board (ERB). Early in 1997, the ERB was split into three working group
Working Group

Working Group can mean:*Working group, an interdisciplinary group of researchers; or*Working Group , kennel club designation for certain purebred dog breeds; or...
s: HTML Working group, chaired by Dan Connolly
Dan Connolly

Dan Connolly received a B.S. in Computer Science from the University of Texas at Austin in 1990. His research interests include investigating the value of formal descriptions of chaotic systems like the Web, particularly in the consensus-building process, and the Semantic Web....
 of W3C; DOM Working group, chaired by Lauren Wood of SoftQuad; and CSS Working group, chaired by Chris Lilley
Chris Lilley (W3C)

Chris Lilley was educated at Broxburn Academy in West Lothian, Scotland. He obtained a Bachelors degree in Biochemistry at the University of Stirling, Scotland and then worked in Haematology and Blood transfusion at the hospital laboratories of Stirling and Falkirk....
 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 2009.

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


Although the CSS1 specification was completed in 1996 and Microsoft's Internet Explorer 3
Internet Explorer 3

Microsoft Internet Explorer 3 is a graphical web browser released on August 13, 1996 by Microsoft for Microsoft Windows and on January 8, 1997 for Apple Macintosh ....
 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. Internet Explorer 5.0
Internet Explorer 5

Microsoft Internet Explorer 5 is a graphical web browser released in March 1999 by Microsoft, primarily for Microsoft Windows, but initially with versions available for Apple Macintosh, Sun Microsystems Solaris , and HP-UX....
 for the Macintosh, shipped in March 2000, was the first browser to have full (better than 99 percent) CSS1 support, surpassing Opera
Opera (web browser)

Opera is a web browser and Internet suite developed by the Opera Software company. Opera handles common Internet-related tasks such as displaying web sites, sending and receiving e-mail messages, managing contacts, IRC online chatting, downloading files via BitTorrent , and reading web feeds....
, 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. , no (finished) browser has fully implemented CSS2, with implementation levels varying (see Comparison of layout engines (CSS)
Comparison of layout engines (CSS)

The following tables compare Cascading Style Sheets compatibility and support for a number of layout engines. Please see the individual products' articles for further information....
).

Even though early browsers such as Internet Explorer 3
Internet Explorer 3

Microsoft Internet Explorer 3 is a graphical web browser released on August 13, 1996 by Microsoft for Microsoft Windows and on January 8, 1997 for Apple Macintosh ....
 and 4
Internet Explorer 4

Microsoft Internet Explorer 4 is a graphical web browser released in September 1997 by Microsoft, primarily for Microsoft Windows, but also with versions available for Apple Macintosh, Solaris , and HP-UX....
, and Netscape 4.x
Netscape Navigator

Netscape Navigator and Netscape are the names for the proprietary software web browser popular in the 1990s, and the flagship product of the Netscape Communications Corporation, and the dominant web browser in terms of Usage share of web browsers....
 had support for CSS, it was typically incomplete and afflicted with serious bugs
Software bug

A software bug is an error, flaw, mistake, failure, or fault in a computer program that prevents it from behaving as intended . Most bugs arise from mistakes and errors made by people in either a program's source code or its software architecture, and a few are caused by compilers producing incorrect code....
. This was a serious obstacle for the adoption of CSS.

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 platforms. Some authors commonly resort to using some workaround
Workaround

A workaround is a bypass of a recognized problem in a system. A workaround is typically a temporary fix that implies that a genuine solution to the problem is needed....
s such as CSS hacks and CSS filter
CSS filter

A CSS filter or hack is a coding technique used to hide or show Cascading Style Sheets markup depending on the browser, version number, or capabilities....
s in order to obtain consistent results across web browsers and platforms.

Problems with browsers' 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, 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, the Net-Scene company was selling PointPlus Maker to convert PowerPoint
Microsoft PowerPoint

Microsoft PowerPoint is a presentation program developed by Microsoft. It is part of the Microsoft Office system, and runs on Microsoft Windows and the Mac OS computer operating systems....
 files into Compact Slide Show files (using a .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 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.

CSS 1

The first CSS specification to become an official W3C Recommendation is CSS level 1, published in December 1996. Among its capabilities are support for:
  • Font
    Typeface

    In typography, a typeface is a set of one or more fonts, in one or more sizes, designed with stylistic unity, each comprising a coordinated set of glyphs....
     properties such as typeface and emphasis
  • Color of text, backgrounds, and other elements
  • Text attributes such as spacing between words, letters, and lines of text
  • Alignment of text, images, tables and other elements
  • Margin, border, padding, and positioning for most elements
  • Unique identification and generic classification of groups of attributes


The W3C maintains the CSS1 Recommendation.

CSS 2

CSS level 2 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
Positioning

Positioning may refer to:* Positioning , creating an identity in the minds of a target market* Critical literacy#Positioning, reader context...
 of elements, 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.

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 for several months, on June 15, 2005 it was reverted to a working draft for further review. It was returned to Candidate Recommendation status on 19 July 2007.

CSS 3

CSS level 3 is currently under development
Software development process

A software development process is a structure imposed on the development of a software product. Synonyms include Software_Lifecycle_Processes and software process....
. The W3C maintains a . CSS3 is modularized and will consist of several separate Recommendations. The W3C CSS3 Roadmap provides a summary and introduction.

Browser support


A CSS filter is a coding technique that aims to effectively hide or show parts of the CSS to different browsers, either by exploiting CSS-handling
Parsing

In computer science and linguistics, parsing, or, more formally, syntactic analysis, is the process of analyzing a sequence of lexical analysis#Token to determine their grammatical structure with respect to a given formal grammar....
 quirks or bugs in the browser, or by taking advantage of lack of support for parts of the CSS specifications. 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. Internet Explorer
Internet Explorer

Windows Internet Explorer , commonly abbreviated to IE, is a series of graphical user interface web browsers developed by Microsoft and included as part of the Microsoft Windows line of operating systems starting in 1995....
 support for CSS began with IE 3.0
Internet Explorer 3

Microsoft Internet Explorer 3 is a graphical web browser released on August 13, 1996 by Microsoft for Microsoft Windows and on January 8, 1997 for Apple Macintosh ....
 and increased progressively with each version. By 2008, the first Beta of Internet Explorer 8
Internet Explorer 8

Windows Internet Explorer 8 is the next version of Internet Explorer, succeeding Internet Explorer 7. Beta 1, targeted at web designers and developers, was released to the general public on March 5, 2008....
 offered support for CSS 2.1 in its best web standards mode.

An example of a well-known CSS browser bug is the Internet Explorer box model bug
Internet Explorer box model bug

The Internet Explorer box model bug is a software bug in the implementation of Cascading Style Sheets in earlier versions of Microsoft?s Internet Explorer web browser for Microsoft Windows....
, 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 Internet Explorer 6
Internet Explorer 6

Microsoft Internet Explorer 6 , is a graphical user interface web browser developed by Microsoft and included as part of the Microsoft Windows XP and Windows Server 2003 lines of operating systems....
 by using the correct doctype in (X)HTML documents. CSS hacks and CSS filter
CSS filter

A CSS filter or hack is a coding technique used to hide or show Cascading Style Sheets markup depending on the browser, version number, or capabilities....
s are used to compensate for bugs such as this, just one of hundreds of CSS bugs that have been documented in various versions of Netscape
Netscape (web browser)

Netscape 7 was a series of proprietary software cross-platform Internet suites created by Netscape Communications Corporation and then in-house by America Online to continue the Netscape series after Netscape 6....
, Mozilla Firefox
Mozilla Firefox

Mozilla Firefox is a web browser descended from the Mozilla Application Suite and managed by Mozilla Corporation. Official versions are distributed under the terms of the proprietary EULA....
, Opera
Opera (web browser)

Opera is a web browser and Internet suite developed by the Opera Software company. Opera handles common Internet-related tasks such as displaying web sites, sending and receiving e-mail messages, managing contacts, IRC online chatting, downloading files via BitTorrent , and reading web feeds....
, and Internet Explorer (including Internet Explorer 7
Internet Explorer 7

Windows Internet Explorer 7 is a web browser released by Microsoft in October 2006. Internet Explorer 7 is part of a long line of versions of Internet Explorer and was the first major update to the browser in more than 5 years....
).

Even when the availability of CSS-capable browsers made CSS a viable technology, the adoption of CSS was still held back by designers' struggles with browsers' 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 should be, and cross-browser testing remains a necessity. Other reasons for continuing non-adoption of CSS are: its perceived complexity, authors' 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.

Currently there is strong competition between Mozilla
Mozilla

Mozilla was the official, public, original name of Mozilla Application Suite by the Mozilla Foundation, currently known as SeaMonkey internet suite....
's Gecko
Gecko (layout engine)

Gecko is a layout engine currently developed by Mozilla Corporation, known as the layout engine of the Mozilla Firefox web browser, Mozilla Application Suite, Nvu, Mozilla Thunderbird and many more....
 layout engine, the WebKit
WebKit

WebKit is an application framework that provides a foundation upon which to build a web browser. WebKit was originally derived by Apple Inc. from the Konqueror browser?s KHTML software library for use as the engine of Mac OS X?s Safari web browser, and has now been further developed by individuals from the KDE project, Apple, Nokia, Google,...
 layout engine used in Apple's Safari
Safari (web browser)

Safari is a web browser developed by Apple Inc.. First released as a beta on January 7, 2003 on the company's Mac OS X operating system, it became Apple's default browser beginning with Mac OS X v10.3, commonly known as "OS X Panther." Apple has also made Safari the native browser for the iPhone OS....
, the similar KHTML
KHTML

KHTML is the HTML layout engine developed by the KDE project. It is the engine used by the Konqueror web browser. A fork ed version of KHTML called WebKit is used by several web browsers, among them Safari and Google Chrome....
 engine used in KDE
KDE

KDE is a free software project based around its flagship product, a desktop environment for Unix-like systems. The goal of the project is to provide basic desktop functions and applications for daily needs as well as tools and documentation for developers to write stand-alone applications for the system....
's Konqueror
Konqueror

Konqueror is a web browser, file manager and file viewer designed as a core part of the KDE. It is developed by volunteers and can run on most Unix-like operating systems....
 browser, and Opera's Presto layout engine
Presto (layout engine)

Presto is a layout engine for the Opera developed by Opera Software. After several public betas and technical previews, it was released on January 28, 2003 in Opera 7.0 for Windows; it is the browser's current layout engine....
 - each of them is leading in different aspects of CSS. , Internet Explorer's Trident
Trident (layout engine)

Trident is the name of the layout engine for the Microsoft Windows version of Internet Explorer. It was first introduced with the release of Internet Explorer 4 in October 1997; it has been steadily upgraded and remains in use today....
 engine remains the worst at rendering CSS as judged by World Wide Web Consortium standards. In April 2008 Internet Explorer 8 beta fixes many of these shortcomings and renders CSS 2.1. The IEBlog claims that it passes some versions of the ACID2
Acid2

Acid2 is a test page published and promoted by the Web Standards Project to expose web page rendering flaws in web browsers and other applications that render HTML....
 test.

Limitations


Some noted disadvantages of using "pure" CSS include:

Inconsistent browser support : Different browsers will render CSS layout differently as a result of browser bugs or lack of support for CSS features. For example Microsoft Internet Explorer
Internet Explorer

Windows Internet Explorer , commonly abbreviated to IE, is a series of graphical user interface web browsers developed by Microsoft and included as part of the Microsoft Windows line of operating systems starting in 1995....
, 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 width, height, and float. Numerous so-called CSS "hacks" must be implemented to achieve consistent layout among the most popular or commonly used browsers. Pixel precise layouts can sometimes be impossible to achieve across browsers. Selectors are unable to ascend : CSS offers no way to select a parent or ancestor of element that satisfies certain criteria. A more advanced selector scheme (such as XPath
XPath

XPath is a language for selecting nodes from an XML document. In addition, XPath may be used to compute values from the content of an XML document....
) would enable more sophisticated stylesheets. However, the major reasons for the CSS Working Group rejecting proposals for parent selectors are related to browser performance and incremental rendering issues. One block declaration cannot explicitly inherit from another : Inheritance of styles is performed by the browser based on the containment hierarchy of DOM elements and the specificity of the rule selectors, as suggested by the section 6.4.1 of the CSS2 specification. Only the user of the blocks can refer to them by including class names into the class attribute of a DOM element. Vertical control limitations : 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. Absence of expressions : There is currently no ability to specify property values as simple expressions (such as margin-left: 10% - 3em + 4px;). This is 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 working draft
W3C recommendation

A W3C Recommendation is the final stage of a ratification process of the World Wide Web Consortium working group concerning the standard. This designation signifies that a document has been subjected to a public and W3C-member organization's review....
 with a calc value to address this limitation has been published by the CSS WG. Internet Explorer versions 5 to 7 support a proprietary expression statement, 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 "standards compliance, browser performance, and security reasons". Lack of orthogonality : Multiple properties often end up doing the same job. For instance, position, display and float specify the placement model, and most of the time they cannot be combined meaningfully. A display: table-cell element cannot be floated or given position: relative, and an element with float: left should not react to changes of display. In addition, some properties are not defined in a flexible way that avoids creation of new properties. For example, you should use the "border-spacing" property on table element instead of the "margin-*" property on table cell elements. This is because according to the CSS specification, internal table elements do not have margins. Margin collapsing : Margin collapsing is, while well-documented and useful, also complicated and is frequently not expected by authors, and no simple side-effect-free way is available to control it. Float containment : CSS does not explicitly offer any property that would force an element to contain floats. Multiple properties offer this functionality as a side effect, but none of them are completely appropriate in all situations. As there will be an overflow when the elements, which is contained in a container, use float property. Generally, either "position: relative" or "overflow: hidden" solves this. Floats will be different according to the web browser size and resolution, but positions can not. Lack of multiple backgrounds per element : Highly graphical designs require several background images for every element, and CSS can support only one. Therefore, developers have to choose between adding redundant wrappers around document elements, or dropping the visual effect. This is partially addressed in the working draft
W3C recommendation

A W3C Recommendation is the final stage of a ratification process of the World Wide Web Consortium working group concerning the standard. This designation signifies that a document has been subjected to a public and W3C-member organization's review....
 of the CSS3 backgrounds module, which is already supported in Safari and Konqueror. Control of Element Shapes : CSS currently only offers rectangular shapes. Rounded corners or other shapes may require non-semantic markup. However, this is addressed in the working draft
W3C recommendation

A W3C Recommendation is the final stage of a ratification process of the World Wide Web Consortium working group concerning the standard. This designation signifies that a document has been subjected to a public and W3C-member organization's review....
 of the CSS3 backgrounds module. Lack of Variables : CSS contains no variables. This makes it necessary to do a "replace-all" when one desires to change a fundamental constant, such as the color scheme or various heights and widths. This may not even be possible to do in a reasonable way (consider the case where one wants to replace certain heights which are 50px, but not others which are also 50px; this would require very complicated regular expressions). In turn, many developers are now using PHP
PHP

PHP is a scripting language originally designed for producing dynamic web pages. It has evolved to include a command line interface capability and can be used in Standalone software Graphical user interface....
 to control and output the CSS file by either CSS @import/PHP require, or by declaring a different header in the PHP/CSS document for the correct parsing mode. The main disadvantage to this is the lack of CSS caching, but can be very useful in many situations. Lack of column declaration : 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. Cannot explicitly declare new scope independently of position : 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'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 "the new scope". 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). Poor Layout Controls for Flexible Layouts : 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.

Advantages


Flexibility

By combining CSS with the functionality of a Content Management System
Content management system

A content management system is a computer application used to create, edit, manage, search and publish various kinds of Content . CMSs are frequently used for storing, controlling, versioning, and publishing industry-specific documentation such as news articles, operators' manuals, technical manuals, sales guides, and marketing brochures....
, 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.

Site-wide consistency

When CSS is used effectively, in terms of inheritance and "cascading," a global stylesheet 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 stylesheet. Before CSS, this sort of maintenance was more difficult, expensive and time-consuming.

Bandwidth

A stylesheet will usually be stored in the browser cache
Cache

In computer science, a cache is a collection of data duplicating original values stored elsewhere or computed earlier, where the original data is expensive to fetch or to compute, compared to the cost of reading the cache....
, and can therefore be used on multiple pages without being reloaded, increasing download speeds and reducing data transfer over a network.

Page reformatting

With a simple change of one line, a different stylesheet 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.

See also


  • Acid3
    Acid3

    Acid3 is a test page from the Web Standards Project that checks how well a web browser follows certain web standards, especially relating to the Document Object Model and JavaScript....
  • Comparison of layout engines (CSS)
    Comparison of layout engines (CSS)

    The following tables compare Cascading Style Sheets compatibility and support for a number of layout engines. Please see the individual products' articles for further information....
  • Comparison of stylesheet languages
    Comparison of stylesheet languages

    The two primary stylesheet language are Cascading Style Sheets and the Extensible Stylesheet Language . While they are both called stylesheet languages, they have very different purposes and ways of going about their tasks....
  • CSS framework
    CSS framework

    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....
  • CSS Zen Garden
    CSS Zen Garden

    The CSS Zen Garden is a World Wide Web Web development resource. The goal of the site is to showcase what is possible with Cascading Style Sheets-based design....
  • CSSTidy
    CSSTidy

    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....
  • List of stylesheet languages
    List of stylesheet languages

    The following is a list of style sheet languages....
  • Minification
  • Validator
    Validator

    A validator is a computer program used to check the validity or syntactical correctness of a fragment of code or document. The term is commonly used in the context of validating HTML, Cascading Style Sheets and XML documents or RSS feeds though it can be used for any defined format or language....


Further reading


  • Eric A. Meyer
    Eric Meyer

    Eric A. Meyer is an United States web design consultant and author. He is best known for his advocacy work on behalf of web standards, most notably Cascading Style Sheets , a technique for managing how HTML is displayed....
    : , ISBN 0596527330
  • Eric A. Meyer
    Eric Meyer

    Eric A. Meyer is an United States web design consultant and author. He is best known for his advocacy work on behalf of web standards, most notably Cascading Style Sheets , a technique for managing how HTML is displayed....
    : Cascading Style Sheets 2.0 Programmer's Reference, McGraw-Hill Osborne Media, ISBN 0-07-213178-0
  • Keith Schengili-Roberts
    Keith Schengili-Roberts

    Keith Schengili-Roberts is a long-time author on Internet technologies, beginning with his work for the magazines Toronto Computes! in the early 1990s and then The Computer Paper from the mid-1990s up until 2003....
    : Core CSS, 2nd Edition, Prentice Hall, ISBN 0-13-009278-9
  • by Håkon Wium Lie and Bert Bos, ISBN 0-321-19312-1
  • The Zen of CSS Design (co-authored by CSS Zen Garden Owner, Dave Shea, and Molly E. Holzschlag), ISBN 0-321-30347-4
  • , ISBN 0-7357-1245-X
  • , ISBN 0-7357-1425-8
  • Dan Cederholm
    Dan Cederholm

    Dan Cederholm is a web designer, author, and speaker living in Salem, Massachusetts. He's the founder of SimpleBits, a web design studio , where he writes articles and commentary about the web, technology, and life....
    : Web Standards Solutions, The Markup and Style Handbook, Friends of Ed, ISBN 1-59059-381-2 (paperback) ()
  • Kynn Bartlett: Teach Yourself CSS in 24 Hours, 2nd Edition, Sams Publishing, ISBN 0-672-32906-9 ()
  • Cascading Style Sheets, PhD thesis, by Håkon Wium Lie - provides an authoritative historical reference of CSS
  • Jeffrey Zeldman
    Jeffrey Zeldman

    File:Jeffrey Zeldman @ SXSW March 2008, squared.jpegJeffrey Zeldman is a lecturer and author on web design. He also runs his own web design studio, Happy Cog, and has maintained a weblog, Jeffrey Zeldman Presents The Daily Report, on the topic since 1995....
    : Designing With Web Standards, New Riders, ISBN 0-7357-1201-8 (paperback) ()
  • , (co-authored by Owen Briggs, Steven Champeon, Eric Costello, and Matt Patterson), Friends of Ed, ISBN 1-59059-231-X

External links


  • Chapter 20 of the book Cascading Style Sheets, designing for the Web, by Håkon Wium Lie and Bert Bos (2nd edition, 1999, Addison Wesley, ISBN 0-201-59625-3) - provides a light history of CSS.
  • - Includes links to the CSS specifications.
  • [https://addons.mozilla.org/en-US/firefox/addon/1843 Firebug], A free and powerful Firefox plug-in to inspect and visually manipulate CSS, javascript
    JavaScript

    JavaScript is a scripting language widely used for client-side web development. It was the originating Programming language dialect of the ECMAScript standard....
     and Ajax (programming)
    Ajax (programming)

    Ajax, or AJAX , is a group of interrelated web development techniques used to create interactive web applications or rich Internet applications....
     applications.