背景:
私は CSS を使用して、ページ上のすべてが常に表示され、特定のものだけpanes
がスクロール可能なエクスペリエンスのような Web アプリを作成しています。これをテーブルに拡張する必要があります。テーブルのヘッダー (および場合によってはフッター) を常に表示したままにしたいのですが、テーブルの本文はスクロールのみ可能にする必要があります。
私がこれまで行ってきたことは、「ペイン」クラスをthead
andtfoot
に適用し、tbody
自動で高さを埋めてからスクロール可能にすることです。これはすべて機能しますが、thead、tbody、および tfoot が 100% 幅ではなくなります。この方法は、私が望むものに最も近いようです。
Fiddle:
私は JSFiddle を持っています。これは私を近づけます。これは、fixed および scrollable を作成するために使用しているコードも示していますpanes
。http://jsfiddle.net/va4HF/1/
要件:pane
理想的には、 css をそのまま維持したいのですが、テーブルが必要な場合は変更します。また、この CSS のみを保持したいと思います。
次のコードは私の概念実証コードであり、Pane CSS も含まれています。
HTML:
<div class="column">
<div class="pane top">Top</div>
<div class="pane middle">
<table>
<thead class="pane table-head">
<tr>
<th>Header</th>
</tr>
</thead>
<tbody class="pane table-body fill">
<tr><td>Text</td></tr>
<tr><td>Text</td></tr>
<tr><td>Text</td></tr>
<tr><td>Text</td></tr>
<tr><td>Text</td></tr>
<tr><td>Text</td></tr>
<tr><td>Text</td></tr>
<tr><td>Text</td></tr>
<tr><td>Text</td></tr>
<tr><td>Text</td></tr>
<tr><td>Text</td></tr>
<tr><td>Text</td></tr>
<tr><td>Text</td></tr>
<tr><td>Text</td></tr>
<tr><td>Text</td></tr>
</tbody>
<tfoot class="pane table-foot">
<tr>
<th>Footer</th>
</tr>
</tfoot>
</table>
</div>
<div class="pane bottom">Bottom</div>
</div>
CSS:
body, html {
height:100%;
margin:0;
padding:0;
}
div {
box-sizing:border-box;
box-sizing:content-box\9; /* Fix for IE9 sizing */
-moz-box-sizing:border-box; /* Fix for firefox sizing */
}
.column {
position:absolute;
width:100%;
min-height:100%;
height:auto;
overflow:hidden;
}
.pane {
position:absolute;
width:100%;
overflow:hidden;
}
.fill {
height:auto;
overflow:auto;
}
.top {
background:pink;
height: 20%;
top:0;
}
.middle {
background:red;
top:20%;
bottom:50px;
}
.table-head {
height: 40px;
top:0;
}
.table-body {
top:40px;
bottom:40px;
}
.table-foot {
height: 40px;
bottom:0;
}
.bottom {
background:orange;
height: 50px;
bottom:0;
}
table thead tr, table tfoot tr {background:rgba(0,0,0,0.5);}
table tbody tr {background:rgba(0,0,0,0.3);}
table td, table th {padding:10px; color:#fff;}
/* Fix for Safari scrollbars (also styles Chrome scrollbars) */
.fill::-webkit-scrollbar {-webkit-appearance: none;width: 10px;}
.fill::-webkit-scrollbar-track {background-color: rgba(0,0,0, .3);border-radius: 0px;}
.fill::-webkit-scrollbar-thumb {border-radius: 0px; background-color: rgba(255,255,255, .4);}
調査: 他の誰かが、100% の親の高さを固定ヘッダー/フッターで埋めるテーブルで同様の状況でこれを尋ねましたが、良い応答が得られず、Javascript を使用することになりましたが、CSS ソリューションを試してみたいと思います。または、少なくとも、彼が使用したものよりも単純な Javascript ソリューション (3 つのテーブルをオーバーレイする必要はありません)