我正在尝试制定一个固定 div 的算法,该 div 的高度(滚动时)会增长,直到它等于视口的高度或相对于另一个 div和 视口底部具有固定位置的 div
当用户滚动那么远时,我正在使用 Twitter Bootstrap 词缀将我的辅助导航栏(黄色)和侧边栏(黑色)锁定到屏幕顶部。这工作正常。侧边栏是给我带来麻烦的部分。当它处于其起始位置时(如下图所示),我希望栏的顶部位于辅助导航栏(黄色)下方 30px 和页面底部上方 30px 处。
当用户滚动时,该栏的高度应增加,使其保持在辅助导航栏下方 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();
};
此代码在页面加载时调用,并在窗口调整大小时再次调用。任何帮助将不胜感激!