loading...
Cover image for Position is Everything

Position is Everything

thedevcristian profile image Cristian Paul Castañeda ・3 min read

How positioning works?

Positioning help us to control our elements into a place.

Here are the different types of positioning.

  position: static; /* default */
  position: relative;
  position: absolute;
  position: sticky;
  position: fixed;
  position: inherit;

Position: Static

Alt Text
A default position in every situation. It is always positioned according to the normal page.

Will it change if I position the element on top, right, bottom or left?

NO , it will become stated if you can position the element.

Position: Relative

Alt Text
A positioned relative to its normal position. It allows to direct in every position we decided.
When we don't declare any value to a position, it'll act like it's Static
We can use the top, right, bottom and left position to push every element.

Position: Absolute

Alt Text

A position that can remove the Element from the document flow and position itself in reference to a container and a container has to have a position assigned to it as well.
A container element has a relative position wonder why it is centered in the browser.
The text overlaps the image, just because both have positioned in Absolute

Position: Sticky

Alt Text

Sticky positioning is a hybrid of relative and fixed positioning. The element is treated as relative positioned until it crosses a specified threshold, at which point it is treated as fixed positioned. - Mozilla Foundation, MDN Web docs

The nav-bar container(parent) with icon(child) and navigation(child) set to sticky position

As you scroll the browser, the sticky container will continue appear as it flows.

At the initial of code the padding of your element will not set to auto
you need to declare:

   nav-bar { 
      /* using vendor-prefixed (-webkit and -moz) for specific browser */
              position: -webkit-sticky;    /* for chrome browser */
              position: -moz-sticky;       /* for mozilla browser */
              position: sticky;
              top: 0;
              overflow: hidden;    /* to fix the height of the container */ 
   }

Declared the overflow property.

Q: Why it doesn't work?

A: your browser is not supported.

Kindly check caniuse

Position: Fixed

Alt Text

Similar to position absolute, an element that has fixed position is taken out of the document flow. The major difference is: elements with position fixed is always positioned relative to the browser window.

I removed the paragraph element to a container and the result is container(parent) with an image(child) overlaps the paragraph.


How about the other attributes?

Inherit a position with the same value from its parent.

   parent-element { padding: 15px; }
   child-element { padding: inherit; }

Alt Text
The top, right, bottom and left It give us the permission to place every element with a set position e.g. Relative, Absolute and Fixed.

(-) Negative values for an attribute is accepted.

The z-index property manipulates the vertical stacking order of elements that overlap
Alt Text


Application that I used:
Balsamiq
Header Image
Udemy Master Class Header
Reference for Sticky Position
Mozilla Foundation
Browser Tool for browser compatibility
caniuse

Discussion

markdown guide
 

I had a lot of problems placing a non-scrolling navigation on my old personal website, because I wanted to support IE 6, but that did not support position: fixed

 

Unfortunately, the IE6 don't have the power to hold fixed position BUT we found a solution to that and you can try this code:

html, body {
   height: 100%;  /* to fixed the positioning of it's browser */
}

#your-id-selector {
   position: fixed !important;
   position: absolute; /* recommended for IE6 and above */
   top: 0;
}

Let me know if the code works for you. Have good one.

Reference: CSS-Tricks

 

Die, IE6, just die 🙏🤣🤣

 

Very nice post, Cristian 👏.

What's always been bothering me is the misnomer "position: absolute". Because it is only absolute in reference to a positioned ancestor (as you rightly said).

Another thing: Using negative numbers in positioning can prove very useful for layout purposes.

By the way, awesome use of wireframes here!

 

Thank you Sir Sebastian, this is my first technical blog that I use CSS: Position as my content and it excites me at the same time scares me out. Thankfully it has a good result. I appreciate that, Sir.

About the Absolute, it is no longer takes up any space like what static and relative does.

And I agree from negative numbers they are so functional.

 

How about adding position: sticky?

 

Thank you! I forgot to include the sticky position. I will update the content asap.

 

Hi, your article is great. Can I ask a question? What software was used to create the exquisite pictures in the article?

 

Thank you, I used balsamiq. I put the link on the article, you can try it and it's good for making a wireframe.