CSS PositioningSee the absolute positioning demo.
An absolutely positioned element establishes a containing block for any elements within it. Descendent elements follow the same positioning rules they normally would, just offset by the position of the containing element.
They can even contain other absolutely positioned elements. These descendents are likewise removed from the normal flow within the containing block, so they can appear outside of the bounds of the containing element. This can be seen in the demo.
Fixed positioning is a special case of absolute positioning. For fixed elements, the containing block is always taken to be the viewport of the browser window. A fixed element does not move when a web page is scrolled as all other elements do.
In printing, a fixed element should be printed on every page.
background-attachmentproperty) which produces a similar effect but only for background images. Netscape 6.1 does support fixed positioning on elements, as does Opera 5.
Absolutely positioned elements may overlap non-positioned elements and each
other. Two things determine when one appears in front of or behind another, the
stacking context and the
Each absolutely positioned element belongs to a stacking context.
The initial containing block generates an initial stacking context. Absolutely
positioned elements within the same stacking context are displayed according to
An element with a higher
z-index appears in front of an element
with a lower
z-index. When two elements have the same value (or
if neither has been assigned a value) the source order is used. The element
that is defined earlier in the source is displayed behind the one defined
Negative values can be specified for
z-index. An element with
a negative value is displayed behind any with an undefined or positive
z-index value in the same stacking context.
z-indexvalues. Netscape 6 does but rendering errors can occur.
An absolutely positioned element can create a local stacking context which applies to absolutely positioned elements within it. These descendent elements are stacked among themselves according the the same rules as before.See the stacking order demo.
But when any overlap an element in a different stacking context, they are
displayed either behind or in front of it depending on the stack level of
their containing element. In other words, their
applies only to elements in the same local stacking context. Otherwise the
z-index value of the containing element is used. A simple demo
illustrates the idea.
A local stacking context is created when an absolutely positioned element
is given a
z-index value other than
absolutely positioned elements nested within the element participate in that
local stacking context.
z-indexis set to
auto.Opera 5.0 handles the situation correctly as far as stacking order but positions the descendent elements incorrectly.
Overlaping Form Controls and Plug-ins
Some elements cause display problems when overlapped by positioned elements. An example of this is shown in the image at right, taken from IE version 5.5. This can occur when elements overlap form controls, applets or plug-in displays like Flash.
It happens because browsers may let other programs handle the display of
these elements, like a plug-in or the operating system. Even setting the
z-index will not help. These other programs control that space and
will simply draw on top of whatever the browser renders.
SELECTelements. With IE, these will display on top of any other content. With Netscape, the select box itself works as expected but the scroll bar will bleed through if the
SIZEattribute is greater than one. Opera 5.0 has this problem with all form elements.
This cannot be fixed. Your only recourse is to try to avoid overlapping such
elements. In some cases, you might know or be able to dynamically detect an
overlap and hide the offending element from view by setting its style via
scripting using settings like
Even though this is just a brief overview, you can see that many details go into how a browser renders page content. And this information deals just with positioning. Stylings, form controls and dynamic content changes via scripting can complicate matters even more.
Even when browsers follow the standards, there is plenty of room for error. All software has bugs and specifications can't cover every possible situation.
When designing layouts, code validators can be helpful in finding simple errors like unmatched HTML tags or syntax errors in style sheets. Sometimes it helps to build a small test case and view it in several different browsers or configurations to pin down a particular problem.