私のコンポーネントにheight: 100vh
とminHeight:"100vh"
をそれぞれ使用しようとしましたが動作しません。それでもテーブル全体が表示されます。私は表示することができる行の最大を持っていますが、私はテーブルがスクロールする唯一のものを作ることによってページスクロールバーを引き起こすのを避けるテーブルをしたい。ビューポートheigth全体を使用して表示するテーブルコンポーネントを設定する
明確な高さと隠れたオーバーフローを設定することでこれを達成できますが、明確な高さが問題になります。すべてのビューポートが同じサイズではなく、いくつかのビューポートが完璧ではありませんが、他のビューポートでは小さすぎたり長すぎたりします。だから、このテーブルにウィンドウの高さを読んで、それを使って隠れたオーバーフローがスクロールを開始するタイミングを定義します。
私は、これは私のテーブルのために動作していないようされてjQueryの$(document).ready(function() {
function setHeight() {
windowHeight = $(window).innerHeight();
$('.sidebar').css('min-height', windowHeight);
};
setHeight();
$(window).resize(function() {
setHeight();
});
});
問題でこれを見つけました。
私はこのために遊び場を持っているcodepenを追加しています。
EDIT:これは実際にリアクトアプリであることを行っているので、それが動作した後、私はまだよ:明確化のために、ここで
私の問題を視覚的に追記がありますReactJSでそれを取得する必要がありますが、jQueryでうまく動作するようになるのは、おそらくもっと早く簡単になるでしょう。しかし、もしReactに解決策があるとしたら、分かち合いましょう。
$(document).ready(function() {
function setHeight() {
windowHeight = $(window).innerHeight();
$('.dynamicHeight').css('min-height', windowHeight);
};
setHeight();
$(window).resize(function() {
setHeight();
});
});
// If you don't care about changing the height when the window resizes then you can use the following simplified version instead:
// $(document).ready(function() {
// windowHeight = $(window).innerHeight();
// $('.sidebar').css('min-height', windowHeight);
// });
body {
background-color: #ddd;
font-size: 1.5em;
font-family: Georgia, serif;
}
.sidebar {
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
box-sizing: border-box;
float: left;
width: 33%;
padding: 2em;
background-color: #f8ca00;
}
.dynamicHeight{
\t overflow-x:hidden;
\t height:100%;
\t display: inline-block;
\t width:100%;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<div class='sidebar'>
<table class="dynamicHeight">
<thead>
<tr>
<th>Header</th>
</tr>
</thead>
<tbody>
<tr><td>Body Row</td></tr>
<tr><td>Body Row</td></tr>
<tr><td>Body Row</td></tr>
<tr><td>Body Row</td></tr>
<tr><td>Body Row</td></tr>
<tr><td>Body Row</td></tr>
<tr><td>Body Row</td></tr>
<tr><td>Body Row</td></tr>
<tr><td>Body Row</td></tr>
<tr><td>Body Row</td></tr>
<tr><td>Body Row</td></tr>
<tr><td>Body Row</td></tr>
<tr><td>Body Row</td></tr>
<tr><td>Body Row</td></tr>
<tr><td>Body Row</td></tr>
<tr><td>Body Row</td></tr>
<tr><td>Body Row</td></tr>
<tr><td>Body Row</td></tr>
<tr><td>Body Row</td></tr>
<tr><td>Body Row</td></tr>
<tr><td>Body Row</td></tr>
<tr><td>Body Row</td></tr>
<tr><td>Body Row</td></tr>
<tr><td>Body Row</td></tr>
<tr><td>Body Row</td></tr>
<tr><td>Body Row</td></tr>
<tr><td>Body Row</td></tr>
<tr><td>Body Row</td></tr>
<tr><td>Body Row</td></tr>
<tr><td>Body Row</td></tr>
<tr><td>Body Row</td></tr>
<tr><td>Body Row</td></tr>
<tr><td>Body Row</td></tr>
<tr><td>Body Row</td></tr>
<tr><td>Body Row</td></tr>
<tr><td>Body Row</td></tr>
<tr><td>Body Row</td></tr>
<tr><td>Body Row</td></tr>
<tr><td>Body Row</td></tr>
<tr><td>Body Row</td></tr>
<tr><td>Body Row</td></tr>
<tr><td>Body Row</td></tr>
<tr><td>Body Row</td></tr>
<tr><td>Body Row</td></tr>
<tr><td>Body Row</td></tr>
<tr><td>Body Row</td></tr>
<tr><td>Body Row</td></tr>
<tr><td>Body Row</td></tr>
</tbody>
</table>
</div>
サイドバーの高さを問題なくコントロールできます。ビューポートの高さを決して超えないようにテーブルのオーバーフローが必要です。あなたが気づいたら、あなたの解決策では、テーブル本体の代わりにサイドバーをスクロールしています。サイドバーとテーブル本体の両方がウィンドウの高さに合わせる必要があります。表の本文はスクロールするものです。ウィンドウを大きくすると、テーブル本体とサイドバーがそれに応じて調整されます。 – LOTUSMS
明確にするために私の質問に画像を追加しました。私はそれがちょっと混乱していると理解しています – LOTUSMS
@LuisBrazilvaだから、下に内容があってもテーブルをまったくスクロールしたくないのですか?その場合、 'overbar-y'を' .sidebar'で 'overflow:hidden'に変更することができます。スクロールバーは決して得られません。あなたはコンテンツの残りの部分を失っているでしょう。またはテーブルを収縮させたいのですか? –