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でこれを達成するためのより良い方法があれば、アドバイスをいただければ幸いです。