/* a 'declaration' */
width: 500px;
width: 500px;
text-wrap: pretty;
width: 500px;

content-box model
border-box modelinline-size: 500px;
width we care about exactly,inline-size: 45em;
width: min-content; width: max-content;
width: 100%; width: 90vw; width: 80cqi;
width: min(45em, 100%);

Graphic design of unknown content with unknown collaborators, on an infinite and unknowable canvas, across operating systems, interfaces, languages, and writing modes…

There are too many variables to consider. The point of CSS is to make it so you don’t have to worry about them all.
width: auto;
The fact we can control a paper page is really a limitation of that medium.
It takes craft to set up the circumstances that are simple and yet contain the ambiguities and the incongruity of human experience.
500px wide)16px != 1em
1em sometimes gives the same result as 16pxflex != grid
Mostly based on formatting contexts
display properties…demo:
span with text & outlinewidthheightdisplay: block, then display: list-itemdisplay of the element itself…body { display: flex; }display: block etcwidth to be largefloatbody display valuedisplay is a Shorthand
primarily inside and outside modes
display creates
Formatting Context
fixed)
CSS takes a source document organized as a tree of elements… and text nodes… and renders it onto a canvas such as your screen.
The document canvas is the infinite surface over which the document is rendered.


width/height
writing mode
[flow-inline-vert: flow-inline-vert]inline axis is not always the widthheight insteaddirection
[flow-inline-rtl: flow-inline-rtl]width -> inline-sizeheight -> block-sizetop -> block-startbottom -> block-endleft -> inline-startright -> inline-endmargin-right -> margin-inline-endmargin-right with margin-inline-endmargin-block, padding-inline, border-blockinput {
margin-inline-end: 1em;
margin-left: 0;
}
…A tree of elements… and text nodes…


display property
Box Generation Values
display propertydisplay: none
Removes Box Tree
display: contents
Removes Box
divs when doing layoutdisplay: list-item
Adds Marker Box
list-item display::marker boxDisplay:none; (head/style) removes box & subtreeDisplay:contents; (figure?) removes boxDisplay:list-item; (li) generates a second ::marker boxList-style-position moves ::marker in or out of primary boxdisplay property
Outer Display Values
inline or block


line-height (initial normal from font metrics)inline-size block-size 
block-size inline-size look up to parents…

Including % and other ‘relative’ units
min-content |max-content | fit-content
box-sizing property…
Selects Box Edge for Sizing
* { box-sizing: border-box; }
/* ::before, ::after {
box-sizing: border-box;
} */
content-boxbox-sizing: border-box on all elementsdisplay…
Often Ignored
gridinline or block, just a ‘grid item’inline element in a block context can be ‘blockified’display…
Flex, Grid, Table-*, Flow
block ➡️ block flow inline ➡️ inline flow \
grid ➡️ block grid flex ➡️ block flex table ➡️ block table
block outer valueoverflow: hidden;“A mini layout in your layout”…

overflow: hiddeninline-block
inline-flex, inline-grid, inline-block
block » block flowflow-root » block flow-rootinline » inline flowflex » block flexgrid » block gridlist-item » block flow list-iteminline-block » inline flow-rootinline-flex » inline flexinline-grid » inline gridMulti-Value Display
display, position, and floatParent context can override
inline & inline-* ➡️ block & *
clamp(min-content size, stretch-fit size, max-content size)
overflow-x/-y | overflow-inline/-block
Acts like auto when single-axis
padding-box edgepadding-box + overflow-clip-margin edge
Overflow Clip
(usually auto…)
clip | ellipsis
break-word | anywhere
[demo] change to use intrinsic sizes