☰
ELEMENTOR / PRACTICE

Логические CSS-свойства для RTL в Elementor: отступы без отдельных правил

Логические CSS-свойства для RTL в Elementor: отступы без отдельных правил

При создании мультиязычного сайта в Elementor обычные свойства margin-left, margin-right, padding-left и padding-right могут создавать лишнюю работу. Они привязаны к физической стороне экрана, поэтому не меняются автоматически, когда для страницы или блока включается направление письма RTL.

Логические CSS-свойства описывают не левую или правую сторону, а начало и конец строки. Благодаря этому один и тот же CSS может работать для украинской и английской версий в направлении LTR, а также для арабской версии в направлении RTL.

Чем физические свойства отличаются от логических

В традиционном CSS отступ слева задают с помощью margin-left или padding-left. В RTL это может быть не та сторона, которую пользователь воспринимает как начало строки. Логические свойства учитывают направление: в 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. Затем проверьте направление документа, адаптивные стили и компоненты с иконками или абсолютным позиционированием. Такой подход уменьшает количество исключений и упрощает поддержку мультиязычного сайта.

← Все материалы Elementor