在移动视图中显示附加导航的问题
Display issue with affix nav in mobile view
我刚刚完成了一个车库站点,下面有一个带有导航的 header,滚动时导航固定在屏幕顶部。通常非常简单,并且在其他站点上执行此操作没有问题。然而,在这个特定的项目中,如果在移动设备上加载 phone,10 次中有 9 次会出现导航在滚动时向上跳跃的问题,短暂地留下一个白色条带,其中填充被添加到页面以适应导航的新状态早早地跳了起来
该站点是 http://telstargarage.com,无论我做什么,该站点都不会让我 post 代码,因为它说它的格式不正确,即使我按照帮助,而且在预览中看起来一切都很美好,它不会 post,所以请随时分叉该站点。
很难诊断,因为您还没有发布任何代码。
不过我猜你的问题出在这里:
$(document).ready(function () {
var menu = $('.menu');
// This is likely incorrect on document ready
var origOffsetY = menu.offset().top;
function scroll() {
if ($(window).scrollTop() >= origOffsetY) {
$('.menu').addClass('navbar-fixed-top');
$('.scrolled').addClass('menu-padding');
} else {
$('.menu').removeClass('navbar-fixed-top');
$('.scrolled').removeClass('menu-padding');
}
}
...
}
我建议换一种方式。也许通过更改您将其与菜单容器的偏移量进行比较的偏移量。这解决了调整屏幕大小导致原始偏移计算也不正确的问题。像这样
<div class="menu-container">
<div class="menu">
// Your menu in here
</div>
</div>
像这样使用 JS:
$(document).ready(function () {
function scroll() {
if ($(window).scrollTop() >= $('.menu-container').offset().top) {
$('.menu').addClass('navbar-fixed-top');
$('.scrolled').addClass('menu-padding');
} else {
$('.menu').removeClass('navbar-fixed-top');
$('.scrolled').removeClass('menu-padding');
}
}
...
}
我刚刚完成了一个车库站点,下面有一个带有导航的 header,滚动时导航固定在屏幕顶部。通常非常简单,并且在其他站点上执行此操作没有问题。然而,在这个特定的项目中,如果在移动设备上加载 phone,10 次中有 9 次会出现导航在滚动时向上跳跃的问题,短暂地留下一个白色条带,其中填充被添加到页面以适应导航的新状态早早地跳了起来
该站点是 http://telstargarage.com,无论我做什么,该站点都不会让我 post 代码,因为它说它的格式不正确,即使我按照帮助,而且在预览中看起来一切都很美好,它不会 post,所以请随时分叉该站点。
很难诊断,因为您还没有发布任何代码。
不过我猜你的问题出在这里:
$(document).ready(function () {
var menu = $('.menu');
// This is likely incorrect on document ready
var origOffsetY = menu.offset().top;
function scroll() {
if ($(window).scrollTop() >= origOffsetY) {
$('.menu').addClass('navbar-fixed-top');
$('.scrolled').addClass('menu-padding');
} else {
$('.menu').removeClass('navbar-fixed-top');
$('.scrolled').removeClass('menu-padding');
}
}
...
}
我建议换一种方式。也许通过更改您将其与菜单容器的偏移量进行比较的偏移量。这解决了调整屏幕大小导致原始偏移计算也不正确的问题。像这样
<div class="menu-container">
<div class="menu">
// Your menu in here
</div>
</div>
像这样使用 JS:
$(document).ready(function () {
function scroll() {
if ($(window).scrollTop() >= $('.menu-container').offset().top) {
$('.menu').addClass('navbar-fixed-top');
$('.scrolled').addClass('menu-padding');
} else {
$('.menu').removeClass('navbar-fixed-top');
$('.scrolled').removeClass('menu-padding');
}
}
...
}