Javascript AngularJS';滚动顶部';相等的
我希望在AngularJS指令中实现类似的功能: 这相当简单,当您不在页面顶部时,它会在一个按钮中淡出以滚动到顶部:Javascript AngularJS';滚动顶部';相等的,javascript,angularjs,angularjs-directive,Javascript,Angularjs,Angularjs Directive,我希望在AngularJS指令中实现类似的功能: 这相当简单,当您不在页面顶部时,它会在一个按钮中淡出以滚动到顶部: $(窗口)。滚动(函数(){ 如果($(this).scrollTop()>100){ $this.fadeIn(); }否则{ $this.fadeOut(); } }); 但是,我很难找到如何以角度获取当前滚动位置。我不想只为这一件事而使用jQuery。我不相信在角度上有任何东西可以获得滚动位置。只需使用纯香草JS 您可以在任何元素上检索scrollTop属性 为你拉小
$(窗口)。滚动(函数(){
如果($(this).scrollTop()>100){
$this.fadeIn();
}否则{
$this.fadeOut();
}
});
但是,我很难找到如何以角度获取当前滚动位置。我不想只为这一件事而使用jQuery。我不相信在角度上有任何东西可以获得滚动位置。只需使用纯香草JS 您可以在任何元素上检索scrollTop属性 为你拉小提琴:
这是服务$window的属性将$window注入控制器,您可以在scroll上获得滚动位置
var windowEl = angular.element($window);
var handler = function() {
console.log(windowEl.scrollTop())
}
windowEl.on('scroll', handler);
从另一个进行自适应您可以使用
angular.element(document).bind('scroll', function() {
if (window.scrollTop() > 100) {
$this.fadeIn();
} else {
$this.fadeOut();
}
});
您可以使用like作为polyfill 这里有一个
这导致了chrome和firefox的不同行为。这个问题有什么解决方案吗?我猜这是在访问jqLite(或jQuery)方法?是的,使用Angular的jqLite!你真的应该添加一些解释,解释为什么这个代码应该工作——你也可以在代码本身中添加注释——在当前的形式下,它没有提供任何解释,可以帮助社区的其他人理解你为解决/回答问题做了什么。
var windowEl = angular.element($window);
var handler = function() {
console.log(windowEl.scrollTop())
}
windowEl.on('scroll', handler);
angular.element(document).bind('scroll', function() {
if (window.scrollTop() > 100) {
$this.fadeIn();
} else {
$this.fadeOut();
}
});
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 };
}