Bagaimana saya bisa memaksa tali panjang tanpa ada yang kosong untuk dibungkus?


193

Saya memiliki string panjang (urutan DNA). Itu tidak mengandung karakter spasi putih.

Sebagai contoh:

ACTGATCGAGCTGAAGCGCAGTGCGATGCTTCGATGATGCTGACGATGCTACGATGCGAGCATCTACGATCAGTCGATGTAGCTAGTAGCATGTAGTGA

Apa yang akan menjadi pemilih CSS untuk memaksa teks ini untuk dibungkus dengan html:textareaatau dalam xul:textbox?


17
Ironisnya string tidak istirahat di Stack Overflow baik ...
splattne

Jawaban:


273

untuk elemen blok:

<textarea style="width:100px; word-wrap:break-word;">
  ACTGATCGAGCTGAAGCGCAGTGCGATGCTTCGATGATGCTGACGATGCTACGATGCGAGCATCTACGATCAGTC
</textarea>

untuk elemen sebaris:

<span style="width:100px; word-wrap:break-word; display:inline-block;"> 
   ACTGATCGAGCTGAAGCGCAGTGCGATGCTTCGATGATGCTGACGATGCTACGATGCGAGCATCTACGATCAGTC
</span>


Ini didukung hanya di IE, Safari, dan FF3.1 (alpha).
Adam Bellaire

1
ini hanya berfungsi di gelombang browser baru - lihat caniuse.com/#search=word-break
Michal Bernhard

9
@Michael: Jawabannya menggunakan aturan "word-wrap", bukan yang "word-break"; yang pertama didukung seperti yang digunakan di hampir setiap browser yang digunakan saat ini. Di mana "dukungan parsial" diindikasikan, tampaknya nilai "break-word" untuk aturan "word-wrap" masih layak.
Robusto

2
Properti diganti namanya menjadi overflow-wrapsejak standar, tetapi wrod-wrapditerapkan secara luas.
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

1
Juga bekerja dengan "display: table-cell", diperlukan dalam kasus saya
César León

107

Tempatkan spasi nol lebar pada titik di mana Anda ingin istirahat. Ruang nol-lebar adalah &#8203;dalam HTML. Sebagai contoh:

ACTGATCG&#8203;AGCTGAAG&#8203;CGCAGTGC&#8203;GATGCTTC&#8203;GATGATGC


4
Saran bagus, saya telah belajar sesuatu yang baru hari ini, terima kasih!
Matteo Conta

2
Terima kasih atas solusi ini. Sedang kesulitan mendapatkan sesuatu seperti ini untuk bekerja di dalam sebuah tabel, dan solusi ini adalah satu-satunya yang saya temukan bekerja di IE, Firefox dan Chrome.
Farinha

1
+1, ini berfungsi lebih baik karena mencakup lebih banyak kasus, meskipun pertanyaannya untuk kasus yang lebih khusus.
montrealist

2
Anda juga dapat menggunakan <wbr>tag, yang melayani tujuan yang sama untuk memberikan peluang jeda baris opsional.
justisb

7
Perhatikan apakah Anda melakukan ini dalam hal-hal yang mungkin disalin dan ditempelkan.
alex

42

Inilah beberapa jawaban yang sangat berguna:

Bagaimana mencegah kata-kata panjang dari melanggar div saya?

untuk menghemat waktu Anda, ini dapat diselesaikan dengan css:

white-space: -moz-pre-wrap; /* Mozilla */
white-space: -hp-pre-wrap; /* HP printers */
white-space: -o-pre-wrap; /* Opera 7 */
white-space: -pre-wrap; /* Opera 4-6 */
white-space: pre-wrap; /* CSS 2.1 */
white-space: pre-line; /* CSS 3 (and 2.1 as well, actually) */
word-wrap: break-word; /* IE */
word-break: break-all;

4
Beri ini +1 karena ini menyebutkan word-break: break-all; yang bekerja untuk saya di IE9
Nick Benedict

3
word-break: break-all;adalah satu-satunya yang bekerja di Android WebView untuk saya.
Stan

Terima kasih untuk word-break: break-all;!
Lonnie Best

18

Bagi saya ini bekerja,

<td width="170px" style="word-wrap:break-word;">
  <div style="width:140px;overflow:auto">
    LONGTEXTGOESHERELONGDIVGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESLONGTEXTGOESHERELONGDIVLONGTEXTLONGTEXT
  </div>
</td>

Anda juga bisa menggunakan div di dalam div lain td. Saya menggunakan overflow:auto, karena menampilkan semua teks di browser Opera dan IE saya.


Ini tidak berhasil untuk saya. Saya harus memindahkan properti "word-wrap" ke div dan menghapus properti "overflow". Dengan perubahan ini, berfungsi.
danigonlinea

12

Saya tidak berpikir Anda bisa melakukan ini dengan CSS. Alih-alih, secara teratur 'panjang kata' di sepanjang string, masukkan tanda hubung lunak HTML:

ACTGATCG&shy;AGCTGAAG&shy;CGCAGTGC&shy;GATGCTTC&shy;GATGATGC&shy;TGACGATG

