首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用jquery定位元素的顶部属性

问用jquery定位元素的顶部属性
EN

Stack Overflow用户
提问于 2016-06-22 14:52:00
回答 1查看 59关注 0票数 0

我有一个恼人的问题,试图定位响应导航汉堡包。我正在使用一个名为响应菜单的插件,它创建了汉堡包,并使用绝对定位。

我一直试着把汉堡放在头球的中心位置。为了实现这一点,我使用了以下jQuery代码。

不过,我遇到的问题是,当汉堡包被显示时,你会向下滚动页面,然后快速回滚到页面的顶部。汉堡包没有将自己定位在头部的中心位置。你需要稍微向下滚动,这样它才能跳到正确的位置。

请告诉我怎么解决这个问题。它快把我逼疯了,我对jquery不太了解:

(谢谢各位事先提出的意见:)

链接到有关站点

代码语言:javascript
复制
$( window ).on("load resize scroll", function(e){
  var headerHeight = $('nav').height()/2;
  var iconHeight = $('#click-menu').height()/2;
  var total = headerHeight - iconHeight;
  if ($(window).scrollTop() >= 1) {
  $('#click-menu').css('top', total);
  }
  else {
      $('#click-menu').css('top', total);
  }
});
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-22 16:13:59

这对我来说很难测试和确认,但是我相信当它击中顶部的时候它的位置被关闭的原因是因为$('nav').height()/2;的评估会立即发生,但是头部的大小会超过300 ms。

虽然有点麻烦,但我认为您可以通过添加一个setTimeout来解决这个问题

代码语言:javascript
复制
function setNavTop(){
    var headerHeight = $('nav').height()/2;
    var iconHeight = $('#click-menu').height()/2;
    var total = headerHeight - iconHeight;
    $('#click-menu').css('top', total);
}

$( window ).on("load resize scroll", function(e){

    if ($(window).scrollTop() >= 1) {
        setNavTop();
    }
    else {
        setTimeout(setNavTop, 300); // wait for header to animate to size.
    }
});

因为它必须延迟300毫秒才能调整图标,它看起来有点小问题。您可以通过添加推特setTimeout来改进这一点。不是最优雅的,但它很有效

代码语言:javascript
复制
setNavTop();
setTimeout(setNavTop, 100);
setTimeout(setNavTop, 200);
setTimeout(setNavTop, 300);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37971775

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档