¿Cómo redactar texto en HTML?


185

¿Cómo se puede ajustar un texto como el aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaque excede el ancho de un div(digamos 200px)?

Estoy abierto a cualquier tipo de solución como CSS, jQuery, etc.

Respuestas:


240

Prueba esto:

div {
    width: 200px;
    word-wrap: break-word;
}

1
¿Me equivoco o el ajuste de texto es propiedad de CSS3?
Gab Royer

13
Es CSS3, pero funciona en casi todos los navegadores principales, incluido IE5.5 -> 9 - caniuse.com/#search=word-wrap
Jon Hadley

32
Cuando se ajusta la palabra: palabra de interrupción; no funciona prueba word-break: break-all; / * este es un asesino * /
redochka

@redochka Pero cuando se usa word-break: break-all;en texto normal, rompe las palabras en el medio, lo cual es feo ... ¿No podemos tener una combinación de ambos comportamientos?
pawamoy

55
Importante: es word-break: break-ally no word-wrap: break-all. Fácil error de cometer
Simon_Weaver

58

En bootstrap 3, asegúrese de que el espacio en blanco no esté configurado como 'nowrap'.

div {
  width: 200px;
  word-break: break-all;
  white-space: normal;
}

Excelente. Intenté usar word-break: break-all en un cuerpo de panel de Twitter Bootstrap 3 pero nunca funcionó. Agregar espacio en blanco: normal fue la solución.
coolboyjules

55
Bien, yo white-space: normal;también lo necesitaba antes de que funcionara.
radbyx

56

Puede usar un guión suave como este:

aaaaaaaaaaaaaaa­aaaaaaaaaaaaaaa

Esto aparecerá como

aaaaaaaaaaaaaaa-
aaaaaaaaaaaaaaa

si el cuadro que contiene no es lo suficientemente grande, o como

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

si esto es.


18
Pero, ¿cómo sabrá dónde colocar el ­?
Kostas

Lo pones en palabras largas donde se pueden dividir. Incluso puede obtener esa información automáticamente de un diccionario adecuado.
Kim Stebel el

44
Pero, ¿qué tal galimatías como la del ejemplo? ¿Está bien para convertir aaaaaa...aaaaaen a­a­a­a­a­a­a...a­a­a­a?
Kostas

19
Exactamente lo que estaba buscando. Me gusta que sea demasiado tímido para hacer algo hasta que tenga que hacerlo ;-)
w00t

3
esto funciona bien si la palabra a envolver es overly.long.java.package.name o una cadena similar con muchos puntos. entonces puedes agregar el & shy; después de cada punto
dokaspar

28
   div {
    // set a width
    word-wrap: break-word
}

La word-wrapsolución ' ' solo funciona en IE y navegadores compatibles CSS3.

La mejor solución de navegador cruzado es utilizar el lenguaje del lado del servidor (php o lo que sea) para ubicar cadenas largas y colocar dentro de ellas a intervalos regulares la entidad html ​ Esta entidad rompe las palabras largas muy bien y funciona en todos los navegadores.

p.ej

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa​aaaaaaaaaaaaaaaaaaaaaaaaaaaaa

8
"coloque dentro de ellos a intervalos regulares la entidad html # 8203" pero luego, cuando intente copiar el texto y pegarlo en algún lugar, tendrá un carácter Unicode aleatorio en el medio
usuario102008

9

El único que funciona en IE, Firefox, Chrome, Safari y Opera si no hay espacios en la palabra (como una URL larga) es:

div{
    width: 200px;  
    word-break: break-all;
}

Encontré que esto es a prueba de balas.


9

Esto funciono para mi

word-wrap: normal;
word-break: break-all;
white-space: normal;
display: block;
height: auto;
margin: 3px auto;
line-height: 1.4;
-webkit-line-clamp: 1;
-webkit-box-orient: vertical;

6

Otra opción también está usando:

div
{
   white-space: pre-line;
}

Esto establecerá todos sus elementos div en todos los navegadores que admitan CSS1 (que es prácticamente todos los navegadores comunes desde IE 8)


Si tiene un <pre>elemento que desea que se ajuste la palabra, esto funciona word-breako word-wrapno.
Plutón

4

Navegador cruzado

.wrap
{
    white-space: pre-wrap; /* css-3 */    
    white-space: -moz-pre-wrap; /* Mozilla, since 1999 */
    white-space: -pre-wrap; /* Opera 4-6 */    
    white-space: -o-pre-wrap; /* Opera 7 */    
    word-wrap: break-word; /* Internet Explorer 5.5+ */
}

2

Agregue este CSS al párrafo.

style="width:420px; 
min-height:15px; 
height:auto!important; 
color:#666; padding: 1%; 
font-size: 14px; 
font-weight: normal;
word-wrap: break-word; 
text-align: left" 

2
Me gusta text-overflow:ellipsistanto como el próximo, pero no es una respuesta correcta a esta pregunta. Está buscando envolver palabras, no truncar el desbordamiento.
Spudley

1

Ejemplo de trucos CSS :

div {
    -ms-word-break: break-all;

    /* Be VERY careful with this, breaks normal words wh_erever */
    word-break: break-all;

    /* Non standard for webkit */
    word-break: break-word;

    -webkit-hyphens: auto;
    -moz-hyphens: auto;
    hyphens: auto;
}

Más ejemplos aquí .


0

Una solución del lado del servidor que funciona para mí es: ¿ $message = wordwrap($message, 50, "<br>", true);dónde $messageestá una variable de cadena que contiene la palabra / caracteres a dividir? 50 es la longitud máxima de cualquier segmento dado, y "<br>"es el texto que desea insertar cada (50) caracteres.


44
Esta solución no funcionará si 50 veces el ancho de los caracteres es mayor que el máximo requerido de 200 px. Sólo tiene que utilizar la función de zoom del navegador y que finalmente va a ver que se rompa ...
dokaspar

0

Prueba esto

div{
  display: block;
  display: -webkit-box;
  height: 20px;
  margin: 3px auto;
  font-size: 14px;
  line-height: 1.4;
  -webkit-line-clamp: 1;
  -webkit-box-orient: vertical;
  overflow: hidden;
  text-overflow: ellipsis;
}

la propiedad text-overflow: elipsis add ... y line-clamp muestran el número de líneas.


0

En HTML body intente:

<table>
    <tr>
        <td>
            <div style="word-wrap: break-word; width: 800px">
                Hello world, how are you? More text here to see if it wraps after a long while of writing and it does on Firefox but I have not tested it on Chrome yet. It also works wonders if you have a medium to long paragraph. Just avoid writing in the CSS file that the words have to break-all, that's a small tip.
            </div>
        </td>
    </tr>
</table>

En CSS cuerpo intente:

background-size: auto;

table-layout: fixed;


0

He usado bootstrap. Mi código html se parece a ...

<div class="container mt-3" style="width: 100%;">
  <div class="row">
    <div class="col-sm-12 wrap-text">
      <h6>
        text content
      </h6>
    </div>
  </div>
</div>

CSS

.wrap-text {
     text-align:justify;
}

Bootstrap tiene text-justifyclase, por lo que puede usarla en lugar de.wrap-text
barbsan



-2

Utilice el word-wrap:break-wordatributo junto con el ancho requerido. Principalmente, ponga el ancho en píxeles, no en porcentajes.

width: 200px;
word-wrap: break-word;

14
Esto es idéntico a la respuesta anterior. ¿Por qué molestarse?
Trgraglia
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.