CSS positioning of elements is really sometimes confusing but is very easy to understand. Lets start with static position.
Static position is default for any element on a Web page. If position of element is not defined , it will be static and would display inside the normal flow of the page.
If you try to apply rules like top , bottom , left or right to static element , will be ignored.
Absolute Positioning
This is the easiest property to learn and understand. When absolute position is applied to an element it is taken out from the normal flow of document and is positioned to defined top ,left, bottom or right of the body.
Consider the following HTML code:
This is normal text block This is normal text block This is normal text block This is an absolute block
and its CSS as:
.container{margin:120px;} .normal, .demo-position{padding:10px;border:1px solid #000;background:#ccc} .demo-position{position:absolute;top:0;left:0;background:#eee;}
Here is the output:
Relative positioning
Relative positioning uses the same four positioning properties as absolute positioning. But instead , it starts from where the normal flow of the element.
Most important thing is to note that if absolute element is inside relative element, it consider relative element as its parent element and will positioned accordingly.
Lets make little addition in above CSS. We will simply add “position:relative” to div container
.container{margin:120px;position:relative} .normal, .demo-position{padding:10px;border:1px solid #000;background:#ccc} .demo-position{position:absolute;top:0;left:0;background:#eee;}
and find out the change as :
You will find absolute positioned div is now inside div container which was positioned relative.
isn’t it was easy?
That’s it!!
Cheers!