Ini akan menampilkan tanda hubung di akhir baris, di mana ia membungkus, yang mungkin atau mungkin tidak seperti yang Anda inginkan.

Catatan Safari tampaknya membungkus string panjang dengan cara apa pun <textarea>, tidak seperti Firefox.


Wow, bahkan tidak tahu tentang itu. Rapi!
Daniel Schaffer

Saya juga tidak tahu tentang itu. Dobel rapi!
Karl

11

Gunakan metode CSS untuk memaksa membungkus string yang tidak memiliki spasi putih. Tiga metode:

1) Gunakan properti white-space CSS. Untuk menutupi ketidakkonsistenan browser, Anda harus mendeklarasikannya dengan beberapa cara. Jadi cukup masukkan string looooong Anda ke beberapa elemen level blok (misalnya, div, pre, p) dan berikan elemen itu css berikut:

some_block_level_tag {
    white-space: pre;           /* CSS 2.0 */
    white-space: pre-wrap;      /* CSS 2.1 */
    white-space: pre-line;      /* CSS 3.0 */
    white-space: -pre-wrap;     /* Opera 4-6 */
    white-space: -o-pre-wrap;   /* Opera 7 */
    white-space: -moz-pre-wrap; /* Mozilla */
    white-space: -hp-pre-wrap;  /* HP Printers */
    word-wrap: break-word;      /* IE 5+ */
}

2) gunakan force-wrap mixin dari Compass .

3) Saya hanya melihat ini juga dan saya pikir mungkin juga berfungsi (tapi saya perlu menguji dukungan browser lebih lengkap):

.break-me {
    word-wrap: break-word;
    overflow-wrap: break-word;
}

Referensi: membungkus konten


Ya, # 3 di sana berfungsi di semua browser modern dan IE6 + yang lebih lama.
Graeck

1
# 3 hanya berfungsi jika ada peluang untuk istirahat dengan kata-kata. String yang terlalu panjang tidak putus (diuji pada Chrome 52.0.2743.82).
collapsar

8

Cara saya untuk pergi (ketika tidak ada cara yang tepat untuk memasukkan karakter khusus) melalui CSS:

-ms-word-break: break-all;
word-break: break-all;
word-break: break-word;
-webkit-hyphens: auto;
-moz-hyphens: auto;
-ms-hyphens: auto;
hyphens: auto;

Seperti yang ditemukan di sini: http://kenneth.io/blog/2012/03/04/word-wrapping-hypernation-using-css/ dengan beberapa penelitian tambahan yang dapat ditemukan di sana.


5

Agar word-wrap:break-word;dapat bekerja untuk saya, saya harus memastikan bahwa displaydiatur ke block, dan bahwa lebar ditetapkan pada elemen. Di Safari, itu harus memiliki ptag dan widthharus ditetapkan ex.


3

Jika Anda menggunakan PHP maka fungsi wordwrap berfungsi dengan baik untuk ini: http://php.net/manual/en/function.wordwrap.php

Solusi CSS word-wrap: break-word; tampaknya tidak konsisten di semua browser.

Bahasa sisi server lain memiliki fungsi yang serupa - atau dapat dibuat dengan tangan.

Inilah cara kerja fungsi PHP wordwrap:

$string = "ACTGATCGAGCTGAAGCGCAGTGCGATGCTTCGATGATGCTGACGATGCTACGATGCGAGCATCTACGATCAGTCGATGTAGCTAGTAGCATGTAGTGA";

$wrappedstring = wordwrap($string,50,"&lt;br&gt;",true);

Ini membungkus string pada 50 karakter dengan tag <br>. Parameter 'true' memaksa string untuk dipotong.


Anda dapat mencampur solusi ini dengan solusi Remy untuk menyisipkan spasi nol-lebar: wordwrap ($ longtext, 5, "& # 8203;", true);
MV.

3
<textarea style="width:100px; word-wrap:break-word;">
  place your text here
</textarea>

3

Gunakan <wbr>tag:

ACTGATCG<wbr>AGCTGAAG<wbr>CGCAGTGC<wbr>GATGCTTC<wbr>GATGATGC

Saya pikir ini lebih baik daripada menggunakan ruang dengan lebar nol &#8203;yang dapat menyebabkan masalah saat Anda menyalin teks.


2

Dalam kasus di mana tabel tidak berukuran tetap, baris di bawah ini berfungsi untuk saya:

style="width:110px; word-break: break-all;"

1

hanya pengaturan widthdan penambahan yang floatberfungsi untuk saya :-)

width:100%;
float:left;

Ini adalah jawaban yang lengkap dan mudah saya pikir pria yang memposting masalah ini awalnya harus menggunakan lebar: 100%; dengan float: left; pada elemen yang berisi string itu dan masalahnya akan teratasi. lalu mengapa jawaban ini tidak relevan?
TechBrush.Org

karena pria yang memposting masalah ini tidak berpikir solusi Anda bekerja lima tahun yang lalu.
Pierre

2
Ya, tetapi forum ini bukan hanya tentang orang itu, tetapi tentang forum ini dan orang lain yang menghadapi masalah serupa seperti saya hari ini juga dapat memperoleh manfaat dari hal yang sama.
TechBrush.Org
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.