我做了这个,因为我可以在滚动页面时修复网站上的导航栏
我如何改进此代码,可以某种方式减少它?
<nav class="main_menu">
// some code...
</nav>
var menu_offset_top_default = $('.main_menu').offset().top;
$(window).scroll(function() {
var menu_offset_top = $('.main_menu').offset().top;
if ($(window).scrollTop() >= menu_offset_top) {
$('.main_menu').addClass('fixed-top');
}
if ($(window).scrollTop() < menu_offset_top_default || $(window).scrollTop() <= 0) {
$('.main_menu').removeClass('fixed-top');
}
});
答案 0 :(得分:1)
您可以使用css position: sticky
代替删除jquery代码
粘性定位元素是计算位置的元素 价值很粘。它被视为相对定位直到它 包含块越过指定的阈值(例如将top设置为 在其流量根(或容器)中的除auto之外的值 在其中滚动),此时它被视为&#34;卡住&#34;直到见面 其包含块的相对边缘。 Source
一个例子:
答案 1 :(得分:0)
您可以使用简单的if-else块执行以下操作。
$(window).scroll(function() {
if ($(window).scrollTop() >= $('.main_menu').offset().top) {
$('.main_menu').addClass('fixed-top');
}
else {
$('.main_menu').removeClass('fixed-top');
}
});