2012-04-20 11 views
94

Nadpisuję CSS witryny do wersji RTL, gdy wybrany jest określony język.Jak usunąć właściwość Left, gdy pozycja: absolute?

Mam element, który musi mieć absolutne pozycjonowanie. W wersji LTR wykonuję left: 0px; i wyrównuje się do lewej; w wersji RTL chcę zrobić odwrotnie z right, ale właściwość left nie jest nadpisana, więc nadal pozostaje po lewej stronie.

  • Próbowałem hakowania z !important, ale to nie zadziałało.
  • Próbowałem ustawić left: none, ale to nie zadziałało.

Jak mogę ustawić go na none lub całkowicie go usunąć podczas przesuwania?

+0

Aby usunąć tylko określony atrybut css, taki jak 'left' użyj:' var cssObject = $ ('selector') .project ('style'); cssObject.removeProperty ('left'); ' – ilgaar

Odpowiedz

260
left:auto; 

To będzie domyślnie left powrót do domyślnej przeglądarki.


Więc jeśli masz Markup/CSS jak:

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

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

Ustawiając RTL, można zmienić na:

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

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

W przyszłości można by wykorzystać left: unset; wyłączające wartość lewej.

Na dzień dzisiejszy 4 listopada 2014 roku unset jest obsługiwany tylko w przeglądarce Firefox.

Read more about unset in MDN.

Domyślam się, że będziemy w stanie wykorzystać go około roku 2022, kiedy IE 11 jest prawidłowo wycofywane.

+12

+1 dla optymistycznego komentarza wycofania IE 11. –

+0

IE umieszcza "IE" w "I'll never dIE". –

+0

Pod koniec roku 2017 obsługuje go Microsoft Edge build 10565+ –

1
left: initial 

Będzie to również ustawić left powrotem do domyślnej przeglądarce.

Ale ważne jest, aby wiedzieć property: initial nie jest obsługiwany w IE.

Powiązane problemy