About
The position property specifies the positioning algorithms (positioning scheme) for elements.
To understand how a box is positioned, see CSS - (Box) Positioning (Scheme)
The position is calculated with respect to the edges of a rectangular box called the containing block.
If a child box is not confined by its containing block; it may overflow.
The top, right, bottom, and left properties specifies the position of the element.
Type of positioning scheme
Type of positioning scheme according to the ancestor (container box) and the descendant box position value:
Container Constraint | Descendant Position Value (child, child of child,…) | Description |
---|---|---|
Static container | static | Static > Static: Normal Flow |
Static or relative container | relative | Static > Relative: Relative Positioning |
First relative container or viewport | absolute | (Static|Relative) > Absolute: Absolute |
Properties
Values static | relative | absolute | fixed | sticky | inherit
Initial value static
Applies to All elements
Inherited No
Values table:
Values | Default | Positioned | top, right, bottom, left applies ? | Model | Description |
---|---|---|---|---|---|
static | x | No | No | normal flow | The element is not positioned. The box position is calculated according the normal flow |
relative | Yes | Yes (Position) | normal flow | The box's position is calculated according to the normal flow and shifted relative to this position with the offset properties (top, right, bottom, left) | |
absolute | Yes | Yes (Position and size) | absolute | The box is taken out of the normal flow and is positioned according to the first relative ascendant container or the viewport if none. Their dimensions cannot alter the dimensions of their ancestors. | |
fixed | Yes | Yes (Position) | absolute | According to the 'absolute' model, the box is taken out of the normal flow but does not move when scrolled. | |
sticky | Yes | Yes | sticky | keep the box in view within its containing block as the user scrolls. | |
inherit | Takes the same specified value as the property for the element's parent. |
Position works with all type of box
Position works with all type of box. Example with a flex box:
.middle {
display: flex;
position: absolute;
top:10px;
left: 50%;
}
<div class="middle">text</div>
Position for human
When writing a UI interface, the CSS position terms:
- are not human-friendly
- and do not take into account the language direction (ie LTR or RTL)
You can use:
- Center
- North
- Northeast
- East
- South
- Southeast (default)
- Southwest
- West
- Northwest