我正在使用Angular框架編寫單頁面應用程序。我是新手。我讀過this guide來幫助我理解jQuery和Angular之間的根本區別,我希望儘可能地遵循這個指導,而不是使用jQuery。如何在不使用jQuery的情況下獲得元素的offset()。top值?
除了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');
}
})
}
}
}
如果有一個更好的方法來實現這一目標的角度說,我仍然只是沒有得到,我會很感激的建議。
接受的解決方案沒有考慮當前滾動位置考慮進去,看到我的回答如下 – schellmax