空白のない長い文字列を強制的にラップするにはどうすればよいですか?


193

長い紐(DNA配列)を持っています。空白文字は含まれていません。

例えば:

ACTGATCGAGCTGAAGCGCAGTGCGATGCTTCGATGATGCTGACGATGCTACGATGCGAGCATCTACGATCAGTCGATGTAGCTAGTAGCATGTAGTGA

このテキストをa html:textareaまたはaでラップするように強制するCSSセレクターは何xul:textboxですか?


17
皮肉なことに、文字列はスタックオーバーフローでも壊れません...
splattne

回答:


273

ブロック要素の場合:

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

インライン要素の場合:

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


IE、Safari、FF3.1(アルファ版)でのみサポートされています。
アダムベレア

1
これはブラウザの新しい波でのみ機能します-caniuse.com/#search=word-breakを
ミハルベルンハルト

9
@Michael:答えは「ワードブレーク」ルールではなく「ワードラップ」ルールを使用します。前者は、現在使用されているほとんどすべてのブラウザーで使用されているとおりにサポートされてます。「部分的なサポート」が示されている場合、「ワードラップ」ルールの「ブレークワード」値はまだ有効であるように見えます。
ロブスト

2
このプロパティはoverflow-wrap、標準で名前が変更されましたwrod-wrapが、広く実装されています。
Ciro Santilli郝海东冠状病六四事件法轮功

1
、私の場合はnecesaryました。また、「テーブルセルの表示」で動作します
セザール・レオン

107

改行を許可するポイントに、幅がゼロのスペースを配置します。ゼロ幅のスペースは&#8203;HTMLにあります。例えば:

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


4
今日は新しいことを学びました。ありがとうございました。
Matteo Conta 2012年

2
この解決策をありがとう。このようなものをテーブル内で機能させるのに苦労していました。このソリューションは、IE、Firefox、Chromeで機能する唯一のソリューションです。
Farinha

1
+1、質問がより特定のケースであったとしても、より多くのケースをカバーするため、これはよりうまく機能します。
モントリオール主義者、2012

2
または、<wbr>タグを使用することもできます。このタグは、オプションの改行の機会を提供するのと同じ目的を果たします。
justisb 2013

7
コピーして貼り付けられる可能性のあるものでこれを行うかどうかを確認します。
アレックス2014

42

ここにいくつかの非常に役立つ答えがあります:

長い単語が私のdivを壊すのを防ぐ方法は?

時間を節約するために、これは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
+1これはword-break:break-all;について言及しているためです。それはIE9で私のために働きました
Nick Benedict

3
word-break: break-all;私にとってAndroid WebViewで機能したのはこれだけでした。
2016

ありがとうございましたword-break: break-all;
ロニーベスト

18

私にとってこれはうまくいきます

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

の代わりに別のdiv内でdivを使用することもできtdます。overflow:autoOperaとIEブラウザーの両方ですべてのテキストが表示されるため、私はを使用しました。


これは私にはうまくいきませんでした。「word-wrap」プロパティをdivに移動して、「overflow」プロパティを削除する必要があります。この変更により、動作します。
danigonlinea

12

CSSでこれを行うことはできないと思います。代わりに、文字列に沿った通常の「単語の長さ」で、HTMLソフトハイフンを挿入します。

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

これにより、行の終わりで折り返されるハイフンが表示されます。これは必要な場合とそうでない場合があります。

<textarea>Firefoxとは異なり、Safariは長い文字列をとにかくラップしているようです。


わあ、それさえ知りませんでした。きちんと!
ダニエルシャファー

それも知りませんでした。ダブルニート!
Karl

11

CSSメソッドを使用して、空白を含まない文字列を強制的にラップします。3つの方法:

1)CSSの空白スペースプロパティを使用します。ブラウザーの不整合をカバーするには、いくつかの方法で宣言する必要があります。だからあなたのlooooong文字列をいくつかのブロックレベル要素(例えば、div、pre、p)に入れて、その要素に次のCSSを与えてください:

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)Compassのforce-wrap mixinを使用します。

3)私もこれを調べていただけで、うまくいくと思います(ただし、ブラウザサポートをより完全にテストする必要があります)。

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

参照:コンテンツの折り返し


はい、#3はすべての最新のブラウザで動作し、さらに古いIE6 +でも動作します。
Graeck 2013

1
#3は言葉で割る機会がある場合にのみ機能します。過度に長い文字列は壊れません(Chrome 52.0.2743.82でテスト済み)。
collapsar

8

私の行く方法(特別な文字を挿入する適切な方法がない場合)は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;

ここにあるように:http : //kenneth.io/blog/2012/03/04/word-wrapping-hypernation-using-css/ いくつかの追加の研究がそこにあります。


5

word-wrap:break-word;私のために働くために、私はdisplayがに設定されblock、幅が要素に設定されていることを確認する必要がありました。Safariでは、pタグを付け、widthをに設定する必要がありましたex


3

PHPを使用している場合、wordwrap関数はこれに適しています。 //php.net/manual/en/function.wordwrap.php

CSSソリューション word-wrap: break-word;は、すべてのブラウザーで一貫しているようには見えません。

他のサーバー側の言語にも同様の機能があり、手動で作成することもできます。

PHPのwordwrap関数の仕組みは次のとおりです。

$string = "ACTGATCGAGCTGAAGCGCAGTGCGATGCTTCGATGATGCTGACGATGCTACGATGCGAGCATCTACGATCAGTCGATGTAGCTAGTAGCATGTAGTGA";

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

これは、<br>タグで文字列を50文字で囲みます。'true'パラメータは文字列を強制的にカットします。


このソリューションとRemyのソリューションを組み合わせて、幅ゼロのスペースを挿入できます。
MV。

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

3

<wbr>タグを使用:

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

これは&#8203;、テキストをコピーするときに問題を引き起こす可能性があるゼロ幅のスペースを使用するよりも優れていると思います。


2

テーブルが固定サイズでない場合、下の行が私のために働きました:

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

1

設定widthして追加するだけでfloatうまくいきました:-)

width:100%;
float:left;

これは完全で簡単な答えです。この問題を投稿した人は、最初はwidth:100%を使用する必要があると思います。float:left; その文字列を含む要素と彼の問題は解決されます。では、なぜこの回答は関係がないのでしょうか?
TechBrush.Org 2014

この問題を投稿したその人は、あなたの解決策が5年前に機能したとは思わないからです。
ピエール14

2
はい、しかし、このフォーラムはその男についてだけではなく、このフォーラムについてだけでなく、今日のような私のような同様の問題に直面している他の人々も同じことから利益を得ることができます。
TechBrush.Org 2014
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.