Absolute Positioning and Containing Blocks
The first step to absolutely positioning an element is to identify or create its containing block. The containing block is critical to positioning because all absolute measurements are based on its sides. Containing blocks were discussed in more detail earlier in this chapter, but it’s worth a brief refresher.
For an ancestor element to be a containing block, it must have a
position value of absolute
, relative
, or fixed
(in other words, it must not be static,
either declared or by default). If no ancestor element qualifies as a
containing block, then the initial containing block is used (html
, body
,
or the viewport
, as determined by the
user agent).
In the example in Figure
21-15, the containing block for the list is a div
that has its position set to relative
(but its position has not been
altered). It is common practice to declare the position of an ancestor
element as relative explicitly and leave it in place, or to insert a new
positioned element (like a div
) to
set up the containing block for absolutely positioned elements.
Tip
To force the browser to use the body
element as the initial containing
block, add this style rule:
body {position: relative;}
Another important thing to note is that by setting the position of
the unordered list element (ul
) to
absolute, it thereby becomes the containing block for its descendant
elements. If an li
element were to be absolutely positioned, its offset properties become relative to the sides of the ...
Get Web Design in a Nutshell, 3rd Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.