私はウェブページの上部に固定ナビゲーションを作成しています。しかし、ラッパーの内容は重複します。だから私はjQueryを使ってマージントップを設定しています:固定要素との重複を避ける
$('#wrapper').css('margin-top', function() {return $('nav').height();});
nav {
background-color: #cccccc;
position: fixed;
top: 0;
width: 100%;
line-height: 2.5;
}
@media screen and (min-width: 800px) {
nav {
line-height: 1.5;
}
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<nav>
NAV
</nav>
<div id="wrapper">
<header id="header" class="alt">
HEADER
</header>
<main>
Lorem <br>
ipsum <br>
dolor <br>
sit <br>
amet <br>
</main>
</div>
しかし、私は小さなウィンドウでページを開くと、それを最大化した場合、その後、NAVは、サイズ変更が、margin-top
意志ますそのまま。
私が理解するように、css
関数は1回だけ呼び出されます。 #wrapper
のmargin-top
をheight
のnav
にバインドすることは可能ですか?
しかし、私は 'line-height' navのピクセルの高さなので、通常のCSS、afaikでは実際に使用できません。さらに、 '$( 'nav').resize(...)'を使うとどうなるでしょうか?これは、今後のナビゲーションバーの高さの変更に対してフェイルセーフになります。ウィンドウのサイズ変更には関係しません。スロットルやデバウンスはどういう意味ですか? – marmistrz
ああ、私はあなたが高さを知っていると思っていましたが、それはウィンドウの幅(それゆえ、メディアクエリ)で頻繁に変化します。とにかく、jqueryは行く方法です。私は、サイズ変更イベントはウィンドウ上でトリガーだと思うので、それを使うべきです。 – yezzz
ところで、あなたは関数と戻り値を必要としません – yezzz