私はdiv
sとspan
sでテキストをラップするためにWord-wrap: break-Word
を使っています。ただし、テーブルセルでは機能しないようです。 1行2列のテーブルをwidth:100%
に設定しました。上記のWord-wrap
でスタイル付けされていても、列内のテキストは折り返されません。テキストがセルの境界を超えて移動します。これはFirefox、Google Chrome、およびInternet Explorerで発生します。
これが、ソースがどのように見えるかです。
td {
border: 1px solid;
}
<table style="width: 100%;">
<tr>
<td>
<div style="Word-wrap: break-Word;">
Looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong Word
</div>
</td>
<td><span style="display: inline;">Short Word</span></td>
</tr>
</table>
上記の長いWordは私のページの境界よりも大きいですが、上記のHTMLではうまくいきません。以下のtext-wrap:suppress
とtext-wrap:normal
を追加する提案を試みましたが、どちらも助けにはなりませんでした。
以下はInternet Explorerで私のために働きます。 table-layout:fixed
CSS属性の追加に注意してください
td {
border: 1px solid;
}
<table style="table-layout: fixed; width: 100%">
<tr>
<td style="Word-wrap: break-Word">
LongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongWord
</td>
</tr>
</table>
<td style="Word-break:break-all;">longtextwithoutspace</td>
または
<span style="Word-break:break-all;">longtextwithoutspace</span>
ロングショットですが、 Firebug (または同様のもの)を使用して、次の規則を誤って継承していないことを確認してください。
white-space:nowrap;
これは上書きする可能性があります /あなたの指定された改行動作。
これを行うための良い方法はありません。一番近いのは "overflow:hidden;"を追加することです。テーブルの周りのdivにテキストを失う。本当の解決策はしかしテーブルを捨てることのようです。 divと相対位置を使用して、<table>
の遺産を除いて、同じ効果を得ることができました
2015年アップデート: これは、この回答が必要な私のような人達のためのものです。 6年後、これはすべての貢献者のおかげでうまくいきます。
* { // this works for all but td
Word-wrap:break-Word;
}
table { // this somehow makes it work for td
table-layout:fixed;
width:100%;
}
すでに述べたように、テキストをdiv
内に置くことはほとんどうまくいきます。あなたはwidth
のdiv
を指定する必要があります。これは静的なレイアウトにとっては幸運なことです。
これはFF 3.6、IE 8、Chromeで動作します。
<td>
<div style="width: 442px; Word-wrap: break-Word">
<!-- Long Content Here-->
</div>
</td>
https://jsfiddle.net/krf0v6pw/
_ html _
<table>
<tr>
<td class="overflow-wrap-hack">
<div class="content">
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
</div>
</td>
</tr>
</table>
_ css _
.content{
Word-wrap:break-Word; /*old browsers*/
overflow-wrap:break-Word;
}
table{
width:100%; /*must be set (to any value)*/
}
.overflow-wrap-hack{
max-width:1px;
}
利点:
overflow-wrap:break-Word
の代わりに Word-break:break-all
を使用します。これは、最初にスペースで分割しようとし、Wordがコンテナーよりも大きい場合にのみWordを遮断するため、より効果的です。table-layout:fixed
は必要ありません。通常の自動サイズ調整を使用してください。width
または固定max-width
をピクセル単位で定義する必要はありません。必要に応じて、親の%
を定義してください。FF57、Chrome62、IE11、Safari11でテスト済み
コードを変更する
Word-wrap: break-Word;
に
Word-break:break-all;
例
<table style="width: 100%;">
<tr>
<td>
<div style="Word-break:break-all;">longtextwithoutspacelongtextwithoutspace Long Content, Long Content, Long Content, Long Content, Long Content, Long Content, Long Content, Long Content, Long Content, Long Content</div>
</td>
<td><span style="display: inline;">Short Content</span>
</td>
</tr>
</table>
の問題
<td style="Word-break:break-all;">longtextwithoutspace</td>
text が いくつかのスペースを持っていると、あまりうまくいかないでしょう。
<td style="Word-break:break-all;">long text with andthenlongerwithoutspaces</td>
Wordのandthenlongerwithoutspaces
が1行でセルに収まるがlong text with andthenlongerwithoutspaces
が収まらない場合、長いWordは折り返されるのではなく2行に分割されます。
別の解決策:毎回長いWordにU + 200B( _ zwsp _ )、U + 00AD( ソフトハイフン )、またはU + 200C( _ zwnj _ )を挿入20文字目(ただし、下記の警告を参照):
td {
border: 1px solid;
}
<table style="width: 100%;">
<tr>
<td>
<div style="Word-wrap: break-Word;">
Looooooooooooooooooo­oooooooooooooooooooo­oooooooooooooooooooo­oooooooooooooooooooo­oooooooooooooooooooo­oooooooooooooooooooo­oooooooooooooooooooo­oooooooooooooooooooo­oooooooooooooooooooo­oooooooooooooong Word
</div>
</td>
<td><span style="display: inline;">Short Word</span></td>
</tr>
</table>
警告 :長さ0の文字を追加しても読み取りに影響はありません。ただし、クリップボードにコピーされたテキストには影響します(これらの文字ももちろんコピーされます)。クリップボードのテキストが後でWebアプリケーションの検索機能で使用されると、検索は中断されます。この解決策はいくつかのよく知られたWebアプリケーションで見られるかもしれませんが可能な限り避けてください。
警告 :追加の文字を挿入するときは、書記内で複数のコードポイントを区切らないでください。詳細については https://unicode.org/reports/tr29/#Grapheme_Cluster_Boundaries を参照してください。
IE 8とChrome 13でテスト済み。
<table style="table-layout: fixed; width: 100%">
<tr>
<td>
<div style="Word-wrap: break-Word;">
longtexthere
</div>
</td>
<td><span style="display: inline;">Foo</span></td>
</tr>
</table>
これにより、テーブルはページの幅に合わせられ、各列は幅の50%を占めるようになります。
最初の列でもっとページを占有したい場合は、次の例のようにtd
にwidth: 80%
を追加し、80%を選択した割合で置き換えます。
<table style="table-layout: fixed; width: 100%">
<tr>
<td style="width:80%">
<div style="Word-wrap: break-Word;">
longtexthere
</div>
</td>
<td><span style="display: inline;">Foo</span></td>
</tr>
</table>
必要なことは、達成したいレイアウトに応じて<td>
または<div>
内の<td>
に幅を追加することだけです。
例えば:
<table style="width: 100%;" border="1"><tr>
<td><div style="Word-wrap: break-Word; width: 100px;">looooooooooodasdsdaasdasdasddddddddddddddddddddddddddddddasdasdasdsadng Word</div></td>
<td><span style="display: inline;">Foo</span></td>
</tr></table>
または
<table style="width: 100%;" border="1"><tr>
<td width="100" ><div style="Word-wrap: break-Word; ">looooooooooodasdsdaasdasdasddddddddddddddddddddddddddddddasdasdasdsadng Word</div></td>
<td><span style="display: inline;">Foo</span></td>
</tr></table>
チェックアウト このデモ
<table style="width: 100%;">
<tr>
<td><div style="Word-break:break-all;">LongWordLongWordLongWordLongWordLongWordLongWordLongWordLongWordLongWordLongWordLongWordLongWordLongWordLongWordLongWordLongWordLongWordLongWordLongWordLongWordLongWordLongWordLongWordLongWordLongWordLongWordLongWordLongWordLongWordLongWordLongWordLongWordLongWordLongWordLongWordLongWordLongWordLongWordLongWordLongWord</div>
</td>
<td>
<span style="display: inline;">Foo</span>
</td>
</tr>
</table>
これは read へのリンクです。
賞金を獲得した答えは正しいですが、 テーブルの最初の行に結合/結合されたセルがある場合はうまくいきません (すべてのセルの幅が等しくなります)。
この場合、正しく表示するにはcolgroup
タグとcol
タグを使用する必要があります。
<table style="table-layout: fixed; width: 200px">
<colgroup>
<col style="width: 30%;">
<col style="width: 70%;">
</colgroup>
<tr>
<td colspan="2">Merged cell</td>
</tr>
<tr>
<td style="Word-wrap: break-Word">VeryLongWordInThisCell</td>
<td style="Word-wrap: break-Word">Cell 2</td>
</tr>
</table>
<p style="overflow:hidden; width:200px; Word-wrap:break-Word;">longtexthere<p>
指定された(相対的でない)幅でブロック要素(div
)にWord-wrap:break-Word;
を設定する必要があるようです。例:
<table style="width: 100%;"><tr>
<td><div style="display:block; Word-wrap: break-Word; width: 40em;">loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong Word</div></td>
<td><span style="display: inline;">Foo</span></td>
</tr></table>
またはAbhishek Simonの提案に従ってWord-break:break-all
を使用してください。
これは私のために働く:
<style type="text/css">
td {
/* CSS 3 */
white-space: -o-pre-wrap;
Word-wrap: break-Word;
white-space: pre-wrap;
white-space: -moz-pre-wrap;
white-space: -pre-wrap;
}
そしてテーブル属性は次のとおりです。
table {
table-layout: fixed;
width: 100%
}
</style>
テーブルの枠線が必要ない場合は、これを適用します。
table{
table-layout:fixed;
border-collapse:collapse;
}
td{
Word-wrap: break-Word;
}
テーブルはデフォルトで折り返されるので、テーブルセルの表示がtable-cell
であることを確認してください。
td {
display: table-cell;
}
Firefox、Google Chrome、Internet Explorer 7-9で動作するように思われる解決策を見つけました。片側に長いテキストがある2列の表レイアウトを実行します。私はよく似た問題を探してみましたが、あるブラウザでうまくいったことが他のブラウザを壊したり、テーブルにタグを追加したりすることは悪いコーディングのようです。
これにはテーブルを使用しませんでした。 DL DT救助へのDD。少なくとも2列のレイアウトを修正するために、それは基本的に用語集/辞書/言葉を意味する設定です。
<dl>
<dt>test1</dt>
<dd>Fusce ultricies mi nec orci tempor sit amet</dd>
<dt>test2</dt>
<dd>Fusce ultricies</dd>
<dt>longest</dt>
<dd>
Loremipsumdolorsitametconsecteturadipingemipsumdolorsitametconsecteturaelit.Nulla
laoreet ante et turpis vulputate condimentum. In in elit nisl. Fusce ultricies
mi nec orci tempor sit amet luctus dui convallis. Fusce viverra rutrum ipsum,
in sagittis eros elementum eget. Class aptent taciti sociosqu ad litora
torquent per conubia nostra, per.
</dd>
</dl>
そしていくつかの一般的なスタイリング。
dl {
margin-bottom:50px;
}
dl dt {
background:#ccc;
color:#fff;
float:left;
font-weight:bold;
margin-right:10px;
padding:5px;
width:100px;
}
dl dd {
margin:2px 0;
padding:5px 0;
Word-wrap:break-Word;
margin-left:120px;
}
フローティングのワードラップと余白を使って、私はまさに必要なものを手に入れました。これを他の人と共有したいと思っただけで、2列の定義スタイルのレイアウトを持つ人が役に立つかもしれません。
私はテーブルセルでワードラップを使ってみましたが、それは主にここで壊れたInternet Explorerブラウザを直そうとするInternet Explorer 9(そしてもちろんFirefoxとGoogle Chrome)でしか動かなかった。
style = "テーブルレイアウト:固定、幅:98%、ワードラップ:break-Word"
<table bgcolor="white" id="dis" style="table-layout:fixed; width:98%; Word-wrap:break-Word" border="0" cellpadding="5" cellspacing="0" bordercolordark="white" bordercolorlight="white" >
デモ - http://jsfiddle.net/Ne4BR/749/
これは私にとってとてもうまくいった。私はテーブルがウェブブラウザ上で100%を超える原因となる長いリンクを持っていました。 IE、Chrome、Android、Safariでテスト済み。
Google ChromeおよびFirefox(Internet Explorerではテストされていません)で機能する解決策は、display: table-cell
をブロック要素として設定することです。