151

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?

TRiG
  • 10,148
  • 7
  • 57
  • 107
eric.itzhak
  • 15,752
  • 26
  • 89
  • 142
  • To remove only a specific css attribute such as `left` use: `var cssObject = $('selector').prop('style'); cssObject.removeProperty('left');` – ilgaar Oct 07 '13 at 11:13
  • https://developer.mozilla.org/en-US/docs/Web/CSS/left is described. Initial value is auto – Serkan KONAKCI Aug 19 '20 at 17:47

3 Answers3

352
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;
}
Curtis
  • 101,612
  • 66
  • 270
  • 352
27

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.

Jonas Äppelgran
  • 2,617
  • 26
  • 30
2
left: initial

This will also set left back to the browser default.

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

MORHERO
  • 106
  • 7