Movatterモバイル変換


[0]ホーム

URL:


Jump to content
WikipediaThe Free Encyclopedia
Search

CSS box model

From Wikipedia, the free encyclopedia
Model used for styling websites

This article has multiple issues. Please helpimprove it or discuss these issues on thetalk page.(Learn how and when to remove these messages)
icon
This articlerelies excessively onreferences toprimary sources. Please improve this article by addingsecondary or tertiary sources.
Find sources: "CSS box model" – news ·newspapers ·books ·scholar ·JSTOR
(September 2017) (Learn how and when to remove this message)
icon
This articleneeds additional citations forverification. Please helpimprove this article byadding citations to reliable sources. Unsourced material may be challenged and removed.
Find sources: "CSS box model" – news ·newspapers ·books ·scholar ·JSTOR
(September 2017) (Learn how and when to remove this message)
This article needs to beupdated. Please help update this article to reflect recent events or newly available information.(October 2017)
(Learn how and when to remove this message)
Box Model
CSS Box Model Module Level 3
The CSS box model
Native name
CSS Box Model Module Level 3
StatusW3C Candidate Recommendation Snapshot
Latest versionLevel 3
22 December 2020 (2020-12-22)[1]
OrganizationWorld Wide Web Consortium
CommitteeCSS Working Group
Editors
Base standardsCSS
DomainCSS
Websitewww.w3.org/TR/css-box-3/
Cascading Style Sheets
Concepts
Philosophies
Tools
Comparisons

Inweb development, theCSS box model refers to how HTML elements are modeled inbrowser engines and how the dimensions of those HTML elements are derived fromCSS properties. It is a fundamental concept for the composition ofHTML webpages.[3] The guidelines of the box model are described by web standardsWorld Wide Web Consortium (W3C) specifically the CSS Working Group. For much of the late-1990s and early 2000s there had been non-standard compliant implementations of the box model in mainstream browsers. With the advent ofCSS2 in 1998, which introduced thebox-sizing property, the problem had mostly been resolved.

Specifics

[edit]

The Cascading Style Sheets (CSS) specification describes how elements ofweb pages are displayed by graphical browsers. Section 4 of the CSS1 specification defines a "formatting model" that gives block-level elements—such asp andblockquote—a width and height, and three levels of boxes surrounding it: padding, borders, and margins.[4] While the specification never uses the term "box model" explicitly, the term has become widely used by web developers and web browser vendors.

All HTML elements can be considered "boxes", this includesdiv tag,p tag, ora tag. Each of those boxes has five modifiable dimensions:

  • theheight andwidth describe dimensions of the actual content of the box (text, images, ...)
  • thepadding describes the space between this content and the border of the box
  • theborder is any kind of line (solid, dotted, dashed...) surrounding the box, if present
  • themargin is the space around the border

According to the CSS1 specification, released by W3C in 1996 and revised in 1999, when a width or height is explicitly specified for any block-level element, it should determine only the width or height of the visible element, with the padding, borders, and margins applied afterward.[4][5] Before CSS3, this box model was known asW3C box model, in CSS3, it is known as thecontent-box.

The total width of a box is thereforemargin-left +border-left +padding-left +width +padding-right +border-right +margin-right. Similarly, the total height of a box equalsmargin-top +border-top +padding-top +height +padding-bottom +border-bottom +margin-bottom.

For example, the following CSS code

.my-class{width:200px;height:100px;padding:10px;border:solid10pxblack;margin:10px;}

would specify the box dimensions of each block belonging to 'my-class'. Moreover, each such box will have total height 140px and width 240px.

CSS3 introduced theInternet Explorer box model to the standard, known referred to asborder-box.[6]

History

[edit]
The difference in how width is interpreted between the W3C and Internet Explorer box models

Before HTML 4 and CSS, very few HTML elements supported both border and padding, so the definition of the width and height of an element was not very contentious. However, it varied depending on the element. The HTML width attribute of a table defined the width of the table including its border.[7] On the other hand, the HTML width attribute of an image defined the width of the image itself (inside any border).[8] The only element to support padding in those early days was the table cell. Width for the cell was defined as "the suggested width for a cell content in pixels excluding the cell padding."[9]

In 1996, CSS[10] introduced margin, border and padding for many more elements. It adopted a definition width in relation to content, border, margin and padding similar to that for a table cell.[11] This has since become known as theW3C box model.

