¿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.

Satya Kalluri
fuente

Respuestas:

240

Prueba esto:

div {
    width: 200px;
    word-wrap: break-word;
}
Alan Haggai Alavi
fuente
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;
}
lukaserat
fuente
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.

Kim Stebel
fuente
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
Orr Siloni
fuente
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.

Kyle Dearle
fuente
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;
Amol
fuente
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)

Andrew Marais
fuente
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+ */
}
Eterno
fuente
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" 
Swapnil Godambe
fuente
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í .

Juraj Guniš
fuente
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.

deshbanks
fuente
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.

Vladimir Salguero
fuente
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;
Wesson2
fuente
0

Prueba esto

div {display: inline;}
Michael Mulikita
fuente
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;
}
Rahul Wasnik
fuente
Bootstrap tiene text-justifyclase, por lo que puede usarla en lugar de.wrap-text
barbsan
0

puedes usar este CSS

p {
  width: min-content;
  min-width: 100%;
}
Rashid Iqbal
fuente
0

tratar:

overflow-wrap: break-word;
Eden Sharvit
fuente
-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;
aks
fuente
14
Esto es idéntico a la respuesta anterior. ¿Por qué molestarse?
Trgraglia