Estoy construyendo un sitio multilingüe, con el propietario ayudándome con algunas traducciones. Algunas de las frases que se muestran necesitan saltos de línea para mantener el estilo del sitio.
Desafortunadamente, el propietario no es un tipo de computadora, por lo que si ve que foo<br />bar
existe la posibilidad de que modifique los datos de alguna manera mientras está traduciendo.
¿Existe una solución CSS (además de cambiar el ancho) para aplicar a un elemento que se rompería después de cada palabra?
(Sé que puedo hacer esto en PHP, pero me pregunto si hay un truco ingenioso que no conozco en CSS para lograr lo mismo, tal vez en las características de CJK).
EDITAR
Intentaré diagramar lo que está sucediendo:
---------------- ----------------
| Short Word | | Gargantuan |
| | | Word |
---------------- ----------------
La palabra larga se rompe automáticamente, la palabra corta no. Quiero que se vea así:
---------------- ----------------
| Short | | Gargantuan |
| Word | | Word |
---------------- ----------------
fuente
Respuestas:
Utilizar
donde
<parent-width>
es el ancho del elemento padre (o un valor alto arbitrario que no cabe en una línea). De esa manera, puede estar seguro de que incluso hay un salto de línea después de una sola letra. Funciona con Chrome / FF / Opera / IE7 + (y probablemente incluso IE6 ya que también admite el espaciado de palabras).fuente
.parent { word-spacing: 100px; }
dónde100px
está el ancho del elemento padre? El problema es que esta solución no funciona si tienes un padre fluido.word-spacing: 100000px
y no tendrá que preocuparse de que el padre sea fluido en términos de ancho. Establecer un espacio entre palabras del 100% tendría sentido (habría sido el 100% del ancho principal), pero los valores expresados en porcentaje no son compatibles con esa propiedad css.word-spacing: 2em;
y en un ancho móvil, quiero que sean de una sola línea:word-spacing: unset;
La respuesta dada por @HursVanBloob funciona solo con contenedores primarios de ancho fijo, pero falla en el caso de contenedores de ancho fluido .
Probé muchas propiedades, pero nada funcionó como se esperaba. Finalmente llegué a la conclusión de que dar
word-spacing
un valor muy grande funciona perfectamente bien.o, para los navegadores modernos se puede utilizar el CSS
vw
unidad (ancho visual en% del tamaño de la pantalla).fuente
Se describe una solución alternativa en una oración separada para una palabra por línea , aplicando
display:table-caption;
al elementofuente
Intenta usar
white-space: pre-line;
. Crea un salto de línea siempre que aparezca un salto de línea en el código, pero ignora los espacios en blanco adicionales (pestañas y espacios, etc.).Primero, escriba sus palabras en líneas separadas en su código:
Luego aplique el estilo al elemento que contiene las palabras.
Sin embargo, tenga cuidado , cada salto de línea en el código dentro del elemento creará un salto de línea. Por lo tanto, escribir lo siguiente dará como resultado un salto de línea adicional antes de la primera palabra y después de la última palabra:
Hay un gran artículo sobre CSS Tricks que explica los otros atributos de espacio en blanco.
fuente
white-space
se puede usar para responder la pregunta. Lo siento, pero no veo cómo.white-space: pre;
" para mostrar esos saltos de línea como<pre>
lo haría una etiqueta? Eso podría funcionar, y un salto de línea debería parecer más natural para los traductores que a<br />
. Trataré de editar tu respuesta para agregarla :)white-space: pre-line;
probablemente sería más apropiado, ya que ignora los espacios en blanco adicionales en su código. Actualizaré la respuesta.white-space: pre;
para IE 7.Si desea poder elegir entre diferentes soluciones, además de las respuestas dadas ...
Un método alternativo es darle al contenedor un ancho de 0 y asegurarse de que el desbordamiento sea visible. Entonces, cada palabra se desbordará y estará en su propia línea.
O puede usar uno de esos
width
valores recién propuestos , siempre que aún existan para cuando lea esto.fuente
No puede orientar cada palabra en CSS. Sin embargo, con un poco de jQuery probablemente puedas.
Con jQuery puede ajustar cada palabra en
<span>
ay luego establecer CSS span paradisplay:block
que lo coloque en su propia línea.En teoría, por supuesto: P
fuente
:first-child
truco o algo por ahí ...https://jsfiddle.net/bm3Lfcod/1/
Para aquellos que buscan una solución que funcione dentro de un contenedor principal flexible con un elemento secundario que sea flexible en ambas dimensiones. p.ej. botones de la barra de navegación.
fuente
CSS
propiedad que puedas dar. Decir una propiedad que podría causarbrowser reflow
Me enfrenté al mismo problema, y ninguna de las opciones aquí me ayudó. Algunos servicios de correo no admiten estilos específicos. Aquí está mi versión, que resolvió el problema y funciona en todos los lugares que verifiqué:
O usando CSS:
fuente
La mejor solución es la
word-spacing
propiedad.Agregue el
<p>
en un contenedor con un tamaño específico (ejemplo300px
) y después de que tenga que agregar ese tamaño como el valor en el espacio entre palabras.HTML
CSS
De esta manera, su oración siempre se romperá y se establecerá en una columna, pero el con del párrafo será dinámico.
Aquí un ejemplo de Codepen
fuente
En mi caso,
funcionó a la perfección, espero que ayude a cualquier otro recién llegado como yo.
fuente