javascript - HTML + JS - float 标题栏的变体和指向命名 anchor 错误的链接

标签 javascript html css dom

我有一个带有 float 标题栏的网站。 (下面的代码)我已经解决了您希望我询问的问题,但我还有另一个问题。

一个常见的问题是,当您单击页面中指向 anchor 的链接时,标题栏会覆盖所需的目的地,即 anchor #part2。这是一个有很多解决方案的已知问题。 (例如 This stack question)我的解决方案是简单地将 anchor 向上移动。这行得通但是

  • 如果您粘贴 http://server/page.html#part2链接到浏览器地址栏,它有效。
  • 如果您单击页面内指向 anchor 的链接,则偏移量不会生效。我相信这是因为当我们点击 #part2 链接时,浏览器会说“好的,我必须向下滚动到 #part2。让我的计算机在哪里#第 2 部分是。它位于 y=1,200 像素处。” (组成数字)。但是,当滚动开始时, float 标题 div 元素会 float 到相对位置,并且 1,200 像素数会超出。

请在此处查看完整示例:https://jsfiddle.net/smorton/7p431smr/

我怀疑我的解决方案是找到另一种方法使标题栏 float ,或者找到某种方法在 scroll() 函数中重新计算页面偏移量。但我需要有关这些或替代解决方案的帮助。

更新

我没有明确说明,但对我来说重要的是,当页面滚动到顶部时, float 标题栏位于页面顶部。就像在我的 jsfiddle 示例中一样。想象一下,这个 Stack 页面在顶部看起来很正常,但是当你向下滚动时,一个小栏说“HTML + JS - float 标题栏上的变体和指向命名 anchor 错误的链接”跟着你向下滚动。我认为,目前提供的解决方案依赖于将标题栏放在最顶部,这不是我想要的。

解决方案

好吧,最后我只是在固定 40px 高度的标题栏周围放置了另一个 div,这样即使弹出标题栏,40px 仍然保留。

html:

<div id=header_placeholder>
<div id=floatbar class=header> This is the header bar<br>It will follow as you scroll</div>
</div>

CSS:

#header_placeholder {height: 40px;}

float 标题栏 jquery 1.11 代码:(请首选 jsfiddle 链接)

$(window).scroll(function(){

    if ($(window).scrollTop() >= 100)
    {
        $("#floatbar").css({position:'fixed',top:'0'});
        $(".summary").css({margin: '0'});
    }
    else
    {
        $("#floatbar").css({position: 'relative'});
        $(".summary").css({margin: '8 px 0'});
    }
});

最佳答案

这似乎有效:https://jsfiddle.net/z8s7gugz/1/

这种方法的一个缺点是滚动条也不能覆盖标题的空间。在示例中,它从顶部开始 40 像素。

body { padding: 0; margin: 0; }
.header {
  height: 40px;
}
.scrollcontent {
  position: absolute; /* I'm not sure why this is needed, Chrome wont do the overflow without it */
  width: 100%;
  height: calc(100% - 40px);
  overflow: auto;
}

<div class="header"> This is the header bar<br>It will follow as you scroll</div>
<div class="scrollcontent">
  [content]
</div>

不需要任何 JavaScript,except for perhaps a fallback for the css calc .

关于javascript - HTML + JS - float 标题栏的变体和指向命名 anchor 错误的链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37037610/

相关文章:

javascript - 如何关闭所有其他子菜单?

html - 为什么文本框和按钮之间没有间距?

css - 如何调整 <a> 和 <p> 之间的空间

javascript - Canvas 更新问题

javascript - FOR 循环内的嵌套 IF 仅适用于第一个值

javascript - fs.readFileSync 错误

html - 如何在图像周围添加圆 Angular 边框?

javascript - Foundation 6 关闭 Canvas 菜单

javascript - 如何用javascript改变 `::webkit-scrollbar`的css样式?

jquery - 动态加载样式表以在 IE 中打印