Jak uzyskać wartość offset (). Top elementu bez użycia jQuery?
Programuję aplikację jednostronicową przy użyciu frameworka Angular. Jestem nowy w tym. Przeczytałemten przewodnik aby pomóc mi zrozumieć podstawowe różnice między jQuery i Angular i chciałbym postępować zgodnie z tymi wskazówkami w jak największym stopniu, a NIE używać jQuery.
Z wyjątkiem tego, że jQuery pomaga obejść niektóre niezgodności przeglądarki i zapewnia użyteczną bibliotekę funkcji, takich jak możliwość poznania górnej pozycji elementu z góry okna, tak jak w$('element').offset().top
. Wygląda na to, że żaden zwykły Javascript nie jest w stanie zbliżyć się bez przepisania tej funkcjibyć lepszy pomysł, aby użyć biblioteki jQuery lub jQuery?
W szczególności staram się skonfigurować dyrektywę, która naprawia element na miejscu po przewinięciu jego górnej części do określonej pozycji w oknie. Oto jak to wygląda:
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');
}
})
}
}
}
Jeśli istnieje lepszy sposób na osiągnięcie tego w Angular, którego wciąż nie otrzymuję, będę wdzięczny za radę.