Як видалити властивість Left, коли позиція: абсолютна?


137

Я змінюю CSS сайту на RTL-версію, коли вибирається конкретна мова.

У мене є елемент, який повинен мати абсолютне позиціонування. У версії LTR я так left: 0px;і вирівнюється зліва; у RTL-версії я хочу зробити протилежне right, але leftвластивість не перекривається, тому вона залишається зліва.

  • Я намагався зламати !important, але це не вийшло.
  • Я спробував налаштувати left: none, але це не вийшло.

Як я можу встановити його на "ні" або повністю видалити його, переосмисливши його?


Щоб видалити лише специфічний атрибут css, такий як leftвикористання:var cssObject = $('selector').prop('style'); cssObject.removeProperty('left');
ilgaar

Відповіді:


321
left:auto;

Це за замовчуванням leftповернеться до типового для браузера.


Тож якщо у вас є розмітка / CSS як:

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

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

Під час встановлення RTL ви можете змінити:

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

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

20

Надалі можна було б використати left: unset;для зміни значення ліворуч.

На сьогодні 4 листопада 2014 року unsetпідтримується лише Firefox.

Докладніше про вимкнення читайте в MDN

Я здогадуюсь, що ми зможемо використовувати його близько 2022 року, коли IE 11 буде належним чином припинено.


IE ставить "IE" у "I'll never die".
adam rowe

1
Наприкінці 2017 року Microsoft Edge build 10565+ підтримує її
Тарас Яремків

Щойно використав це для очищення rightпозиції для
чуйних

1
left: initial

Це також leftповернеться до типового для браузера.

Але важливо знати property: initial, що не підтримується в IE.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.