Estoy buscando una forma de varios navegadores para envolver porciones largas de texto que no tienen espacios en blanco (por ejemplo, URL largas) dentro de div con anchos predeterminados.salto de texto en css/js
Estas son algunas de las soluciones que he encontrado en la web y por qué No trabajo para mí:
- overflow: hidden/auto/desplazarse - Necesito todo el texto para ser visible sin desplazamiento. El div puede crecer verticalmente, pero no horizontalmente.
- Inyección & shy; en la cadena a través de js/server-side - & shy; es compatible con FF3 ahora, pero copiar y pegar una URL con & tímido; en el medio no funcionará en Safari. Además, que yo sepa, no existe un método limpio para medir el ancho del texto para descubrir las mejores desviaciones de cadena para agregar estos caracteres (hay una forma hacky, ver siguiente artículo). Otro problema es que hacer zoom en Firefox y Opera puede romper esto fácilmente.
- volcando texto en un elemento oculto y midiendo offsetWidth - relacionado con el elemento anterior, requiere agregar caracteres adicionales a la cadena. Además, medir la cantidad de interrupciones requeridas en un cuerpo de texto largo podría requerir fácilmente miles de costosas inserciones de DOM (una por cada longitud de subcadena), lo que podría congelar el sitio de manera efectiva.
- usando una fuente monoespaciada - de nuevo, el acercamiento puede arruinar los cálculos de ancho, y el texto no se puede diseñar libremente.
cosas que parecen prometedores, pero no son muy allá:
- word-wrap: break-palabra - es ahora part of CSS3 working draft, pero no es soportado por cualquiera de Firefox, Opera o Safari todavía. Esta sería la solución ideal si funciona en todos los navegadores de hoy :(
- inyectar <wbr> etiquetas en la cadena a través de js/del lado del servidor - copiar y pegar direcciones URL funciona en todos los navegadores, pero todavía no lo hacen tener una buena manera de medir dónde colocar los saltos. Además, esta etiqueta invalida HTML.
- añadiendo descansos después de cada carácter - es mejor que miles de inserciones DOM, pero aún no es ideal (agregar elementos DOM a un documento se come memoria y ralentiza las consultas del selector, entre otras cosas).
¿Alguien tiene más ideas sobre cómo abordar este problema?
'word-wrap: break-palabra;' funciona para Firefox 3.5+, pero no para elementos en línea como span. (incluso no en Firefox 5.0) Tiene que aplicar 'display: inline-block;' para expandir elementos con 'word-wrap: break-word;' – crispy