La etiqueta BDI

Aísla fragmentos de texto con direccionalidad desconocida o mixta, evitando conflictos en la representación visual de idiomas como árabe, hebreo o urdu dentro de contenido bidireccional.

La etiqueta <bdi> (Bidirectional Isolation) aísla fragmentos de texto con direccionalidad desconocida o mixta, evitando conflictos en la representación visual de idiomas como árabe, hebreo o urdu dentro de contenido bidireccional.

Sintaxis básica

<p>Texto en LTR <bdi>Texto con direccionalidad desconocida</bdi> continuación del texto.</p>

Casos de uso clave

Nombres de usuario internacionales

<ul>
  <li>Usuario: <bdi>محمد</bdi> - 120 puntos</li>
  <li>Usuario: <bdi>תומר</bdi> - 95 puntos</li>
  <li>Usuario: <bdi>JohnDoe123</bdi> - 80 puntos</li>
</ul>

Comentarios multilingües

<div class="comentario">
  <bdi>نور</bdi> escribió: "¡Excelente artículo! شكرًا"
</div>

Listas con datos mixtos

<p>Trending topics: 
  <bdi>#برمجة</bdi>,
  <bdi>#코딩</bdi>,
  <bdi>#プログラミング</bdi>
</p>

Comparación con elementos similares

Etiqueta Propósito Dirección Ejemplo
<bdi> Aislar dirección desconocida Automática <bdi>عربي</bdi>
<bdo> Forzar dirección específica Manual (dir="rtl") <bdo dir="rtl">Texto</bdo>
dir="auto" Detectar dirección Basado en contenido <span dir="auto">טקסט</span>

Accesibilidad

  • Los lectores de pantalla interpretan correctamente la direccionalidad aislada.

  • Mejor práctica: Combinar con dir="auto" cuando sea necesario:

<bdi dir="auto">مرحبا</bdi>

Ejemplos prácticos

Ejemplo 1: Sistema de comentarios

<div class="comentario">
  <h3><bdi>إيمان</bdi> dijo:</h3>
  <p>هذا الموقع رائع! شكرًا لكم</p>
  <small>Publicado el 15/10/2023</small>
</div>

Ejemplo 2: Mención de usuario en interfaz

<button class="notificación">
  <bdi>אביגיל</bdi> te ha enviado un mensaje
</button>

Errores comunes

Usar donde no hay necesidad

<!-- Incorrecto -->
<p>Hola <bdi>John</bdi></p> <!-- "John" es LTR predecible -->

<!-- Correcto -->
<p>Hola <bdi>יוחנן</bdi></p>

Confundir con <span> + CSS

<!-- Incorrecto (solo estilo, sin manejo de dirección) -->
<span style="color: red;">عربي</span>

<!-- Correcto -->
<bdi style="color: red;">عربي</bdi>

Uso avanzado con JavaScript

<script>
  // Insertar contenido dinámico con aislamiento bidireccional
  function agregarUsuario(nombre) {
    const lista = document.getElementById('usuarios');
    lista.innerHTML += `<li><bdi>${nombre}</bdi></li>`;
  }
 
  agregarUsuario('محمد');
  agregarUsuario('田中');
</script>

Estilización con CSS

bdi {
  font-weight: bold;
  color: #2c3e50;
  background-color: #f8f9fa;
  padding: 2px 5px;
  border-radius: 3px;
}

Buenas prácticas

  • Usar siempre en contenido generado por usuarios donde la dirección es impredecible.

  • Combinar con atributo dir cuando se conozca parcialmente la dirección:

<p dir="ltr">Message from <bdi>עדן</bdi>: "תודה רבה"</p>
  •  Evitar anidaciones innecesarias:
<!-- Incorrecto -->
<bdi><bdi>نص</bdi></bdi> 

Compatibilidad

Navegador Soporte
Chrome Sí (v16+)
Firefox Sí (v10+)
Safari Sí (v5.1+)
Edge Sí (v79+)

Conclusión:

La etiqueta <bdi> es esencial para:

  • Manejar contenido multilingüe complejo

  • Mantener la integridad visual en interfaces internacionales

  • Garantizar accesibilidad en textos bidireccionales

Úsala siempre que trabajes con contenido generado por usuarios en múltiples idiomas con diferentes direcciones de escritura.