Introduction
In this article, we will be discussing position property
, which is one of the most important concepts you need to know.
The position property specifies the method used for arranging the HTML elements.
There are five methods:
static
relative
absolute
fixed
sticky
We will only be discussing the first FOUR(4) of them. If you want to find out more about position: sticky
, you can have a look at this article:
position: static
By default, all your HTML element has position: static
if you do not set specific method, such as relative, absolute, fixed and sticky. This means that your element is rendered on the website as you intended. The order/sequence will be from top to bottom.
HTML code:
<h2>This is Position: static</h2>
<p>Position: static is the default setting</p>
<p>HTML elements are placed on the webpage from top to bottom.</p>
<p>Dummy1</p>
<p>Dummy2</p>
<p>Dummy3</p>
CSS code:
* {
position: static;
}
position: relative
position: relative
is a bit different. It allows you to set where the elements are to be placed. If you want to move it a little bit left, you can do that.
The element is positioned relative to its original position, so if you set left: 20px
, the element moves 20px to the right. If you want it to move to the left, you can do left: -20px
. But you would mostly just do right: 20px
instead of left: -20px
.
My tip is just to think that the element moves from the direction you have set. If it is left: 20px
, it is moving 20px from the left.
HTML code:
<h2>position: relative</h2>
<div class="relative">The element has moved 20px from the left and 80px from the right "relative" to its original position.</div>
CSS code:
.relative {
position: relative;
border: 1px solid red;
left: 20px;
top: 80px;
}
position: absolute
position: absolute
might be the most confusing one because people think that it is related to the word "absolute". However, the element with position: absolute
is positioned relative to its first position: relative
parent. Therefore, it is similar to the position: relative
, but the original position is the parent element.
HTML code:
<div class="relative"> <!-- parent of absolute -->
position: relative
<div class="static">
position: static
<div class="absolute">position: absolute</div>
</div>
</div>
CSS code:
.relative {
position: relative;
border: 3px solid green;
width: 400px;
height: 130px;
left: 50px;
}
.absolute {
position: absolute;
border: 3px solid red;
top: 80px;
right: 10px;
width: 240px;
}
.static {
width: 350px;
border: 3px solid blue;
}
For the position: relative, it moved 50px from the left, relative to the the
<body>
tag.For the position: absolute, it moved 60px from the left, but relative to the parent element.
position: fixed
In position: fixed
, the HTML element stays stationary for all time. So, it is usually used for a navigation bar like this:
HTML code:
<h2 class="fixed">position: fixed</h2>
<p>Dummy</p>
<p>Dummy</p>
<p>Dummy</p>
<p>Dummy</p>
<p>Dummy</p>
<p>Dummy</p>
<p>Dummy</p>
<p>Dummy</p>
<p>Dummy</p>
<p>Dummy</p>
<p>Dummy</p>
<p>Dummy</p>
CSS code:
.fixed {
position: fixed;
width: 100%;
height: 100px;
border: 3px solid green;
}
If you try this out, the green box is stationary, which means it does not move. I have added some dummy texts using <p> tag to scroll down and see if it does not move.
Again, if you want to learn about the position: sticky
(which is very interesting), check out this article: