Come posso mandare a capo o spezzare testo / parola lunghi in un intervallo di larghezza fissa?


104

Voglio creare un intervallo con una larghezza fissa che quando digito qualsiasi cosa nell'intervallo come <span>lgasdfjksdajgdsglkgsadfasdfadfasdfadsfasdfasddkgjk</span>una lunga stringa di testo non spaziato, le parole si interrompono o vanno a capo alla riga successiva.

Qualche idea?

Risposte:


192

Puoi usare la proprietà CSS word-wrap:break-word;, che romperà le parole se sono troppo lunghe per la larghezza dell'intervallo.

span { 
    display:block;
    width:150px;
    word-wrap:break-word;
}
<span>VeryLongLongLongLongLongLongLongLongLongLongLongLongExample</span>


1
Funziona bene per il controllo dell'etichetta asp.net. Grazie!
Etlds

41
L'aggiunta white-space: normalaiuta a sovrascrivere lo stile esterno che potrebbe intralciare :) .. inline-blockfunziona altrettanto beneblock
Katia

Che ne dici di rompere due campate che si trovano all'interno di un elemento di blocco?
Daniel Springer

Per coloro che hanno ancora problemi dopo aver usato questa risposta, assicurati di specificare una 'larghezza' altrimenti potrebbe non funzionare
Staccato

Deve avere una larghezza per sapere dove rompere
DFSFOT

40

Prova a seguire il CSS aggiungendo white-space:

span {
    display: block;
    word-wrap:break-word;
    width: 50px;
    white-space: normal
}

5
Grazie! Non riuscivo a capire perché il mio testo non andava mai a capo! lo spazio bianco era il motivo.
mdiehl13

1
Il mio problema è stato risolto anche dopo aver inserito:white-space: normal
majorBummer

Ecco una tabella di riferimento nel caso abbiate bisogno di spazi bianchi e wrapping: css-tricks.com/almanac/properties/w/whitespace
Hritik

16

Come questo

DEMO

  li span{
    display:block;
    width:50px;
    word-break:break-all;
}

il mio amico che voglio quando metto la larghezza dello span: 50px; i valori nel mio intervallo vengono visualizzati solo in 50px e altri valori vanno alla riga successiva e mostrano in 50px !!!
محمد کثیری

1
@ mamal10 Controlla la soluzione di Maxime Lorant.
Mr_Green

3

Per impostazione predefinita a span è un inlineelemento ... quindi non è il comportamento predefinito.

Puoi fare in spanmodo che si comporti in questo modo aggiungendo display: block;al tuo CSS.

span {
    display: block;
    width: 100px;
}


0

Giusto per estendere l'ambito pratico della domanda e come appendice alle risposte date: a volte potrebbe essere necessario specificare un po 'di più i selettori.

Definendo l'intero intervallo come display: inline-block potresti avere difficoltà a visualizzare le immagini.

Pertanto preferisco definire uno span in questo modo:

span {
  display:block;
  width:150px;
  word-wrap:break-word;      
}
p span, a span,
h1 span, h2 span, h3 span, h4 span, h5 span {
  display:inline-block;
}
img{
  display:block;
}

0

Nel mio caso, display: block stava rompendo il design come previsto.

La max-widthproprietà mi ha appena salvato.

e per lo styling, puoi anche usare text-overflow: ellipsis.

il mio codice era

max-width: 255px
overflow:hidden
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.