垂直スクロールバーが表示されるようにテーブルの高さを指定するにはどうすればよいですか?


100

ページに多くの行があるテーブルがあります。テーブルの高さを、たとえば500pxに設定して、テーブルの高さがそれよりも大きい場合、垂直スクロールバーが表示されるようにします。でCSS height属性を使用しようとしましたtableが、機能しません。


1
たぶん使うmax-heightだけではなく、height後者がために、テーブルの高さを強制するよう500px
フレッド・

1
ヘッダー行がスクロールしないようにすることについて、2番目の質問をすることができます。;)
ビルビンガム、2010

回答:


173

overflowCSSプロパティを使用してみてください。水平方向のオーバーフロー(overflow-x)と垂直方向のオーバーフロー()のみの動作を定義する個別のプロパティもありますoverflow-y

垂直スクロールのみが必要なので、これを試してください:

table {
  height: 500px;
  overflow-y: scroll;
}

編集:

どうやら<table>要素はoverflowプロパティを尊重していません。これは、<table>要素がdisplay: blockデフォルトのようにレンダリングされないためです(実際には、要素には独自の表示タイプがあります)。要素をブロックタイプにoverflow設定することで、プロパティを強制的に機能させることができます<table>

table {
  display: block;
  height: 500px;
  overflow-y: scroll;
}

これにより、要素の幅が100%になるため、ページの水平方向の幅全体を占めたくない場合は、要素の幅も明示的に指定する必要があります。


3
これは高さを制限しません。
フレッド

6
いいえ、あります。jsfiddle.net/ TSGSAdisplay:blockdiv
Fred

2
@フレッド:素晴らしい心は同じように考える。あなたがコメントしている間に私は私の答えを更新しました。:)
AgentConundrum 2010

1
この回答は本当に役に立ちましたが、それをテーブルタグに適用するのではなく、tbodyに対して実行する必要があります。これにより、スクロール時にヘッダーを静的に保つことができます。次に、スクロールバーの上にあるtheadの領域に関して、いくつかのスタイルを整えます。
デビッド

7
これをtbodyで使用する場合は、display:blockをthead(およびおそらくtfoot)に追加してください。そうしないと、少しクレイジーになる可能性があります。問題は、これを実行すると、theadとtbodyの間のリンクが壊れていることです。前者の列は後者の幅を認識していません。だからあなたはそれをパッチして、あなたが行く滑りやすい坂を下ります。「美しさのために死んだ...」
Cuse70 '20

59

別の要素の内側にテーブルをラップし、その要素の高さを設定する必要があります。インラインCSSの例:

<div style="height: 500px; overflow: auto;">
 <table>
 </table>
</div>

9
これは、tbodyがスクロールしている間、theadを所定の位置に保つことを許可しません。
David

21
この要件は元の質問にはありません。
ダークファルコン

2
また、他の(受け入れられた)答えはtheadを所定の位置に保持しません。
Brock Adams

このメソッドを使用しても、ヘッダーが表示されているように見せることができます。テーブルのヘッダーを非表示にし、ヘッダーが含まれる最初のテーブルの上に2番目のテーブルを作成します。次に、両方のテーブルにスタイルを設定してdisplay:table;display:table-row;とセルを設定するdisplay:table-cell;と、2つのテーブルが一致して1つに見えます。(注:これは非常に大きなテーブルでは機能しません。基本的に、可能な場合はそれらを一致させます。この手法を複数回使用しました。)
levininja

1
承知しました。相対サイズを使用するには、親のサイズを指定する必要があります。例:jsfiddle.net/hz8wy
Dark Falcon

1

テーブルの高さを設定するには、最初にcssプロパティ "display:block"を設定してから、 "width / height"プロパティを追加できます。このMozilla記事は、テーブルのスタイルを設定する方法を学ぶのに非常に良いリソースだと思います: リンク

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.