如何在更高的页面中制作一个比屏幕高度更高的浮动面板,这样面板始终保持可见,但滚动到足以显示它的所有部分?
这让我觉得与更常见的“panel that stays in one spot”类似,但有一个额外的挑战:因为我的魔法面板比窗户高,所以将面板顶部固定在屏幕顶部(或事实上,屏幕上的任何地方意味着面板的下部区域永远不会显示。
可能还有其他方法可以达到目标,但我想象的是FWIW
position:static
(默认值)。position:fixed
。我猜#2也可以按比例滚动,如果可能的话,那么当窗口向下滚动时,比如说,它完全行程的30%,面板也会向下滚动30%的行程。
具体地说,假设页面高度为1000行,面板高度为200行,窗口高度为100行。
position:fixed
。答案 0 :(得分:0)
您可以使用三条信息执行此操作:窗口的高度,窗口向下滚动的距离以及面板的高度。
简单地说,让小组position:static
开始。一旦窗口向下滚动windowScroll + windowHeight >= panelHeight
,请将面板设置为position:fixed
,top
位于windowHeight - panelHeight
,以便面板完全移出屏幕,除了等于窗口高度的数量。编辑:稍微误读了您的问题:不要使用windowHeight - panelHeight
,使用当用户滚过时要显示的面板数量。
聆听窗口(或文档,可能必须测试)onscroll
事件,告诉您何时重新计算面板的状态。为了防止IE7和IE8发生阻塞(它们发送太多onscroll
个事件),要么使用超时模拟监听onscroll
事件,要么取消注册监听器约50-500ms(取决于复杂性)每次计算后。
注意:获取视口高度可以是a little tricky。要确定滚动的距离,请尝试$(window).scrollTop()或等效。至于面板高度,请记住height,innerHeight和outerHeight之间的浏览器差异(或者使用一个提供与该值无关的浏览器的库,我相信jQuery会这样做。)
答案 1 :(得分:0)
这是我对基于scrollTop();
查看此演示并提出任何问题 http://jsfiddle.net/4ZWQU/10/ 。