この問題の完全なCSSのソリューションはありません。このCSSの「問題」は長年にわたり知られていました。 CSSは長年にわたり機能が向上して以来、今は完全なCSSソリューションがあると思っていました。しかし、悲しいかな、そうではありません。私は多くのことを試して、高いものと低いものを検索しましたが、問題は変わりません。
私の知る限り、サードパーティのライブラリを必要としない3つのソリューション、絶対配置、偽の列(2トーンの繰り返しの背景)、およびJSがあります。
魅力的な解決策は、偽の列とJSだけです。私はJSソリューションを好んでいます。なぜなら、CSSをより多く使うからです。 JSでは、後で列の幅や色を変更したい場合、背景イメージを再処理する必要はありません。これは、より適応性が高く、再利用可能なソリューションです。偽の列を作成するために私が見ることができる唯一の利点は、クライアントがJSを無効にするとレイアウトが壊れないことです。
JS溶液(ラッパーは必要ありません):https://jsfiddle.net/Kain52/uec9cLe4/
var side1 = document.getElementsByTagName('main')[0];
var side2 = document.getElementById('mainMenu');
var side1Height = side1.clientHeight;
var side2Height = side2.clientHeight;
if(side2Height < side1Height) { side2.style.height = side1Height + "px"; }
else { side1.style.height = side2Height + "px"; }
JS溶液(ラッパーが必要):https://jsfiddle.net/Kain52/7udh55zq/
var wrapperHeight = document.getElementById('innerWrapper').clientHeight;
document.getElementsByTagName('main')[0].style.height = wrapperHeight + "px";
document.getElementById('mainMenu').style.height = wrapperHeight + "px";
説明:あなたはdivのラッパーを使用する場合は、あなたがそれを割り当てることができますラッパーの高さラッパーを使用しない場合は、最も短い辺の高さを最も長い辺の高さに設定するだけです。
height: 100vh;
「VH:最も簡単な方法は、単にCSSを使用している
var contentHeight = document.getElementsByTagName('main')[0].clientHeight;
document.getElementById('mainMenu').style.height = contentHeight + "px";
あなたの質問は本当に曖昧です。 #wrapperがブラウザのサイズであることを意味しますか? – SMacFadyen
[CSS 100%の高さと余白/余白]の複製が可能です(http://stackoverflow.com/questions/485827/css-100-height-with-padding-margin) –