javascript - StickyNav - 调试

标签 javascript jquery html css twitter-bootstrap

// STICKY NAVBAR

var num = 816; //number of pixels before modifying styles

$(window).bind('scroll', function () {
    if ($(window).scrollTop() > num) {
        $('.navbar').addClass('navbar-fixed-top');
    } else {
        $('.navbar').removeClass('navbar-fixed-top');
    }
});

这是我的粘性导航栏代码(使用自定义的 Bootstrap 导航栏),它在桌面浏览器上运行得非常好......但是 var num 是以像素而不是 em。这不能很好地转化为移动设备。

有没有办法:

  • em 而不是 px 测量滚动 或者……

  • 检测条何时到达窗口顶部,然后使其粘住而不是使用硬编码测量值?

最佳答案

您遇到的问题与移动设备上的不同测量无关,因为它在任何设备上始终以像素为单位进行测量和计算。您的导航栏的位置更有可能在移动设备上有所不同。

是的,一个解决方案是获取导航栏的当前偏移量并使用它来代替硬编码的“num”,如下所示:

var navbarOffset = $('.navbar').offset();
var num = navbarOffset.top;

但请记住,这种方法假设导航栏的位置在其生命周期内不会改变。一旦你处理了一个响应式设计,你应该在每次内容包装元素的大小发生变化时重新计算导航栏偏移量。 这整件事有多精细,你可以在这里查看: https://github.com/zurb/foundation/blob/master/js/foundation/foundation.topbar.js

关于javascript - StickyNav - 调试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22545171/

相关文章:

jquery - wordpress - 使用ajax在帖子编辑页面上提交表单

javascript - HTML5 地理定位 API 在 Firefox 中不起作用

javascript - 模仿 TypeScript 中的扩展方法

javascript - 是否有可能导致 UI-Grid 的 afterCellEdit 人为触发?

jquery - 触摸设备上的光滑轮播中同时出现 2 个点

翻译后JavaScript旋转错误

java - 从 JSP 生成 HTML

javascript - 模态弹出窗口内的 Canvas 签名板效果不佳

javascript - 在javascript中访问 "private"变量

javascript - 在 Vue 组件内将 webSDK 与 jQuery 集成?