私が開発しているワードプレスのテーマに追加した小さな機能を滑らかにしようとしています。スタック オーバーフローからの次の 2 つの Q&A のおかげで、スクロール後に (ウィンドウの幅が 300 ~ 500 ピクセルの場合のみ) ナビゲーションを画面の上部にロックすることができました。
スクロール時にオブジェクトをブラウザー ウィンドウの上部に固定する
と
この要素をスクロール時にページの上部に固定するにはどうすればよいですか?
問題は、私のウェブサイト ( digitalbrent.com ) をモバイル デバイス (私は iphone 4 を使用しています) で表示すると、下にスクロールすると、ナビゲーション アイコンが画面の上部に固定されていることに気付くでしょう。ナビゲーションが上部に表示されるようにスクロールを停止します。ユーザーがアクティブにスクロールしている間でも、ナビゲーションがページの上部に表示される前にユーザーがスクロールを停止するのを待つのではなく、ページの上部で非常にスムーズに停止するように修正したいと思います。どうすればこれを行うことができるかについて、誰かが私を正しい方向に向けることができますか? .scroll よりも優れた機能はありますか? どんな助けやアドバイスも大歓迎です。ナビゲーションを画面の上部にロックするために使用しているコードは次のとおりです。
jQuery:
$(function() {
var max_scroll = $("#nav").position().top;
$(document).ready(function() {
$(window).scroll(function() {
var navAdjust = $(".navScroll");
var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
if (scrollTop > max_scroll && !navAdjust.is(".navScrollFixed")) {
navAdjust.addClass("navScrollFixed");
}
else if (scrollTop < max_scroll && navAdjust.is(".navScrollFixed")) {
// console.log("return to normal");
navAdjust.removeClass("navScrollFixed");
}
});
});
});
CSS:
#nav.navScrollFixed{
position:fixed;
top: 0;
z-index: 100;
background: black;
border-bottom: 5px solid #27f231;
width: 100%;
left: 0;
margin-left: 0px;
margin-top: 0px;
}
HTML:
<div id="nav" class="navScroll">
<ul>
<li id="home">
<div class="navIcon"></div>
Home
</li>
<li id="blog">
<div class="navIcon"></div>
Blog
</li>
<li id="resume">
<div class="navIcon"></div>
Resume
</li>
<li id="portfolio">
<div class="navIcon"></div>
Portfolio
</li>
<li id="lab">
<div class="navIcon"></div>
Lab
</li>
<li id="contact">
<div class="navIcon"></div>
Contact
</li>
</ul>
</div>
繰り返しますが、コードは機能しています。モバイル デバイスでスムーズにしたいだけです。