Під час створення мультимовного сайту в Elementor звичайні властивості margin-left, margin-right, padding-left і padding-right можуть створювати зайву роботу. Вони прив’язані до фізичної сторони екрана, тому не змінюються автоматично, коли для сторінки або блоку вмикається напрямок письма RTL.
Логічні CSS-властивості описують не ліву чи праву сторону, а початок і кінець рядка. Завдяки цьому той самий CSS може працювати для української та англійської версій у напрямку LTR, а також для арабської версії у напрямку RTL.
Чим фізичні властивості відрізняються від логічних
У традиційному CSS відступ зліва задають через margin-left або padding-left. Для RTL це може бути не та сторона, яку користувач сприймає як початок рядка. Логічні властивості враховують direction: у LTR inline-start відповідає лівій стороні, а в RTL — правій.
Властивість inline описує горизонтальний напрямок тексту, а block — напрямок розміщення блоків. Тому padding-inline відповідає горизонтальним внутрішнім відступам, а padding-block — вертикальним.
- margin-inline — горизонтальні зовнішні відступи з обох боків.
- padding-inline — горизонтальні внутрішні відступи з обох боків.
- margin-inline-start — відступ на початку рядка.
- margin-inline-end — відступ у кінці рядка.
- padding-block — вертикальні внутрішні відступи.
- inset-inline-start — позиціонування від початку рядка для елементів із position.
.content-block {
padding-inline: 24px;
margin-inline: auto;
}
Як додати логічні властивості в Elementor
Спочатку виберіть контейнер або віджет, до якого потрібно застосувати правило. У його налаштуваннях додайте CSS-клас, наприклад content-block, без крапки. Крапка використовується вже в CSS-селекторі.
CSS можна додати через Custom CSS, якщо така можливість доступна у вашій конфігурації Elementor, або через загальні стилі теми чи WordPress. Важливо розміщувати правило там, де воно завантажуватиметься для потрібних сторінок і не буде випадково обмежене лише редактором.
Після збереження відкрийте сторінку у звичайному режимі, а не тільки в редакторі Elementor. Перевірте, чи клас присутній у HTML і чи не перекривається правило стилями віджета, теми або адаптивними налаштуваннями.
- У полі класів в Elementor вказуйте content-block, а не .content-block.
- Один клас можна використовувати для групи однотипних блоків.
- Для одного виняткового елемента краще використовувати окремий клас, а не змінювати загальне правило.
- Після змін очистіть кеш плагіна кешування, CDN або браузера, якщо старі стилі продовжують відображатися.
.content-block {
padding-inline: 24px;
margin-inline: auto;
}
Точкові відступи для початку та кінця рядка
Коли однаковий відступ зліва і справа не підходить, використовуйте inline-start та inline-end. Це корисно для карток, іконок, декоративних елементів і текстових блоків, які мають зміщуватися разом із напрямком письма.
Наприклад, у LTR margin-inline-start: 40px створить відступ зліва. У RTL той самий запис створить відступ справа. Окремих правил для арабської версії не потрібно, якщо напрямок RTL коректно заданий на сторінці або контейнері.
- inline-start — початок рядка: ліворуч у LTR і праворуч у RTL.
- inline-end — кінець рядка: праворуч у LTR і ліворуч у RTL.
- block-start і block-end пов’язані з вертикальним напрямком, а не з лівою чи правою стороною.
- Логічні властивості не визначають напрямок самостійно — вони лише реагують на вже встановлений direction.
.content-block {
margin-inline-start: 40px;
padding-inline-end: 16px;
}
Приклади для типових елементів Elementor
Логічні властивості зручно застосовувати до секцій, контейнерів, кнопок, карток і декоративних елементів. Вони особливо корисні там, де елемент має візуальний зв’язок із початком або кінцем текстового рядка.
Для кнопки з іконкою можна задати проміжок і внутрішні відступи без прив’язки до лівої або правої сторони. Якщо іконка або її позиція змінюється в RTL окремим правилом, перевірте, чи не дублює це логіку flex-контейнера.
- Для контентної області: padding-inline та margin-inline.
- Для бейджа або декоративної лінії: inset-inline-start або inset-inline-end.
- Для рамки з одного боку: border-inline-start або border-inline-end.
- Для скруглення кутів: border-start-start-radius та інші логічні варіанти, якщо дизайн має залежати від напрямку.
- Для фіксованого елемента: inset-inline-start замість left, а inset-inline-end замість right.
.icon-label {
padding-inline-start: 12px;
border-inline-start: 3px solid #2f6fed;
}
.badge {
position: absolute;
inset-inline-end: 16px;
inset-block-start: 16px;
}
Як правильно налаштувати та перевірити напрямок RTL
Логічні властивості працюють коректно лише тоді, коли браузер знає напрямок тексту. Для арабської версії це зазвичай має бути direction: rtl на рівні HTML-документа або відповідного мовного контейнера. Для української та англійської — direction: ltr.
Не варто примусово встановлювати direction: rtl для кожного віджета. Це може змінити вирівнювання тексту, порядок flex-елементів і поведінку вкладених компонентів. Краще задавати напрямок на рівні сторінки, мовної версії або великого контейнера, а локальні винятки створювати лише за потреби.
- Перевірте сторінку в LTR і RTL, а не лише в одному напрямку.
- Окремо протестуйте мобільну, планшетну та десктопну ширину.
- Перевірте меню, картки, кнопки, слайдери, форми та блоки з position: absolute.
- У DevTools подивіться обчислені значення margin і padding та переконайтеся, що потрібне правило не перекреслене.
- Перевірте довгі арабські заголовки й тексти: вони можуть змінити висоту блоків навіть за правильних відступів.
[dir="rtl"] .content-block {
/* Додавайте цей блок лише для винятків,
якщо логічних властивостей недостатньо */
}
[dir="ltr"] {
direction: ltr;
}
[dir="rtl"] {
direction: rtl;
}
Поширені помилки та обмеження
Найчастіша помилка — змішування фізичних і логічних властивостей в одному компоненті. Наприклад, padding-inline-start може бути перекритий пізнішим padding-left або адаптивним правилом Elementor. Визначте єдиний підхід для конкретного компонента й перевірте порядок завантаження стилів.
Ще одна проблема виникає, коли direction змінюють на дочірньому елементі, але очікують, що весь макет автоматично перебудується. Напрямок тексту, порядок flex-елементів і розташування абсолютно позиціонованих елементів можуть потребувати окремої перевірки.
Логічні властивості не замінюють усі RTL-налаштування. Іконки зі стрілками, фонові зображення, SVG, слайдери та спеціальні анімації можуть мати власну орієнтацію. Їх потрібно тестувати окремо.
- Не ставте крапку перед назвою класу в полі Elementor.
- Не використовуйте margin-inline: auto, якщо елемент не має обмеженої ширини або не повинен центруватися.
- Не плутайте padding-inline з padding-block: перший змінює горизонтальні, другий — вертикальні відступи.
- Не дублюйте однакові правила для LTR і RTL без потреби.
- Не вважайте, що правильні відступи автоматично виправлять порядок елементів у складному flex або grid-макеті.
.content-block {
margin-inline: auto;
max-inline-size: 960px;
padding-inline: 24px;
padding-block: 32px;
}
Поширені запитання
Чи працюють логічні CSS-властивості в Elementor без окремого RTL-плагіна?
Так, самі CSS-властивості не залежать від Elementor-плагіна. Потрібно лише, щоб напрямок сторінки або контейнера був правильно визначений як ltr чи rtl, а CSS додавався в місце, яке застосовується до потрібного елемента.
Чи потрібно замінювати всі margin-left і padding-right на логічні властивості?
Не обов’язково. Замінюйте їх там, де відступ залежить від початку або кінця рядка та має змінюватися в RTL. Фізичні властивості можна залишати для декоративних або навмисно фіксованих позицій.
Чому margin-inline-start не змінюється під час перемикання мови?
Найчастіше для сторінки не змінюється атрибут direction або dir, або правило перекривається іншим CSS. Перевірте HTML-контейнер, обчислене значення direction і порядок стилів у DevTools.
Чи можна використовувати логічні властивості для position: absolute?
Так. Замість left і right можна використовувати inset-inline-start та inset-inline-end, а замість top і bottom — inset-block-start та inset-block-end. Це допомагає прив’язати елемент до логічної, а не фізичної сторони.
Висновок
Логічні CSS-властивості роблять Elementor-макети стійкішими до зміни мовного напрямку. Вони дають змогу описувати відступи через початок і кінець рядка, тому один набір правил працює для LTR та RTL.
Почніть із заміни горизонтальних margin і padding на margin-inline, padding-inline, inline-start та inline-end. Потім перевірте напрямок документа, адаптивні стилі й компоненти з іконками або абсолютним позиціонуванням. Такий підхід зменшує кількість винятків і спрощує підтримку мультимовного сайту.