Table of contents
- 1. Summary
- 2. Syntax
- 3. Values
- 4. Examples
- 4.1. Relative positioning
- 4.2. Absolute positioning
- 4.3. Fixed positioning
- 5. Notes
- 6. Browser compatibility
- 6.1. Gecko notes
- 6.2. Internet Explorer notes
- 7. Specifications
- 8. See also
« CSS « CSS Reference
Summary
The position CSS property chooses alternative rules for positioning elements, designed to be useful for scripted animation effects.
- Initial value
:
static - Applies to: all elements
- Inherited : no
- Media:
visual - Computed value : as specified
A positioned element is an element whose computed position property is relative, absolute, or fixed.
An absolutely positioned element is an element whose computed position property is absolute or fixed.
The top
, right
, bottom
, and left
properties specify the position of positioned elements.
Syntax
position: static | relative | absolute | fixed | inherit
Values
- static
- Normal behavior. The
top,right,bottom, andleftproperties do not apply. - relative
- Lay out all elements as though the element were not positioned, and then adjust the element's position, without changing layout (and thus leaving a gap for the element where it would have been had it not been positioned). The effect of
position:relativeontable-*-group,table-row,table-column,table-cell, andtable-captionelements is undefined. - absolute
- Do not leave space for the element. Instead, position it at a specified position relative to its closest positioned ancestor or to the containing block. Absolutely positioned boxes can have margins, they do not collapse with any other margins.
- fixed
- Do not leave space for the element. Instead, position it at a specified position relative to the screen's viewport and doesn't move when scrolled. When printing, position it at that fixed position on every page.
Examples
Relative positioning
To position an element relatively 20px from the top and left of its normal position, the following CSS is used.
#two { position: relative; top: 20px; left: 20px; }
Note how the other elements are displayed as if "Two" were in its normal position and taking up space.

Absolute positioning
Elements that are positioned relatively are still considered to be in the normal flow of elements in the document. In contrast, an element that is positioned absolutely is taken out of the flow and thus takes up no space when placing other elements. The absolutely positioned element is positioned relative to nearest positioned ancestor. If a positioned ancestor doesn't exist, the initial container is used.
In the example below, the blue ancestor div is positioned relative (so it becomes the nearest positioned ancestor) and box Two is positioned absolutely:
#ancestor { position: relative; background: #ddf; width: 500px; }
#two { position: absolute; top: 20px; left: 20px; }

If #ancestor had not been positioned relative, box Two would have appeared relative to the upper left corner of the page.
Fixed positioning
Fixed positioning is similar to absolute positioning, with the exception that the element's containing block is the viewport. This is often used to create a floating element that stays in the same position even after scrolling the page. In the example below the "One" box is fixed 80px from the top of the page and 20px from the left:
#one { position: fixed; top: 80px; left: 20px }
When viewing the top of the page, the position box appears in the upper left, and after scrolling, it remains in the same place relative to the viewport:
![]()
![]()
Notes
For relatively positioned elements, the top
or bottom
property specifies the vertical offset from the normal position and the left
or right
property specifies the horizontal offset.
For absolutely positioned elements, the top
, right
, bottom
, and left
properties specify offsets from the edge of the element's containing block (what the element is positioned relative to). The margin of the element is then positioned inside these offsets.
Most of the time, absolutely positioned elements have auto values of height
and width
computed to fit the contents of the element. However, non-replaced absolutely positioned elements can be made to fill the available space by specifying (as other than auto) both top
and bottom
and leaving height
unspecified (that is, auto). Likewise for left
, right
, and width
.
Except for the case just described of absolutely positioned elements filling the available space:
Browser compatibility
| Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
|---|---|---|---|---|---|
| Basic support | 1.0 | 1.0 (1.0) (See notes) | 4.0 | 4.0 | 1.0 (85) |
fixed value | 1.0 | 1.0 (1.0) | 7.0 | 4.0 | 1.0 (85) |
| Feature | Android | Firefox Mobile (Gecko) | IE Phone | Opera Mobile | Safari Mobile |
|---|---|---|---|---|---|
| Basic support | ? | 1.0 (1.0) (See notes) | ? | ? | ? |
Gecko notes
In Gecko 10.0 (Firefox 10.0 / Thunderbird 10.0)
, handling of absolutely positioned elements inside tables was fixed. Previously, if you had a positioned <table>
element inside a positioned block element, such as a <div>
, a position: absolute; styled element inside the table would be positioned relative to the outer <div>
rather than the table, which is the nearest positioned ancestor. This was a bug, and has been fixed. See this blog post for a more verbose explanation of the details.
Internet Explorer notes
In Internet Explorer, fixed positioning doesn't work if the document is in quirks mode.
Mozilla Developer Network