【发布时间】:2013-12-13 01:27:37
【问题描述】:
我正在尝试制定一个固定 div 的算法,该 div 的高度会增加(在滚动时),直到它等于视口的高度或相对于另一个 div 具有固定位置的 div 和视口底部
当用户滚动到那么远时,我正在使用 Twitter Bootstrap 词缀将我的辅助导航栏(黄色)和侧边栏(黑色)锁定到屏幕顶部。 这很好用。侧边栏是给我带来麻烦的部分。当它处于其起始位置时(如下图所示),我希望栏的顶部位于 30 像素 从二级导航栏(黄色)向下,从页面底部向上 30 像素。
当用户滚动时,栏应增加高度,使其保持在辅助导航栏下方 30 像素和屏幕底部上方 30 像素(如下图所示)
在酒吧固定位置后,我可以做我需要做的事情。
.sidebar {
position:fixed;
top:100px;
bottom:30px;
left:30px;
}
我想不通的是如何将侧边栏的顶部相对于我的 辅助导航栏和我的侧边栏的底部相对于底部 屏幕的。我已经尝试在开始和结束时计算侧边栏的高度 滚动,但这会导致问题。
我还尝试计算侧边栏的最终高度并让底部 侧边栏刚刚离开屏幕边缘(当它处于初始位置时),但是 如果右侧没有足够的内容来保证滚动,我没有办法 到达滚动条底部的项目。另外,我的屏幕开始弹跳 以一种非常不吸引人的方式。
下面是当前使用的代码:
ShelvesSideBar.prototype._resize_sidebar = function(_this) {
var PADDING = 50;
var window_height = $(window).height(),
nav_bar_height = $('.nav_bar').height() + $('.secondary_tabs').height(),
sidebar_height = window_height - nav_bar_height - PADDING,
sidebar_scrollable_height = sidebar_height - $('.bar_top').height();
_this.$container.height(sidebar_height);
_this.$container.find('.bar_bottom').height(sidebar_scrollable_height);
/* reset the nanoscroller */
_this.$container.nanoScroller();
};
此代码在页面加载时调用,并在窗口调整大小时再次调用。任何帮助将不胜感激!
【问题讨论】:
标签: javascript jquery twitter-bootstrap affix