Positioning: Absolute positioning

Setting position: absolute on an element will remove it from the document’s flow, and it will not longer follow the original page positioning flow.

Remember in relative positioning that we noticed the space originally occupied by an element was preserved even if it was moved around?

With absolute positioning, as soon as we set position: absolute on .box, its original space is now collapsed, and only the origin (the starting X and Y coordinates) remain the same.

.box {
  position: absolute;
}

We can now move the box around as we please, using the top, right, bottom, left properties:

.box {
  position: absolute;
  top: 0px;
  left: 0px;
}

or

.box {
  position: absolute;
  top: 140px;
  left: 50px;
}

The coordinates are relative to the closest container that is not static (which, remember, is the default).

This means that if we add position: relative to the .child element, and we set top and left to 0, the box will not be positioned at the top left margin of the window, but rather it will be positioned at the 0, 0 coordinates of .child:

.child {
  position: relative;
}

.box {
  position: absolute;
  top: 0px;
  left: 0px;
}

Here’s what happens if .child is static (the default):

.child {
  /* ... */
  position: static;
}

.box {
  /* ... */
  position: absolute;
  top: 0px;
  left: 0px;
}

Like for relative positioning, you can use z-index to alter the z-axis placement.

Lessons in this unit:

0: Introduction
1: Relative positioning
2: ▶︎ Absolute positioning
3: Fixed positioning
4: Sticky positioning
Are you intimidated by Git? Can’t figure out merge vs rebase? Are you afraid of screwing up something any time you have to do something in Git? Do you rely on ChatGPT or random people’s answer on StackOverflow to fix your problems? Your coworkers are tired of explaining Git to you all the time? Git is something we all need to use, but few of us really master it. I created this course to improve your Git (and GitHub) knowledge at a radical level. Launching May 21, 2024. Join the waiting list!