At the time, very few browser vendors implemented the W3C box model to the letter. The two major browsers at the time,Netscape 4.0 andInternet Explorer 4.0 both defined width and height as the distance from border to border.[12] This has been referred to as thetraditional[6] or theInternet Explorer box model.[13]

Internet Explorer in "quirks mode" includes the content, padding and borders within a specified width or height; this results in a narrower or shorter rendering of a box than would result following the standard behavior.[14]

TheInternet Explorer box model behavior was often considered a bug, because of the way in which earlier versions ofInternet Explorer handle the box model or sizing of elements in a web page, which differs from the standard way recommended by theW3C for theCascading Style Sheets language.[15][16] As ofInternet Explorer 6, the browser supports an alternative rendering mode (called the "standards-compliant mode") which solves this discrepancy. However, for backward compatibility reasons, all versions still behave in the usual, non-standard way by default (seequirks mode).Internet Explorer for Mac is not affected by this non-standard behavior.

Workarounds

[edit]

Internet Explorer versions6 and onward are not affected by the bug if the page contains certainHTMLdocument type declarations. These versions maintain the buggy behavior when inquirks mode for reasons of backward compatibility.[17] For example, quirks mode is triggered:

  • When thedocument type declaration is absent or incomplete;
  • When an HTML 3 or earlier document is encountered;
  • When an HTML 4.0 Transitional or Frameset document type declaration is used and a system identifier (URI) is not present;
  • When an SGML comment or other unrecognized content appears before the document type declaration
  • Internet Explorer 6 also uses quirks mode if there is anXML declaration prior to the document type declaration.[18]

Various workarounds have been devised to force Internet Explorer versions 5 and earlier to display Web pages using the W3C box model. These workarounds generally exploit unrelated bugs in Internet Explorer's CSS selector processing in order to hide certain rules from the browser. The best known of these workarounds is the "box model hack" developed byTantek Çelik, a former Microsoft employee who developed this idea while working on Internet Explorer for the Macintosh. It involves specifying a width declaration for Internet Explorer for Windows, and then overriding it with another width declaration for CSS-compliant browsers. This second declaration is hidden from Internet Explorer for Windows by exploiting other bugs in the way that it parses CSS rules. The implementation of theseCSS “hacks” has been further complicated by the public release of Internet Explorer 7, which has had some issues fixed, but not others, causing undesired results in pages using these hacks.[17]

Box model hacks have proven unreliable because they rely on bugs in browsers' CSS support that may be fixed in later versions. For this reason, some Web developers have instead recommended either avoiding specifying both width and padding for the same element or using conditional comment and/orCSS filters to work around the box model bug in older versions of Internet Explorer.[13][19]

Support for Internet Explorer's box model

[edit]

Web designer Doug Bowman has said that the original Internet Explorer box model represents a better, more logical approach.[20] Peter-Paul Koch gives the example of a physical box, whose dimensions always refer to the box itself, including potential padding, but never its content.[6] He says that this box model is more useful for graphic designers, who create designs based on the visible width of boxes rather than the width of their content.[21] Bernie Zimmermann says that the Internet Explorer box model is closer to the definition of cell dimensions and padding used in the HTML table model.[22]

The W3C has included a "box-sizing" property in CSS3. Whenbox-sizing: border-box; is specified for an element, any padding or border of the element is drawninside the specified width and height, "as commonly implemented by legacy HTML user agents".[23]Internet Explorer 8,WebKit browsers such asApple Safari 5.1+ andGoogle Chrome,Gecko-based browsers such asMozilla Firefox 29.0 and later,Opera 7.0 and later, andKonqueror 3.3.2 and later support the CSS3 box-sizing property. Gecko browsers previous than 29.0 support the same functionality using the browser-specific-moz-box-sizing property.[24]border-box is the default box model used inBootstrap framework.

See also

[edit]

References

