/ / Кутовий відсоток прокрутки - jquery, angularjs, прокрутка, смуга прокрутки, відсоток

Відсоток кутової прокрутки - jquery, angularjs, прокрутка, смуга прокрутки, відсоток

Мені потрібно знайти перевага смуги прокруткив 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, я отримую відсоток, але він працює лише в декількох висотах екрана. Мені потрібно загальне рішення і пізніше, коли я додаю більше елементів до дому, а тіло розширюється, щоб дати мені правильний%. Будь-які ідеї?

Відповіді:

0 для відповіді № 1

Ви повинні використовувати $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");
}
});