打开和关闭面板时,如何防止浏览器窗口跳回到页面顶部?

詹姆士

我一直在一个网站上工作,该网站具有永久标题,并且导航面板可以滑出屏幕顶部。当前,它的工作原理是将标题和导航面板包装在固定的div中,并赋予该div负的上边距,该宽度等于导航的高度。

的HTML

<div class="sticky">
  <div class="above-header">
    This is the navigation panel.
  </div>

  <div class="header">
    This is a logo
    <a href="#" class="toggle">Toggle</a>
  </div>
</div>

CSS

.sticky {
  height:300px;
  margin:-250px 0 0;
  position:fixed;
  z-index:1000;
}

.above-header {
  height:250px;
}

.header {
  height:50px;
}

.open {
  margin:0
}

然后,我使用一个微型js / jquery脚本将该边距更改为0,从而使导航可见。

$('a.toggle').click(function() {
    if ($('.sticky').hasClass('open')){  
        $('.sticky').removeClass('open');
      }
      else{
        $('.sticky').addClass('open');
      }
});

除了一个问题,我的工作正常:如果打开或关闭面板,则无论滚动到何处,该视图都将跳至页面顶部。

在Codepen上重新创建了该问题的简化版本,以演示我在说什么。

我无法想象为什么这样做,而我的Google Fu还没有找到任何答案。任何想法我可以做些什么来解决此问题?也许有一种我不知道的更好的技术?

冰刺

只需阻止默认操作即可(nl导航至您的url +#)

$('a.toggle').click(function(e) {
    e.preventDefault();
    $('.sticky').toggleClass('open');
});

并使用toggleClass选项,您可以简化通话:)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何防止CSS div弹出窗口跳回到页面顶部

如何防止关闭浏览器窗口?

如何使用 Javascript 滑回到浏览器窗口的顶部

按下浏览器后退按钮时如何防止Vuejs滚动到页面顶部

如何防止Lite服务器启动时打开浏览器窗口?

Magento 2在关闭模式窗口时可防止页面滚动回到顶部

用户单击关闭选项卡时如何打开新窗口浏览器?

关闭浏览器窗口后,如何防止Google Chrome浏览器删除会话Cookie?

电子浏览器窗口防止Control + W关闭窗口

窗口浏览器打开时冻结

显示后关闭jQueryUI对话框,并在新的浏览器窗口中打开页面

在新的浏览器标签/窗口中打开链接时,关闭模式对话框

如何防止applescript在新的浏览器窗口中打开.webloc文件?

如何关闭Windows中由计划任务打开的浏览器窗口

尝试关闭和打开浏览器时出现连接拒绝错误

电子浏览器窗口关闭时返回

当浏览器窗口关闭 PHP 时销毁 cookie

更改窗口大小(浏览器)时如何防止div移动?

如何跳至浏览器页面顶部

当调用脚本关闭时,如何将python数据传递回调用脚本,使浏览器窗口保持打开状态

检测浏览器关闭事件时如何显示自定义弹出窗口?

关闭浏览器窗口/选项卡时如何删除localStorage项目?

如何防止Firefox和相关浏览器中出现裸窗口?

当浏览器窗口设置为低高度时,如何防止我的背景图像变得小于整个页面的高度?

在移动浏览器中打开Bootstrap 3模式时,如何防止后台滚动?

运行脚本时如何防止slimerjs浏览器打开?

使用JavaScript打开新的浏览器窗口时出错

VBScript打开,运行和关闭Tor浏览器

打开时如何设置关闭浏览器或标签页弹出