[edit]
  1. ^abEtemad, Elika J., ed. (22 December 2020)."CSS Box Model Module Level 3".W3C. Level 3. CSS Working Group. Retrieved9 April 2021.
  2. ^abBos, Bert; Prowse, Anton, eds. (6 July 2018)."CSS Basic Box Model Level 3".W3C. 31 July 2018. CSS Working Group. Retrieved9 April 2021.
  3. ^"CSS".MDN Web Docs. 23 March 2019. Retrieved30 March 2019.
  4. ^abWium Lie, Håkon;Bos, Bert (11 January 1999)."Cascading Style Sheets, level 1 § Formatting model".World Wide Web Consortium. Retrieved26 October 2017.
  5. ^Håkon Wium Lie;Bert Bos (17 December 1996)."Cascading Style Sheets, level 1".World Wide Web Consortium. Retrieved9 December 2006.
  6. ^abcKoch, Peter-Paul (2013)."CSS – box-sizing".QuirksMode. Retrieved30 March 2019.
  7. ^Raggett, Dave (23 January 1996)."The HTML3 Table Model".World Wide Web Consortium. Retrieved26 October 2017."RFC 1942 HTML Tables".IETF.The default table width is the space between the current left and right margins.
  8. ^Raggett, Dave; Le Hors, Arnaud; Jacobs, Ian (24 December 1999)."13 Objects, Images, and Applets § Width and height".World Wide Web Consortium. Retrieved26 October 2017.
  9. ^Raggett, Dave (14 January 1997)."HTML 3.2 Reference Specification".World Wide Web Consortium. Retrieved26 October 2017.
  10. ^Wium Lie, Håkon;Bos, Bert (17 December 1996)."Cascading Style Sheets, level 1".World Wide Web Consortium. Retrieved26 October 2017.
  11. ^Wium Lie, Håkon;Bos, Bert (17 December 1996)."Cascading Style Sheets, level 1".World Wide Web Consortium. Retrieved26 October 2017.
  12. ^Koch, Peter-Paul."Box model tweaking".XS4ALL. Retrieved26 October 2017.
  13. ^abJohansson, Roger (21 December 2006)."Internet Explorer and the CSS box model".456 Berea Street. Retrieved26 October 2017.
  14. ^Lance Silver (March 2001)."CSS Enhancements in Internet Explorer 6".Microsoft Developer Network.Microsoft. Retrieved24 June 2007.
  15. ^Shafer, Dan (2005).HTML Utopia: Designing Without Tables Using CSS. Melbourne:Sitepoint. pp. 124 & Appendix C.ISBN 0-9579218-2-9.
  16. ^Shea, David;Molly E. Holzschlag (2005).The Zen of CSS Design. Berkeley: Peachpit Press.ISBN 0-321-30347-4.
  17. ^abMarkus Mielke (26 September 2006)."Cascading Style Sheet Compatibility in Internet Explorer 7".Microsoft Developer Network.Microsoft. Retrieved24 June 2007. "Pages authored under non-strict mode (quirks) will not change behavior in IE7 and will not be affected by broken CSS filters.Pages authored under non-strict mode (or "quirks mode") will not change behavior in IE7."
  18. ^"!DOCTYPE".Microsoft Developer Network.Microsoft. Retrieved13 January 2007. "The following examples show how to use the !DOCTYPE declaration to specify the DTD a document conforms to, and to switch Internet Explorer 6 and later to standards-compliant mode."
  19. ^Arve Bersvendsen (February 2004)."Hack-free CSS for IE".Arve Bersvendsen's weblog. Archived fromthe original on 15 January 2007. Retrieved16 January 2007.
  20. ^"Vorsprung durch Webstandards | Douglas Bowman declares his love to CSS". Vorsprungdurchwebstandards.de. Archived fromthe original on 14 June 2010. Retrieved7 July 2010.
  21. ^"Vorsprung durch Webstandards | Peter-Paul Koch declares his love to CSS". Vorsprungdurchwebstandards.de. Archived fromthe original on 27 February 2010. Retrieved7 July 2010.
  22. ^"Box Model Enlightenment, Bernie Zimmermann". Bernzilla.com. 4 April 2003. Archived fromthe original on 27 December 2010. Retrieved7 July 2010.
  23. ^"CSS3 Basic User Interface Module".World Wide Web Consortium.
  24. ^"-moz-box-sizing".Mozilla Developer Center.Mozilla. 11 April 2009. Retrieved11 April 2009.It is possible to use this property to emulate the behavior of browsers that do not correctly support the CSS box model specification.

External links

[edit]
Products,
standards
Recommendations
Notes
Working drafts
Guidelines
Initiative
Deprecated
Obsoleted
Groups,
organizations
Elected
Working
Community, business
Closed
Software
Browsers
Conferences
Retrieved from "https://en.wikipedia.org/w/index.php?title=CSS_box_model&oldid=1331110932"
Categories:
Hidden categories:

[8]ページ先頭

©2009-2026 Movatter.jp