ウェブ

vhをpxに変換する方法(JavaScript / jQuery)

JavaScript(jQuery)でvhを非常に簡単にpxに変換する方法です。
スマホでヘッダー固定にして、ハンバーガーメニューをタップ後に開くメニュー背景の高さをセットするのに利用しました。

【解決法】

$('.menu-wrapper').css('height', '100vh');   // set the wrapper height to the window height once
var vh = $('.menu-wrapper').height() + 'px'; // get the vh height in pixel

【備考】

単純に、一旦HTML要素をvhに設定し、その高さをjQueryのheight() で取得するという方法です。

ここでは、「.menu-wrapper」を一度100vhに設定してその高さをpixelで取得後、headerの高さを差し引いたものを再度「.menu-wrapper」にセットする形です。

$('.menu-wrapper').css('height', '100vh'); // set the wrapper height to the window height once
var vh = $('.menu-wrapper').height();      // get the vh height in pixel
var header_h = $('header').height();       // get the header height in pixel
$('.menu-wrapper').css('height', vh - header_h + 'px');

全く使わないdivタグに100vhを設定して、その高さを0にしたり、display:noneにしたり、remove()するのもありかと思います。

理屈を覚えれば感覚的にできる分、シンプルかなと思います。