2017-09-20 10 views
0

私のコンポーネントにheight: 100vhminHeight:"100vh"をそれぞれ使用しようとしましたが動作しません。それでもテーブル全体が表示されます。私は表示することができる行の最大を持っていますが、私はテーブルがスクロールする唯一のものを作ることによってページスクロールバーを引き起こすのを避けるテーブルをしたい。ビューポートheigth全体を使用して表示するテーブルコンポーネントを設定する

明確な高さと隠れたオーバーフローを設定することでこれを達成できますが、明確な高さが問題になります。すべてのビューポートが同じサイズではなく、いくつかのビューポートが完璧ではありませんが、他のビューポートでは小さすぎたり長すぎたりします。だから、このテーブルにウィンドウの高さを読んで、それを使って隠れたオーバーフローがスクロールを開始するタイミングを定義します。

私は、これは私のテーブルのために動作していないようされてjQueryの

$(document).ready(function() { 
    function setHeight() { 
     windowHeight = $(window).innerHeight(); 
     $('.sidebar').css('min-height', windowHeight); 
    }; 
    setHeight(); 

    $(window).resize(function() { 
     setHeight(); 
    }); 
}); 

問題でこれを見つけました。

私はこのために遊び場を持っているcodepenを追加しています。

EDIT:これは実際にリアクトアプリであることを行っているので、それが動作した後、私はまだよ:明確化のために、ここで

enter image description here

私の問題を視覚的に追記があります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>

答えて

1

.dynamicHeightの代わりに.sidebarの高さを設定しました。私はまた、min-heightheightに変更しました。内容が長い場合は、min-heightは、ウィンドウを超えて高さを広げます。また、innerHeightは数字だけを返します。pxを追加する必要があります。いくつかoverflow-y:autoは、私は問題なく、サイドバーの高さを制御することができます.sidebar

Javascriptを

$(document).ready(function() { 
    function setHeight() { 
    windowHeight = $(window).innerHeight(); 
    $('.dynamicHeight, .sidebar').css('height', windowHeight + 'px'); 
    }; 
    setHeight(); 

    $(window).resize(function() { 
    setHeight(); 
    }); 
}); 

CSS

.sidebar { 
    -moz-box-sizing: border-box; 
    -webkit-box-sizing: border-box; 
    box-sizing: border-box; 
    float: left; 
    width: 33%; 
    padding: 2em; 
    background-color: #f8ca00; 
    overflow-y:auto; 
} 

Codepen

+0

サイドバーの高さを問題なくコントロールできます。ビューポートの高さを決して超えないようにテーブルのオーバーフローが必要です。あなたが気づいたら、あなたの解決策では、テーブル本体の代わりにサイドバーをスクロールしています。サイドバーとテーブル本体の両方がウィンドウの高さに合わせる必要があります。表の本文はスクロールするものです。ウィンドウを大きくすると、テーブル本体とサイドバーがそれに応じて調整されます。 – LOTUSMS

+0

明確にするために私の質問に画像を追加しました。私はそれがちょっと混乱していると理解しています – LOTUSMS

+0

@LuisBrazilvaだから、下に内容があってもテーブルをまったくスクロールしたくないのですか?その場合、 'overbar-y'を' .sidebar'で 'overflow:hidden'に変更することができます。スクロールバーは決して得られません。あなたはコンテンツの残りの部分を失っているでしょう。またはテーブルを収縮させたいのですか? –

0

あなたがheightまたはWindows hieghtにtablemax-heightを設定することで、ちょうどそのパディングを削除することを達成することができ、code snippet


$(document).ready(function() { 
 
    function setHeight() { 
 
    windowHeight = $(window).innerHeight(); 
 
    $('.sidebar').css('max-height', windowHeight); 
 
    }; 
 
    setHeight(); 
 
    
 
    $(window).resize(function() { 
 
    setHeight(); 
 
    }); 
 
});
body { 
 
    background-color: #ddd; 
 
    font-size: 1.5em; 
 
    font-family: Georgia, serif; 
 
    margin:0px; 
 
} 
 

 
.sidebar { 
 
    -moz-box-sizing: border-box; 
 
    -webkit-box-sizing: border-box; 
 
    box-sizing: border-box; 
 
    float: left; 
 
    width: 33%; 
 
    background-color: #f8ca00; 
 
    overflow:auto; 
 
} 
 
.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>
を見ます

+0

で使用されました。ビューポートの高さを決して超えないようにテーブルのオーバーフローが必要です。あなたが気づいたら、あなたの解決策では、テーブル本体の代わりにサイドバーをスクロールしています。サイドバーとテーブル本体の両方がウィンドウの高さに合わせる必要があります。表の本文はスクロールするものです。ウィンドウを大きくすると、テーブル本体とサイドバーがそれに応じて調整されます。 – LOTUSMS

+0

明確にするために私の質問に画像を追加しました。私はそれがちょっと混乱していると理解しています – LOTUSMS

+0

あなたはコンテンツの高さになるように窓を作りたいですか? 下のスペースを消したいと思っています! – M0ns1f

関連する問題