Ответ 1
$window.pageYOffset
Это свойство из окна $service
Я хочу реализовать что-то подобное в директиве AngularJS:
https://github.com/geniuscarrier/scrollToTop/blob/master/jquery.scrollToTop.js
Это довольно просто, когда вы не находитесь в верхней части страницы, он будет исчезать кнопкой, чтобы прокрутить вверх:
$(window).scroll(function() {
if ($(this).scrollTop() > 100) {
$this.fadeIn();
} else {
$this.fadeOut();
}
});
Однако мне трудно найти, как получить текущее местоположение прокрутки в Angular. Я бы предпочел не использовать jQuery только для этой единственной вещи.
Спасибо!
$window.pageYOffset
Это свойство из окна $service
Я ничего не верю в Angular, чтобы получить позицию прокрутки. Просто используйте простой ваниль JS.
Вы можете получить свойство scrollTop для любого элемента.
https://developer.mozilla.org/en-US/docs/Web/API/Element.scrollTop
document.body.scrollTop
Сценарий для вас: http://jsfiddle.net/cdwgsbq5/
Ввести окно $в ваш контроллер, и вы можете получить положение прокрутки в прокрутке
var windowEl = angular.element($window);
var handler = function() {
console.log(windowEl.scrollTop())
}
windowEl.on('scroll', handler);
Адаптация из другого fooobar.com/questions/187162/...
Вы можете использовать
angular.element(document).bind('scroll', function() {
if (window.scrollTop() > 100) {
$this.fadeIn();
} else {
$this.fadeOut();
}
});
Вы можете использовать как polyfill здесь ссылка
function offset(elm) {
try {return elm.offset();} catch(e) {}
var rawDom = elm[0];
var _x = 0;
var _y = 0;
var body = document.documentElement || document.body;
var scrollX = window.pageXOffset || body.scrollLeft;
var scrollY = window.pageYOffset || body.scrollTop;
_x = rawDom.getBoundingClientRect().left + scrollX;
_y = rawDom.getBoundingClientRect().top + scrollY;
return { left: _x, top: _y };
}