Saat ini saya bertanya-tanya apa perbedaan antara keduanya. Ketika saya menggunakan keduanya, mereka tampaknya melanggar kata jika tidak pas wadah. Tetapi mengapa W3C membuat dua cara untuk melakukannya?
397
Spesifikasi W3 yang berbicara tentang ini tampaknya menyarankan bahwa word-break: break-all
adalah untuk mensyaratkan perilaku tertentu dengan teks CJK (Cina, Jepang, dan Korea), sedangkan word-wrap: break-word
perilaku yang lebih umum, tidak-sadar-CJK.
word-break
menentukan peluang soft wrap antara huruf ..." Spesifikasi W3C menggunakan teks CLK sebagai contoh , tetapi itu bukan satu-satunya tujuan penggunaannya. Adalah umum untuk digunakanword-break
bersama dengan string panjang (seperti URL atau baris kode) ketika Anda ingin mereka memecah lebar kontainer - terutama jika kontainer adalahpre
elemen atau sel tabel di manaword-wrap
properti mungkin tidak berfungsi seperti yang diharapkan .word-wrap: break-word
baru saja diubah menjadioverflow-wrap: break-word
word-break: break-all
Jadi, jika Anda memiliki banyak bentang ukuran tetap yang mendapatkan konten secara dinamis, Anda mungkin lebih suka menggunakan
word-wrap: break-word
, karena dengan cara itu hanya kata-kata kontinu yang terpecah di antara, dan jika itu adalah kalimat yang terdiri dari banyak kata, spasi disesuaikan untuk mendapatkan kata-kata utuh (tidak ada istirahat dalam sepatah kata pun).Dan jika itu tidak masalah, pilihlah.
sumber
Dengan
word-break
, kata yang sangat panjang dimulai pada titik itu harus dimulai dan itu rusak selama diperlukanNamun, dengan
word-wrap
, kata yang sangat panjang TIDAK AKAN mulai pada titik itu harus dimulai. itu membungkus ke baris berikutnya dan kemudian rusak selama diperlukansumber
break-word
. Saya menemukan bahwa itu menggangguword-break
url tapi tidakword-wrap
. Keduanya menggunakanbreak-word
mendapatkannya dari css-tricks.com/snippets/css/…word-wrap
telah berganti nama menjadioverflow-wrap
mungkin untuk menghindari kebingungan ini.Sekarang inilah yang kita miliki:
overflow-wrap
Nilai yang mungkin:
normal : Mengindikasikan bahwa baris hanya dapat terputus pada titik pemutusan kata normal.
break-word : Menunjukkan bahwa kata-kata yang biasanya tidak dapat dipecahkan dapat dipatahkan pada titik-titik arbitrer jika tidak ada titik istirahat yang dapat diterima dalam baris.
sumber .
istirahat
sumber .
Sekarang kembali ke pertanyaan Anda, perbedaan utama antara overflow-wrap dan word-break adalah bahwa yang pertama menentukan perilaku pada situasi overflow , sedangkan kemudian menentukan perilaku pada situasi normal (tidak ada overflow). Sebuah meluap situasi yang terjadi ketika wadah tidak memiliki cukup ruang untuk memegang teks. Mematahkan garis pada situasi ini tidak membantu karena tidak ada ruang (bayangkan sebuah kotak dengan lebar dan tinggi tetap).
Begitu:
overflow-wrap: break-word
: Pada situasi meluap, hancurkan kata-kata.word-break: break-all
: Pada situasi normal, cukup pecahkan kata-kata di akhir baris. Overflow tidak diperlukan.sumber
overflow-wrap
Sayaword-wrap
tidak membuat mereka membungkus. Agaknya karena sel-sel tabel tanpa lebar tetap bertambah alih-alih melimpah. Sebagai gantinya, meja menjadi lebar dan bertabrakan dengan elemen lain.word-break
di sisi lain memperbaikinya.table-layout: fixed;
(mungkin bersama-sama denganwidth
/max-width
) dapat membuatnya bekerjaoverflow-wrap/word-wrap
tetapi tergantung pada kasus penggunaan khusus; sama sepertiword-break
mungkin bukan yang Anda inginkan.Setidaknya di Firefox (per v24) dan Chrome (per v30), saat diterapkan ke konten dalam
table
elemen:word-wrap:break-word
tidak akan benar-benar menyebabkan kata-kata panjang untuk membungkus, yang dapat menghasilkan tabel melebihi batas wadahnya;
word-break:break-all
akan menghasilkan kata pembungkus, dan meja pas di dalam wadahnya.
demo jsfiddle .
sumber
table-layout:fixed
untuk membuat tabel tidak meluas saat menggunakanword-wrap:break-work
table-layout:fixed
word-wrap
bersama denganpre
tag di Firefox kecuali mereka memiliki lebar tetap yang ditentukan. Menggunakanword-break
menghasilkan hasil yang diinginkan. Saya menautkan ke jawaban ini dalam komentar yang diposting di atas karena menunjukkan penggunaan umum.Hanya ini yang bisa saya temukan. Tidak yakin apakah itu membantu, tetapi saya pikir saya akan menambahkannya ke dalam campuran.
WORD-WRAP
Properti ini menentukan apakah baris yang diberikan saat ini harus diputus jika konten melebihi batas dari kotak render yang ditentukan untuk suatu elemen (ini mirip dalam beberapa hal dengan properti 'klip' dan 'meluap' di maksud.) Properti ini hanya boleh berlaku jika elemen memiliki rendering visual, adalah elemen inline dengan tinggi / lebar eksplisit, benar-benar diposisikan dan / atau merupakan elemen blok.
WORD-BREAK
Properti ini mengontrol perilaku melanggar garis dalam kata-kata. Ini sangat berguna dalam kasus di mana banyak bahasa digunakan dalam suatu elemen.
sumber
word-wrap
&word-break
yang keduanya dapat memiliki nilaibreak-word
Ada perbedaan besar .
break-all
pada dasarnya tidak dapat digunakan untuk rendering teks yang dapat dibaca.Katakanlah Anda memiliki string
This is a text from an old magazine
dalam wadah yang hanya muat 6 karakter per baris.word-break: break-all
Seperti yang Anda lihat hasilnya mengerikan.
break-all
akan mencoba memasukkan karakter sebanyak mungkin ke dalam setiap baris, bahkan akan membagi kata 2 huruf seperti "is" menjadi 2 baris! Itu konyol. Inilah sebabnya mengapabreak-all
jarang digunakan.word-wrap: break-word
break-word
hanya akan memecah kata-kata yang terlalu panjang untuk muat pada wadah (seperti "majalah", yaitu 8 karakter, dan wadah hanya muat 6 karakter). Itu tidak akan pernah merusak kata-kata yang bisa cocok dengan wadah secara keseluruhan, sebaliknya itu akan mendorong mereka ke baris baru.sumber
word-break:break-all
:kata untuk terus berbatasan kemudian istirahat di baris baru.
word-wrap:break-word
:Pada awalnya, bungkus kata di baris baru kemudian terus ke perbatasan.
Contoh:
sumber
Dari spesifikasi W3 masing-masing — yang kebetulan sangat tidak jelas karena kurangnya konteks — dapat disimpulkan sebagai berikut:
word-break: break-all
adalah untuk memecah kata-kata asing, non-CJK (katakanlah Barat) dalam tulisan karakter CJK (Cina, Jepang atau Korea).word-wrap: break-word
adalah kata melanggar dalam bahasa non-campuran (katakan saja semata-mata Barat).Setidaknya, ini adalah niat W3. Apa yang sebenarnya terjadi adalah masalah besar dengan ketidakcocokan browser sebagai hasilnya. Berikut ini adalah tulisan yang sangat baik dari berbagai masalah yang terlibat .
Cuplikan kode berikut dapat berfungsi sebagai ringkasan tentang cara mencapai pembungkus kata menggunakan CSS di lingkungan lintas browser:
sumber
Selain dukungan browser komentar sebelumnya untuk
word-wrap
tampaknya menjadi sedikit lebih baik daripada untukword-break
.sumber