Wie entferne ich die Eigenschaft Left, wenn Position: absolut?

137

Ich überschreibe das Site-CSS auf eine RTL-Version, wenn eine bestimmte Sprache ausgewählt wird.

Ich habe ein Element, das absolut positioniert sein muss. In der LTR-Version mache ich das left: 0px;und es ist nach links ausgerichtet; In der RTL-Version möchte ich das Gegenteil tun right, aber die leftEigenschaft wird nicht überschrieben, sodass sie weiterhin links bleibt.

  • Ich habe versucht, mit zu hacken !important, aber das hat nicht funktioniert.
  • Ich habe versucht einzustellen left: none, aber das hat nicht funktioniert.

Wie kann ich es entweder auf "Keine" setzen oder es beim Überschreiben vollständig entfernen?

eric.itzhak
quelle
So entfernen Sie nur ein bestimmtes CSS-Attribut wie: leftVerwenden Sie:var cssObject = $('selector').prop('style'); cssObject.removeProperty('left');
Ilgaar

Antworten:

321
left:auto;

Dadurch wird standardmäßig die Standardeinstellung leftdes Browsers verwendet.


Wenn Sie also Ihr Markup / CSS haben als:

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

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

Wenn Sie RTL einstellen, können Sie Folgendes ändern:

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

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

In Zukunft würde man verwenden, left: unset;um den Wert von left zu deaktivieren.

Ab heute wird der 4. November 2014 unsetnur noch in Firefox unterstützt.

Lesen Sie mehr über unset in MDN.

Ich vermute, wir können es um das Jahr 2022 verwenden, wenn IE 11 ordnungsgemäß ausläuft.

Jonas Äppelgran
quelle
IE setzt den "IE" in "Ich werde nie sterben".
Adam Rowe
1
Ende 2017 unterstützt Microsoft Edge Build 10565+ es
Taras Yaremkiv
Ich habe dies nur verwendet, um eine rightPosition für
reaktionsschnelle
1
left: initial

Dies wird auch eingestellt left die Standardeinstellung des Browsers wiederhergestellt.

Aber wichtig zu wissen, property: initialwird im IE nicht unterstützt.

MORHERO
quelle