У меня есть панель навигации на странице, которую я хочу придерживаться сверху, когда она достигает определенной точки сверху на настольных устройствах. На мобильных устройствах (менее 780) я хочу, чтобы он всегда играл независимо от того, как далеко прокручивается страница.Mobile vs Desktop Scroll/Resize Issues
Прямо сейчас я столкнулся с проблемой, когда оба события прокрутки/изменения размера окна поддерживают включение и выключение стиля, вызывающего всевозможные хаос. Что было бы хорошим способом перепрофилировать этот код, чтобы он вел себя корректно и плавно менялся при изменении размера браузера?
$(document).ready(function() {
$(window).scroll(function() {
var $box = $("#box");
if ($(window).scrollTop() > 30) {
$box.addClass("fixed");
}
if ($(window).scrollTop() < 30) {
$box.removeClass("fixed");
}
if ($(window).width() > 780) {
$box.removeClass("fixed");
}
if ($(window).width() < 780) {
$box.addClass("fixed");
}
});
});
#box {
width: 100%;
background-color: red;
}
.fixed {
position: fixed;
top: 0;
}
<div id="box">
This is the nav
</div>
<p>
Content
</p>
<p>
Content
</p>
<p>
Content
</p>
<p>
Content
</p>
<p>
Content
</p>
<p>
Content
</p>
<p>
Content
</p>
<p>
Content
</p>
<p>
Content
</p>
<p>
Content
</p>
<p>
Content
</p>
<p>
Content
</p>
<p>
Content
</p>
<p>
Content
</p>
<p>
Content
</p>
<p>
Content
</p>
<p>
Content
</p>
<p>
Content
</p>
<p>
Content
</p>
<p>
Content
</p>
<p>
Content
</p>
<p>
Content
</p>
<p>
Content
</p>
<p>
Content
</p>
<p>
Content
</p>
<p>
Content
</p>
<p>
Content
</p>
<p>
Content
</p>
<p>
Content
</p>
<p>
Content
</p>
<p>
Content
</p>
<p>
Content
</p>
<p>
Content
</p>
<p>
Content
</p>
<p>
Content
</p>
<p>
Content
</p>
<p>
Content
</p>
<p>
Content
</p>
<p>
Content
</p>
<p>
Content
</p>
Единственная проблема у меня, кажется, с ним теперь, что если я в верхней части страницы на рабочем столе устройства и затем сжимайте страницу вниз, для этого требуется подталкивать свиток. –
Исправлено, добавив еще один прослушиватель событий при изменении размера, который добавляет его в дополнение к тому, что вы разместили. Благодаря! –
Я обновил ответ, чтобы добавить прослушиватель событий изменения размера – Bradley4