Элементы bdi и bdo
Изолируйте направление текста и переопределяйте его с помощью bdi и bdo
«Элементы bdi и bdo» — бесплатный урок HTML Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения HTML Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс HTML Academy содержит 4 уроков всего.
Зачем нужны элементы управления двунаправленным текстом
Обычно двунаправленный алгоритм Unicode хорошо обрабатывает текст со смешанным направлением, но иногда его нужно переопределить — например, чтобы изолировать введённое пользователем имя и не дать ему изменить направление окружающего текста или принудительно задать направление в блоке кода.
Элемент bdi
<bdi> (изоляция двунаправленного текста) обрабатывает своё содержимое как отдельный контекст двунаправленного текста. Направление текста внутри <bdi> не может влиять на направление текста снаружи, и наоборот.
<p>User <bdi>{username}</bdi> posted at 12:34</p>Пример: имена пользователей
Список пользователей с английскими и арабскими именами может привести к тому, что арабское имя изменит направление окружающего текста. Если заключить каждое имя в <bdi>, оно будет изолировано: макет останется согласованным независимо от направления конкретного имени.
Элемент bdo
<bdo dir="rtl"> (переопределение двунаправленного текста) принудительно задаёт направление своего содержимого, переопределяя естественное определение направления. Используйте его, когда нужно отобразить текст в неестественном направлении — например, чтобы вывести фрагменты кода в LTR внутри страницы RTL.
<bdo dir="ltr">someEnglishCode();</bdo>Отличие от dir
Атрибут dir у обычного элемента задаёт базовое направление, но внутри по-прежнему применяется алгоритм двунаправленного текста. <bdo> отключает этот алгоритм для своего содержимого: каждый символ строго следует указанному направлению независимо от письменности.
Когда использовать bdi
Используйте его всегда, когда вставляете созданный пользователем текст в окружающую оболочку интерфейса: имена в заголовках чата, имена пользователей в комментариях, названия в элементах ленты. Изоляция гарантирует, что введённый пользователем текст не повлияет на компоновку оболочки.
Когда использовать bdo
Редко. Основное оправданное применение — обучение работе с двунаправленным текстом (показ того, как строка выглядит в обратном порядке) или исправление данных с некорректно заданными тегами, когда естественное определение направления даёт неправильный визуальный порядок.
В сочетании с dir="auto"
Для пользовательского содержимого с неизвестным направлением объедините <bdi dir="auto"> для двойной защиты: автоматическое определение выбирает базовое направление по содержимому, а bdi не даёт этому направлению влиять на окружающий текст.
Поддержка браузерами
bdi и bdo поддерживаются всеми современными браузерами. Они входят в HTML5 и уже много лет работают стабильно. В старых версиях IE нет поддержки bdi, но они фактически устарели; современные сайты могут свободно использовать bdi.
Доступность
Программы чтения с экрана учитывают изоляцию направления текста: содержимое внутри <bdi> озвучивается собственным языковым голосом (если задан lang), и окружающий контекст не влияет на него. bdi также помогает преобразованию текста в речь создавать подходящие паузы вокруг изолированных фраз.
Распространённый шаблон: i18n в шаблонах
В шаблонах с заполнителями ("Добро пожаловать, {name}") следует заключать заполнитель в <bdi>: Welcome, <bdi>{name}</bdi>. Любое имя пользователя — английское, арабское или смешанное — отображается правильно и не нарушает остальную часть приветствия.
Проверка знаний
В чём практическая разница между и ?
Краткое содержание
bdi изолирует направление текста раздела, не позволяя ему влиять на окружающий текст; используйте его для встроенного пользовательского содержимого, например имён в шаблонах. bdo принудительно задаёт определённое направление, переопределяя bidi; за пределами учебных примеров он требуется редко. Для безопасной обработки пользовательского текста на неизвестных языках объединяйте bdi с dir="auto".
Часто задаваемые вопросы
Урок «Элементы bdi и bdo» бесплатный?
Да — полный текст урока «Элементы bdi и bdo» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс HTML Academy, подпишись на CoddyKit PRO. Курс HTML Academy содержит 4 уроков всего.
Чему я научусь в уроке «Элементы bdi и bdo»?
Изолируйте направление текста и переопределяйте его с помощью bdi и bdo Ты практикуешь HTML Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать HTML Academy?
Предыдущий опыт не требуется. HTML Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.
Сколько времени занимает урок «Элементы bdi и bdo»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке HTML Academy?
Да. Каждый урок HTML Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Атрибут lang и экранные дикторы
- dir=rtl для текста справа налево
- Элементы bdi и bdo
- charset и Unicode: обработка специальных символов