【发布时间】:2016-08-28 18:33:06
【问题描述】:
我正在尝试将侧边栏与我的主要内容相关联。我在这里尝试过指令。虽然我在顶部词缀上取得了成功,即它在向下滚动时可以工作并保持在顶部,但是如果我的侧边栏内容更长,它就无法滚动。我想将它修复到顶部并根据主要内容将其移动到可滚动状态。但如果它的内容超过屏幕,它也应该向下滚动并同时停留在底部。
<div class="background-white" sidebar-affix data-spy="affix" data-offset-top="80" data-offset-bottom="10">My sidebar content here</div>
.directive('sidebarAffix', function($window) {
return {
restrict: 'EA',
link: function(scope, element, attrs) {
var originOffsetTop = element[0].offsetTop;
scope.condition = function() {
return $window.pageYOffset > originOffsetTop;
};
angular.element($window).bind('scroll', function() {
scope.$apply(function() {
console.log($window.pageYOffset > originOffsetTop);
if (scope.condition()) {
angular.element(element).removeClass('affix-top');
angular.element(element).addClass('affix');
} else {
angular.element(element).addClass('affix-top');
angular.element(element).removeClass('affix');
}
});
});
}
};
})
如果侧边栏比预期的长,我希望可以滚动,但在这种情况下它应该固定在底部。
【问题讨论】:
-
您为 .affix-top 提供了哪些样式?是否存在任何顶部导航栏?如果不尝试将 max-height: 100% 放在 .affix-top 中。 Fiddle 将有助于快速解决问题。
标签: javascript jquery html css angularjs