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ę.

questionAnswers(6)

yourAnswerToTheQuestion