Positions
How are elements positioned?
The position of an element determines where and how it is displayed
on the page. An element can have one of four positions:
position: static | relative | absolute | fixed;
By default, the position value of every element is set to
static. This means that the element is positioned according to the normal
flow of the document (boxes withing boxes). All static elements are
treated as not positioned, meaning that the
top,
right,
bottom, and
left
properties will not affect their position.
Relative positioning
The
relative
position value causes an element to be positioned relative to its
normal position. The space once occupied by the element is still
taken into account when the element is positioned.
<p>Reprehenderit <span>relative</span> irure quis. Voluptate nulla anim velit incididunt esse aliqua ullamco sint consectetur adipisicing excepteur laborum nulla.</p>
+
span {
position: relative;
bottom: 18px;
right: -12px;
color: deeppink;
}
Reprehenderit relative irure quis. Voluptate nulla anim velit incididunt esse aliqua ullamco sint consectetur adipisicing excepteur laborum nulla.
Absolute positioning
The
absolute
position value causes an element to be positioned relative to the
nearest positioned ancestor. The space once
occupied by the element is collapsed (not taken into account).
<div class="ancestor">
<ol>
<li>Position static</li>
<li>Position static</li>
<li>Position static</li>
<li id="absolute-item">Position absolute</li>
<li>Position static</li>
<li>Position static</li>
</ol>
</div>
+
div.ancestor {
position: relative;
padding: 24px;
}
#absolute-item {
position: absolute;
bottom: 0;
left: 0;
}
- Position static
- Position static
- Position static
- Position absolute
- Position static
- Position static
Fixed positioning
The
fixed
position value causes an element to be positioned relative to the
viewport. The space once occupied by the element is collapsed (not
taken into account).
<ol>
<li>Position static</li>
<li>Position static</li>
<li>Position static</li>
<li id="fixed-item">Position fixed</li>
<li>Position static</li>
<li>Position static</li>
</ol>
+
#fixed-item {
position: fixed;
right: 16px;
bottom: 16px;
}
- Position static
- Position static
- Position static
- Position fixed
- Position static
- Position static
Sticky positioning
The
sticky
position value is a hybrid of both
relative
and
absolute
positioning, in that it still takes up space but can stick to
a desired edge of its ancestor while scrolling. For
position: sticky
to work, none of its ancestors can have their overflow set to
overflow: hidden.
<div class="scroll-container">
<section>
<h2 class="sticky-top">Sticks to top</h2>
<p>Lorem ipsum…</p>
</section>
<section>
<p>Lorem ipsum…</p>
<h2 class="sticky-bottom">Sticks to bottom</h2>
</section>
</div>
+
.scroll-container {
height: 256px;
overflow-y: scroll;
}
section {
height: 512px;
background-color: #e4e4e4;
}
h2 {position: sticky;}
.sticky-top {top: 0;}
.sticky-bottom {bottom: 0;}
Sticks to top
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Doloremque, voluptatibus. Voluptate mollit ut excepteur minim. Deserunt nostrud excepteur voluptate est adipisicing commodo in laborum. Culpa ut duis duis proident elit eu. Voluptate pariatur minim voluptate nostrud consequat excepteur laborum nulla proident irure proident labore. Consectetur reprehenderit nostrud duis in excepteur non sint est pariatur. Proident commodo minim quis non et ad occaecat ut. Reprehenderit aute eu amet ipsum sunt amet proident deserunt est nostrud proident id. Aute laborum occaecat veniam ipsum in ullamco aliquip ex nulla eu veniam minim aliquip commodo amet.
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Voluptate mollit ut excepteur minim. Deserunt nostrud excepteur voluptate est adipisicing commodo in laborum. Culpa ut duis duis proident elit eu. Voluptate pariatur minim voluptate nostrud consequat excepteur laborum nulla proident irure proident labore. Consectetur reprehenderit nostrud duis in excepteur non sint est pariatur. Proident commodo minim quis non et ad occaecat ut. Reprehenderit aute eu amet ipsum sunt amet proident deserunt est nostrud proident id. Aute laborum occaecat veniam ipsum in ullamco aliquip ex nulla eu veniam minim aliquip commodo amet.