我正在使用 Angular 框架编写单页应用程序。我是新手。我已阅读本指南以帮助我了解 jQuery 和 Angular 之间的根本区别,并且我想尽可能地遵循本指南而不使用 jQuery。
除了 jQuery 有助于解决一些浏览器不兼容问题并提供有用的函数库,例如能够从窗口顶部知道元素的顶部位置,如$('element').offset().top
. 如果不重写此函数,似乎没有普通的 Javascript 能够接近,此时使用 jQuery 或类似 jQuery 的库不是更好的主意吗?
具体来说,我要做的是设置一个指令,一旦元素的顶部滚动到窗口中的某个位置,就可以将其固定到位。这是它的样子:
directives.scrollfix = function () {
return {
restrict: 'C',
link: function (scope, element, $window) {
var $page = angular.element(window)
var $el = element[0]
var elScrollTopOriginal = $($el).offset().top - 40
$page.bind('scroll', function () {
var windowScrollTop = $page[0].pageYOffset
var elScrollTop = $($el).offset().top
if ( windowScrollTop > elScrollTop - 40) {
elScrollTopOriginal = elScrollTop - 40
element.css('position', 'fixed').css('top', '40px').css('margin-left', '3px');
}
else if ( windowScrollTop < elScrollTopOriginal) {
element.css('position', 'relative').css('top', '0').css('margin-left', '0');
}
})
}
}
}
如果在 Angular 中有更好的方法来实现这一点,但我仍然没有得到,我会很感激你的建议。