2011-01-08 6 views
2

私は3つの 'グループ'の列、左、中央、右を持つHTMLテーブルを持っています。テーブル内の1つのカラムをワードウィンドウでラップする方法

 
+----------------------------------+ 
| L-1 | L-2 | M   | R1 | R2 | 
+-----+-----+------------+----+----+ 
| x | z | aaaaaaa... | 1 | 2 | 
| y | w | bbbbbbb... | 3 | 4 | 
+-----+-----+------------+----+----+ 

真ん中に非常に長い文字列(「M」)の列があるとき、私は、ブラウザウィンドウの幅にテーブルを閉じ込めるしたいと思います。

wordwrap a very long stringで説明されているように、この列でCSSの単語区切りを使用しようとしました。

以下はHTML(例示)です。 CSSには、どうすればいいのですか(しかし明らかにそうではない)に関する私の考えが含まれています。

私は間違っていますか?

 
<html> 
<head> 
    <style type='text/css'> 
    table { /* nothing here - table is block, so should auto expand to as large as it can get without causing scrollbars? */ } 
    .left { text-align:center; } 
    .right { text-align:right; } 
    .middle { text-align:left; width:100%; /* expand this column to as large as it can get within table? */} 
    .wrap { word-wrap:break-word; width:100%; /* use up entire cell this div is contained in? */ } 
    </style> 
</head> 
<body> 
    <table> 
    <tr> 
    <th class=left>L-1</th> 
    <th class=left>L-2</th> 
    <th class=middle>M</th> 
    <th class=right>R-1</th> 
    <th class=right>R-2</th> 
    </tr> 
    <tr> 
    <td class=left>argle</td> 
    <td class=left>bargle</td> 
    <td class=middle><div class=wrap>wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww</div></td> 
    <td class=right>glyp</td> 
    <td class=right>glof</td> 
    </tr> 
    </table> 
</body> 
</html> 

今の結果にはワードラップではなく、テーブルが不必要右端に出て撮影し、ブラウザのウィンドウにスクロールバーを引き起こし、場所をとらないということです。

答えて

0

関連のある変更:

  • あなたのCSSにtable { table-layout:fixed }を追加しました。
  • tablewidth="100%"を追加しました。
  • divを削除し、.middletd.wrapクラスを追加しました。
  • 他の列にwidth=100属性を追加しました。

全HTML:

<html> 
<head> 
    <style type='text/css'> 
    table { table-layout:fixed; /* nothing here - table is block, so should auto expand to as large as it can get without causing scrollbars? */ } 
    .left { text-align:center; } 
    .right { text-align:right; } 
    .middle { text-align:left; /* expand this column to as large as it can get within table? */} 
    .wrap { word-wrap:break-word; /* use up entire cell this div is contained in? */ } 
    </style> 
</head> 
<body> 
    <table width="100%"> 
    <tr> 
    <th class=left width=100>L-1</th> 
    <th class=left width=100>L-2</th> 
    <th class=middle>M</th> 
    <th class=right width=100>R-1</th> 
    <th class=right width=100>R-2</th> 
    </tr> 
    <tr> 
    <td class=left>argle</td> 
    <td class=left>bargle</td> 
    <td class="middle wrap">wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww</td> 
    <td class=right>glyp</td> 
    <td class=right>glof</td> 
    </tr> 
    </table> 
</body> 
</html> 
+0

ありがとうございました! LとRの列にはユーザー入力が含まれているため、100ピクセルに固定することはできません。 – rosenfield

0

これは、一目見ただけで動作します。埋め込まれたiframeのは、静的な高さを持っているので、あなたが、別の行を追加

<!DOCTYPE html> 
<html> 
<head> 
    <style type='text/css'> 
    td { vertical-align:top; } 
    .left { text-align:center; } 
    .right { text-align:right; } 
    .middle, 
    .middle iframe { width:100%; } 
    </style> 
</head> 
<body> 
    <table> 
    <tr> 
    <th class=left>L-1</th> 
    <th class=left>L-2</th> 
    <th class=middle>M</th> 
    <th class=right>R-1</th> 
    <th class=right>R-2</th> 
    </tr> 
    <tr> 
    <td class=left>argle</td> 
    <td class=left>bargle</td> 
    <td class=middle><iframe style='border:0' src='data:text/html,%3Cbody style=%22margin:0;word-wrap:break-word%22%3Ewwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww%3C/body%3E'></iframe></td> 
    <td class=right>glyp</td> 
    <td class=right>glof</td> 
    </tr> 
    </table> 
</body> 
</html> 

しかし休憩。

1

これは完璧に動作するようです:

<!DOCTYPE html> 
<html> 
<head> 
    <style type='text/css'> 
    th,td { vertical-align:top; padding:0 5px; } 
    .left { text-align:center; } 
    .right { text-align:right; } 
    .middle { text-align:left; width:100%; } 
    </style> 
</head> 
<body> 
    <table> 
    <tr> 
    <th class=left>L-1</th> 
    <th class=left>L-2</th> 
    <th class=middle>M</th> 
    <th class=right>R-1</th> 
    <th class=right>R-2</th> 
    </tr> 
    <tr> 
    <td class=left>argle</td> 
    <td class=left>bargle</td> 
    <td class=middle>w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;w&#x200b;</td> 
    <td class=right>glyp</td> 
    <td class=right>glof</td> 
    </tr> 
    </table> 
</body> 
</html> 

上記のトリックは、ちょうどすべての今して非可視空白(&#x200b;)を挿入することです。

私は自分自身の質問に答えるのが嫌いです。だから、私は誰かがこれを閉じる前にもっときれいなものを思いつくのを待つでしょう。

+0

高尚な男は素晴らしい仕事をしてくれました。 –

関連する問題