【问题标题】:Keeping div stuck on position, but let footer kick it up保持 div 停留在位置,但让页脚将其启动
【发布时间】:2018-06-22 19:21:02
【问题描述】:

标题可能听起来很奇怪,但我想通过菜单实现一些目标。

我在 jsfiddle 中嘲笑它,因为一个例子告诉了超过 1000 个单词 :)

页面内容(黄色)在标题(红色)下方滚动。左侧的菜单(蓝色)应保留在原位。这可以通过使用position: fixed 来完成。但是……

如果我们进一步滚动,页脚就会出现。如果我们进一步滚动,main 的大小(在红线和绿线之间)会变得更小,然后蓝色导航元素的高度。我现在希望将蓝色元素推到红色标题元素下方。

所以本质上蓝色元素应该坚持到它当前的位置,但是如果红线和绿线之间的高度变得小于导航元素的高度,它应该被页脚向上推。

我怎样才能让蓝框粘住但又让它被绿色页脚向上推?

【问题讨论】:

  • 我知道帮助页面。因此,我包含了一个 JSfiddle,其中包含我正在从事的项目的完整且最少的代码示例/模拟。我还有一个具体问题:如何使蓝色框被绿色页脚撞到。
  • 更大的问题是小提琴完全没有你的努力。这是一个“为我编写代码”请求,很可能因此而被关闭。如果 jsFiddle 出现故障,代码也应该在问题中
  • 相信我,我已经为这个问题苦苦挣扎了一段时间。但是为了一个最小的例子,我从小提琴中剥离了所有那些 JS :) 关于代码的好点。但不要淹没我遗漏代码的问题。

标签: javascript jquery html css


【解决方案1】:

我认为您正在寻找的是 Intersection Observer。 https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API

但是,请结帐: https://caniuse.com/#search=intersectionObserver

--- 但是有polyfills

或者也许 css 向导可以提出更好的解决方案:)

*编辑 实际上,你可以用一点 css 来做到这一点......它并不完美,但朝着更好的方向迈出了一步

header {
  position: fixed;
  width: 100%;
  height: 100px;
  top: 0;
  z-index: 2;
}

nav {
  height: 200px;
  outline: 1px solid blue;
  position: sticky;
  top: 0;
}

footer {
  height: 300px;
  margin-bottom: 10rem;
}

【讨论】:

  • 谢谢!没听说过的位置:粘性! jsfiddle.net/93eza485/124 按预期工作
  • 答案中唯一需要更改的是将 top:0 设置为 top: 100px 以保持粘性
猜你喜欢
  • 1970-01-01
  • 2011-12-23
  • 2010-11-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-13
  • 1970-01-01
  • 2011-10-18
  • 1970-01-01
相关资源
最近更新 更多