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.

Jawaban:


240

Coba ini:

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

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

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.


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

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.


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;

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)


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+ */
}

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" 

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 .


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.


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.


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;


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

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


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

14
Ini identik dengan jawaban di atas. Mengapa mengganggu?
trgraglia
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.