Bagaimana cara membungkus teks dalam HTML?

185

Bagaimana teks seperti aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayang melebihi lebar div(katakanlah 200px) dapat dibungkus?

Saya terbuka untuk segala jenis solusi seperti CSS, jQuery, dll.

Satya Kalluri
sumber

Jawaban:

240

Coba ini:

div {
    width: 200px;
    word-wrap: break-word;
}
Alan Haggai Alavi
sumber
1
Apakah saya salah atau word-wrap adalah hak milik CSS3?
Gab Royer
13
Ini CSS3, tetapi berfungsi di hampir semua browser utama, termasuk IE5.5 -> 9 - caniuse.com/#search=word-wrap
Jon Hadley
32
Saat bungkus kata: break-word; tidak berfungsi, coba kata-break: break-all; / * yang ini adalah pembunuh * /
redochka
@redochka Tetapi ketika menggunakan word-break: break-all;kemudian dalam teks normal itu memecah kata-kata di tengah, yang jelek ... Tidak bisakah kita memiliki campuran dari kedua perilaku?
pawamoy
5
Penting: Ini word-break: break-alldan tidak word-wrap: break-all. Kesalahan mudah dibuat
Simon_Weaver
58

Pada bootstrap 3, pastikan spasi putih tidak diatur sebagai 'nowrap'.

div {
  width: 200px;
  word-break: break-all;
  white-space: normal;
}
lukaserat
sumber
Bagus. Saya mencoba menggunakan kata-istirahat: istirahat-semua pada badan panel Bootstrap 3 Twitter tetapi tidak pernah berhasil. Menambahkan white-space: normal adalah perbaikannya.
coolboyjules
5
Bagus, saya perlu white-space: normal;juga sebelum bekerja.
radbyx
56

Anda dapat menggunakan tanda hubung lunak seperti:

aaaaaaaaaaaaaaa­aaaaaaaaaaaaaaa

Ini akan muncul sebagai

aaaaaaaaaaaaaaa-
aaaaaaaaaaaaaaa

jika kotak berisi tidak cukup besar, atau sebagai

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

jika memang.

Kim Stebel
sumber
18
Tapi bagaimana Anda tahu di mana harus meletakkannya ­?
Kostas
Anda memasukkannya ke dalam kata-kata panjang di mana mereka mungkin terpecah. Anda bahkan dapat memperoleh informasi itu secara otomatis dari kamus yang sesuai.
Kim Stebel
4
Tapi bagaimana dengan omong kosong seperti dalam contoh? Apakah saya tetap bisa berubah aaaaaa...aaaaamenjadi a­a­a­a­a­a­a...a­a­a­a?
Kostas
19
Persis apa yang saya cari. Saya suka itu terlalu malu untuk melakukan apa pun sampai harus ;-)
w00t
3
ini berfungsi dengan baik jika kata yang akan dibungkus adalah overly.long.java.package.name atau string serupa dengan banyak titik. maka Anda dapat menambahkan & pemalu; setelah setiap titik.
dokaspar
28
   div {
    // set a width
    word-wrap: break-word
}

Solusi ' word-wrap' hanya berfungsi di IE dan browser mendukung CSS3.

Solusi lintas browser terbaik adalah dengan menggunakan bahasa sisi server Anda (php atau apa pun) untuk mencari string panjang dan menempatkan di dalamnya secara berkala entitas html Entitas ​ ini memecah kata-kata panjang dengan baik, dan bekerja pada semua browser.

misalnya

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa​aaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Orr Siloni
sumber
8
"letakkan di dalamnya secara berkala entitas html # 8203" tetapi kemudian ketika Anda mencoba menyalin teks dan menempelkannya di suatu tempat, Anda akan memiliki karakter Unicode acak di tengah
user102008
9

Satu-satunya yang berfungsi di IE, Firefox, chrome, safari, dan opera jika tidak ada spasi di kata (seperti URL yang panjang) adalah:

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

Saya menemukan ini sebagai bukti-peluru.

Kyle Dearle
sumber
9

Ini berhasil untuk saya

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
sumber
6

Opsi lain juga menggunakan:

div
{
   white-space: pre-line;
}

Ini akan mengatur semua elemen div Anda di semua browser yang mendukung CSS1 (yang hampir semua browser umum sejauh IE 8)

Andrew Marais
sumber
Jika Anda memiliki <pre>elemen yang ingin Anda balas kata, ini berfungsi dan word-breakatau word-wraptidak.
Pluto
4

Lintas browser

.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+ */
}
Abadi
sumber
2

Tambahkan CSS ini ke paragraf.

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
sumber
2
Saya suka text-overflow:ellipsissama seperti orang berikutnya, tetapi itu bukan jawaban yang benar untuk pertanyaan ini. Dia ingin membungkus kata, tidak memotong luapan.
Spudley
1

Contoh dari Trik 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;
}

Lebih banyak contoh di sini .

Juraj Guniš
sumber
0

Solusi sisi server yang berfungsi untuk saya adalah: di $message = wordwrap($message, 50, "<br>", true);mana $messagevariabel string berisi kata / karakter yang harus dipecah. 50 adalah panjang maksimal dari setiap segmen yang diberikan, dan "<br>"merupakan teks yang ingin Anda masukkan setiap (50) karakter.

deshbanks
sumber
4
Solusi ini tidak akan berfungsi jika 50 kali lebar karakter lebih dari maksimum yang dibutuhkan 200px. Cukup gunakan fungsi pembesaran peramban Anda dan pada akhirnya Anda akan melihatnya rusak ...
dokaspar
0

Coba ini

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;
}

properti text-overflow: ellipsis add ... dan line-clamp menunjukkan jumlah baris.

Vladimir Salguero
sumber
0

Dalam tubuh HTML coba:

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

Dalam tubuh CSS coba:

background-size: auto;

table-layout: fixed;
Wesson2
sumber
0

Coba ini

div {display: inline;}
Michael Mulikita
sumber
0

Saya telah menggunakan bootstrap. Kode html saya terlihat seperti ..

<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
sumber
Bootstrap memiliki text-justifykelas, jadi Anda dapat menggunakannya sebagai ganti.wrap-text
barbsan
0

Anda dapat menggunakan CSS ini

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

mencoba:

overflow-wrap: break-word;
Eden Sharvit
sumber
-2

Gunakan word-wrap:break-wordatribut bersama dengan lebar yang dibutuhkan. Terutama, letakkan lebar dalam piksel, bukan dalam persentase.

width: 200px;
word-wrap: break-word;
aks
sumber
14
Ini identik dengan jawaban di atas. Mengapa mengganggu?
trgraglia