[解決済み] 100%幅のテーブルがdivコンテナからはみ出る [重複]。
2022-04-29 23:06:56
質問
<余談
htmlテーブルが親コンテナからはみ出るという問題があります。
.page {
width: 280px;
border:solid 1px blue;
}
.my-table {
word-wrap: break-word;
}
.my-table td {
border:solid 1px #333;
}
<div class="page">
<table class="my-table">
<tr>
<th>Header Text</th>
<th>Col 1</th>
<th>Col 2</th>
<th>Col 3</th>
<th>Col 4</th>
<th>Header Text</th>
</tr>
<tr>
<td>An archipelago is a chain or cluster of islands. The word archipelago is derived from the Greek ἄρχι- – arkhi and πέλαγος – pélagosthrough the Italian arcipelago. In Italian, possibly following a tradition of antiquity, the Arcipelago (from medieval Greek *ἀρχιπέλαγος) was the proper name for the Aegean Sea and, later, usage shifted to refer to the Aegean Islands (since the sea is remarkable for its large number of islands). It is now used to refer to any island group or, sometimes, to a sea containing a large number of scattered islands such as the Aegean Sea.[1]</td>
<td>some data</td>
<td>some data</td>
<td>some data</td>
<td>some data</td>
<td>An archipelago is a chain or cluster of islands. The word archipelago is derived from the Greek ἄρχι- – arkhi and πέλαγος – pélagosthrough the Italian arcipelago. In Italian, possibly following a tradition of antiquity, the Arcipelago (from medieval Greek *ἀρχιπέλαγος) was the proper name for the Aegean Sea and, later, usage shifted to refer to the Aegean Islands (since the sea is remarkable for its large number of islands). It is now used to refer to any island group or, sometimes, to a sea containing a large number of scattered islands such as the Aegean Sea.[1]</td>
</tr>
</table>
</div>
ヘッダーテキストとテーブルセルテキストの両方を、コンテナに正しく収まるように強制的に折り返すにはどうしたらよいでしょうか。 CSSのみの方法を希望しますが、どうしても必要であれば、Javascript(またはjQuery)を使用することも可能です。
どのように解決するのですか?
純粋に "make it fit in div" の観点から、テーブル・クラスに以下を追加します ( jsfiddle ):
table-layout: fixed;
width: 100%;
そうでなければ、固定レイアウトアルゴリズムがテーブルの幅を列全体に均等に配分します。
参考までに、テーブルレイアウトのアルゴリズムを以下に示します(強調は私)。
-
固定(
ソース
)
この(高速な)アルゴリズムでは、テーブルの水平方向のレイアウトは はコンテンツに依存しない テーブルの幅、列の幅、ボーダーまたはセルの間隔にのみ依存します。
-
自動(
ソース
)
このアルゴリズムでは(一般に2回以上パスする必要はない)、テーブルの幅は列の幅で与えられる。 [, コンテンツによって決定される] 。 (そして、間に挟まれた ボーダー ).
[...] このアルゴリズムは,最終的なレイアウトを決定する前に,ユーザエージェントがテーブル内のすべてのコンテンツにアクセスする必要があり,1回以上のパスを要求する可能性があるので,非効率的であるかもしれない。
各アルゴリズムの詳細を見るには、ソースドキュメントをクリックしてください。
関連
-
[解決済み】divの高さを画面の残りスペースで埋めるようにする
-
[解決済み] divをクリックすると、その下にある要素に移動します。
-
ローカルリソースのロードが許可されていない問題を解決する
-
[解決済み] jQueryでテーブルの行を追加する
-
[解決済み] div' コンテナに合わせて画像を自動リサイズするにはどうしたらいいですか?
-
[解決済み] コンテナの幅に応じたフォントの拡大縮小
-
[解決済み] divの中のテキストを縦に揃えるにはどうしたらいいですか?
-
[解決済み] div内の要素を縦に並べるにはどうしたらいいですか?
-
[解決済み】あるdivの上に別のdivを重ねる方法
-
[解決済み] [Solved] divをコンテナの一番下に配置するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] BootstrapのCollapse Navbarが動作しない
-
[解決済み] cssのfit-contentで横幅を自動サイズ調整する
-
[解決済み] HTMLで複数選択を許さないリストボックスを作るには?
-
[解決済み] 画像の横のテキストを縦に揃える?
-
[解決済み] インラインCSSでa:hoverを記述するには?
-
[解決済み] CSSコンテンツによるHTMLエンティティの追加
-
[解決済み] input type="date "のフォーマットを変更する方法はありますか?
-
[解決済み] HTMLでBase64画像を表示する方法
-
[解決済み] テーブル内のテキストアラインクラス
-
[解決済み] MIME-typeが原因でスタイルシートが読み込まれない