How to remove Left property when position: absolute?

CssCss Position

Css Problem Overview


I'm overriding the site CSS to an RTL version when specific language is chosen.

I have an element which has to have absolute positioning. In the LTR version, I do left: 0px; and it's aligned to the left; in the RTL version I want to do the opposite with right, but the left property isn't overridden so it still stays to the left.

  • I've tried hacking with !important, but that didn't work.
  • I've tried setting left: none, but that didn't work.

How can I either set it to none or remove it completely while overriding?

Css Solutions


Solution 1 - Css

left:auto;

This will default the left back to the browser default.


So if you have your Markup/CSS as:

<div class="myClass"></div>

.myClass
{
  position:absolute;
  left:0;
}

When setting RTL, you could change to:

<div class="myClass rtl"></div>

.myClass
{
  position:absolute;
  left:0;
}
.myClass.rtl
{
  left:auto;
  right:0;
}

Solution 2 - Css

In the future one would use left: unset; for unsetting the value of left.

As of today 4 nov 2014 unset is only supported in Firefox.

Read more about unset in MDN.

My guess is we'll be able to use it around year 2022 when IE 11 is properly phased out.

Solution 3 - Css

left: initial

This will also set left back to the browser default.

But important to know property: initial is not supported in IE.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questioneric.itzhakView Question on Stackoverflow
Solution 1 - CssCurtisView Answer on Stackoverflow
Solution 2 - CssJonas ÄppelgranView Answer on Stackoverflow
Solution 3 - CssMORHEROView Answer on Stackoverflow