vh vwのウインドウサイズ設定は便利です。
でもvhには問題があって、スマホの場合はvhにアドレスバーやステータスバーの高さを含んでしまうこと。
なのでvh vwをある一定の比や100%設定にした場合には、アドレスバーがコンテンツの頭にかかってきたりする。(これ、仕様としてアホだと思う。改善もとむ)
なので、vw vhでウインドウサイズで一定の比率を設定し、さらに「コンテンツの高さ」をjavascriptで取得してやらないといけません。
やり方は下記の通り
javascript
// --vhというカスタムプロパティを作成 let vh = window.innerHeight * 0.01; document.documentElement.style.setProperty('--vh', `${vh}px`); // window resize window.addEventListener('resize', () => { vh = window.innerHeight * 0.01; document.documentElement.style.setProperty('--vh', `${vh}px`); });
css(コンテンツ比16:9の場合)
/* 以下、スマホアドレスバー分差し引きカスタムプロパティ */ /* カスタムプロパティ未対応ブラウザ対応 */ width: 177.78vh; / *100vh --vhが未定義の場合は1vhを使う */ width: calc(var(--vh, 1vh) * 177.78); max-width: 100vw; height: 56.25vw; /* カスタムプロパティ未対応ブラウザ対応 */ max-height: 100vh; /* 100vh --vhが未定義の場合は1vhを使う */ max-height: calc(var(--vh, 1vh) * 100);