我需要在angular.js中找到滚动条的优势。然后,当它达到约60%时调用一个函数。现在我正在使用从指令调用的范围函数,唯一的问题是我无法找到滚动条滚动下来的百分之几。这是我到目前为止,看起来不太好......
app.directive('whenScrolled', function($window) {
return function(scope, element, attr) {
var scrolledEl = angular.element($window);
angular.element($window).bind('scroll', function() {
var offSet = scrolledEl.offset(),
height = scrolledEl.height(),
scrolledPercentage = (offSet / height)*11;
if (scrolledPercentage >= 60) {
scope.$apply(attr.whenScrolled);
}
});
};
});
正如你所看到的,我通过实验发现,当我将其乘以11时,我得到百分比,但它仅在几个屏幕高度起作用。我需要一个通用的解决方案,之后,当我向dom添加更多元素并且身体延伸以给出正确的%。有什么想法吗?
答案 0 :(得分:0)
您应该使用$window.pageYOffset
和$window.innerHeight
他们的分区会给你一个从0到1的值,所以如果你喜欢比较一个百分比的数字,只需乘以100。
这应该像你想要的那样工作,或多或少(只需将console.log替换为你需要采取的任何行动,如果百分比> 60):
angular.element($window).bind('scroll', function() {
var offSet = $window.pageYOffset,
height = $window.innerHeight,
scrolledPercentage = (offSet / height * 100);
//console.log(scrolledPercentage);
if (scrolledPercentage >= 60) {
console.log(scrolledPercentage + ' over 60');
}
});