Атрибут dir тега <body>
Описание
Атрибут dir определяет направление текста (text direction) для содержимого элемента. При применении к тегу <body> он задает базовое направление текста для всей страницы.
<body dir="rtl">
<h1>مرحبا بالعالم</h1> <!-- Арабский текст -->
<p>هذه صفحة باللغة العربية</p>
</body>
Допустимые значения:
| Значение | Описание |
|---|---|
ltr |
Слева направо (left-to-right) - по умолчанию |
rtl |
Справа налево (right-to-left) - для арабского, иврита и др. |
auto |
Автоматическое определение (на основе содержимого) |
Основные эффекты:
- Направление текста (выравнивание по умолчанию)
- Порядок колонок в таблицах
- Направление полосы прокрутки
- Порядок элементов в списках
- Расположение кнопок в диалогах
Рекомендации по использованию:
- Указывайте для всего документа при RTL-языках
- Для смешанного контента используйте
dir="auto" - Переопределяйте направление для отдельных элементов при необходимости
- Тестируйте верстку в обоих направлениях
- Сочетайте с соответствующим lang-атрибутом
Практический пример с переключением:
<body id="main-body" dir="ltr">
<button onclick="toggleDirection()">Переключить направление</button>
<div>Пример текста с направлением письма</div>
<script>
function toggleDirection() {
const body = document.getElementById('main-body');
body.dir = body.dir === 'ltr' ? 'rtl' : 'ltr';
}
</script>
</body>
Особенности RTL-верстки:
- Используйте логические свойства CSS (margin-inline-start вместо margin-left)
- Проверяйте расположение иконок и стрелок
- Учитывайте направление анимаций
- Тестируйте формы и таблицы
- Используйте CSS-переменные для упрощения переключения
CSS для RTL-поддержки:
/* Логические свойства */
.element {
margin-inline-start: 10px; /* Заменяет margin-left */
padding-inline-end: 20px; /* Заменяет padding-right */
text-align: start; /* Вместо text-align: left */
}
/* Стили для RTL-контекста */
[dir="rtl"] .sidebar {
float: right;
}
/* Автоматическое направление для контента */
[dir="auto"] {
unicode-bidi: isolate;
}
Совместимость с фреймворками:
- Bootstrap: Имеет встроенную RTL-поддержку
- Material UI: Требует настройки direction provider
- Tailwind: Поддерживает RTL через модификаторы (rtl:)
Важные замечания:
- Атрибут dir влияет только на направление текста, но не на язык
- Всегда указывайте язык документа (
langатрибут) - Некоторые браузеры могут автоматически определять направление
- Для сложных интерфейсов может потребоваться зеркалирование layout
- Проверяйте работу с клавиатурой в RTL-режиме
Примечание: Для многоязычных сайтов рекомендуется проектировать интерфейс с учетом обоих направлений письма с самого начала. Использование логических свойств CSS и продуманной структуры DOM значительно упростит поддержку RTL-версий.