The CSS position
property defines how an element is positioned in a document. It controls the layout and behavior of an element relative to its containing block, parent, or the viewport. The position
property, combined with the top
, right
, bottom
, and left
properties, allows precise placement of elements.
element {
position: value;
top: value;
right: value;
bottom: value;
left: value;
}
Where value
for position
can be one of several values that control the behavior of the element’s placement on the page.
static
(default)relative
absolute
fixed
sticky
Each of these positioning types alters the behavior of an element in terms of layout and movement.
position: static;
Description: This is the default positioning for all elements. Elements with static
positioning are positioned according to the normal document flow, meaning they are placed in the order they appear in the HTML and are not affected by the top
, right
, bottom
, or left
properties.
Code Example:
div {
position: static;
background-color: lightblue;
}
<div>Static Positioning</div>
<div>
will be rendered where it naturally appears in the document without any special positioning. The top
, right
, bottom
, and left
properties won’t affect it.position: relative;
Description: A relatively positioned element is positioned relative to its normal position in the document flow. It can be moved using the top
, right
, bottom
, and left
properties, but it still occupies the original space in the flow. The element is shifted visually, but the space it originally occupied is maintained.
Code Example:
div {
position: relative;
top: 20px;
left: 30px;
background-color: lightcoral;
}
<div>Relative Positioning</div>
<div>
will be moved 20px down and 30px to the right from where it would normally appear in the document flow. However, the space it originally occupied will still affect the layout of other elements.position: absolute;
Description: An absolutely positioned element is removed from the normal document flow and positioned relative to its nearest positioned ancestor (i.e., the first ancestor with a position
value other than static
). If no such ancestor exists, it is positioned relative to the initial containing block (usually the document’s <html>
element or the viewport).
Code Example:
.container {
position: relative;
width: 300px;
height: 200px;
background-color: lightgray;
}
.box {
position: absolute;
top: 10px;
left: 20px;
width: 100px;
height: 100px;
background-color: lightgreen;
}
<div class="container">
<div class="box">Absolute Positioning</div>
</div>
.box
element is positioned relative to its nearest positioned ancestor, which in this case is the .container
. The box is moved 10px from the top and 20px from the left of the .container
. It is completely removed from the document flow, meaning it won’t affect the layout of other elements.position: fixed;
Description: A fixed-position element is removed from the normal document flow and is positioned relative to the viewport. The element will stay in the same position on the screen even when the user scrolls the page. It’s often used for elements like headers, footers, or sidebars that should remain in view regardless of scrolling.
Code Example:
div {
position: fixed;
top: 0;
left: 0;
width: 100%;
background-color: lightsteelblue;
}
<div>Fixed Positioning - Stays at the Top</div>
<p>Scroll the page to see the effect...</p>
<div>
is fixed to the top-left corner of the viewport and will stay there even when the page is scrolled. The top: 0;
and left: 0;
values ensure that it remains pinned to the top-left corner.position: sticky;
Description: A sticky-positioned element toggles between relative
and fixed
positioning, depending on the user’s scroll position. It acts like a relatively positioned element until a specified point is reached in the scroll, after which it “sticks” to a position and becomes fixed. Sticky positioning is useful for sticky headers or other elements that need to remain visible at the top of the viewport after scrolling past them.
Code Example:
div {
position: sticky;
top: 0;
background-color: lightpink;
padding: 10px;
}
<div>Sticky Positioning - Sticks at the Top when Scrolling</div>
<p>Scroll down the page to see the sticky effect...</p>
<div>
will act like a relative element until the user scrolls the page. Once it reaches the top of the viewport, it will “stick” there and behave like a fixed element, remaining visible even as the user scrolls further down.top
, right
, bottom
, and left
with PositionThe top
, right
, bottom
, and left
properties work together with the position
property to control how far an element is shifted from its relative position, ancestor, or the viewport. These properties only work with non-static
positions.
position: absolute
:div {
position: absolute;
top: 10px;
right: 20px;
background-color: lightyellow;
}
The z-index
property is used in conjunction with positioning to control the stacking order of elements (i.e., which element appears on top when they overlap).
z-index
value, the closer to the “front” the element will appear.div {
position: absolute;
top: 50px;
left: 50px;
width: 100px;
height: 100px;
background-color: lightblue;
z-index: 10;
}
z-index
controls the vertical stacking order. Elements with higher z-index
values appear on top of elements with lower values when they overlap.header {
position: sticky;
top: 0;
background-color: lightblue;
padding: 10px;
z-index: 1000;
}
position: sticky;
. The z-index: 1000
ensures it stays above other content.footer {
position: fixed;
bottom: 0;
width: 100%;
background-color: lightcoral;
padding: 10px;
}
width: 100%
ensures it spans the full width of the page.<!DOCTYPE html>
<html>
<head>
<style>
.box {
width: 100px;
height: 100px;
margin: 20px;
}
.static { background-color: lightblue; }
.relative { background-color: lightcoral; position: relative; top: 20px; left: 10px; }
.absolute { background-color: lightgreen; position: absolute; top: 50px; left: 50px; }
.fixed { background-color: lightpink; position: fixed; bottom: 10px; right: 10px; }
.sticky { background-color: lightyellow; position: sticky; top: 0; }
</style>
</head>
<body>
<div class="box static">Static</div>
<div class="box relative">Relative</div>
<div class="box absolute">Absolute</div>
<div class="box fixed">Fixed</div>
<div class="box sticky">Sticky</div>
</body
>
</html>
The position
property is fundamental to controlling the layout and appearance of elements in a web page. Understanding the differences between static
, relative
, absolute
, fixed
, and sticky
positioning will help you create flexible, responsive layouts and ensure elements are precisely placed and behave as intended in your designs.
next -> CSS Transform