2016-01-30 6 views
3

Я хочу изменить пользовательский интерфейс при прокрутке страницы, и для этого я хочу получить позицию элемента div (сверху и снизу), как я могу это сделать в угловые? В следующем коде, как я могу получить top_position?Как получить текущую позицию элемента в angularjs

var w=angular.element($window); 

w.bind('scroll', function(){ 

    var top_div=angular.element($('#top-div')); 
    // now here what function should i use ? 
    console.log("the top of the div having id top-div:"+**top_position**); 

}); 
+1

В чем проблема с текущим кодом? вам нужно только использовать 'top_div.offset(). top' должен работать, если jQuery был загружен до angularjs –

+0

@PankajParkar,« top_div.offset(). top »производит такое же значение, даже прокручиваю. Но поскольку я прокручиваю, значение верхней части должно измениться. –

+1

Он вычисляет, что в соответствии с документом .. Вам нужно рассчитать его относительно окна? –

ответ

2

В принципе можно использовать два варианта, чтобы получить top положение нужного элемента.

  1. .offset(), который даст вам положение элемента & может обеспечить top & left положение. Но это вычисляется с высотой document, а не с высотой порта просмотра.
  2. .scrollTop() - способ, которым вы можете получить высоту, относится к окну просмотра (окна). Я думаю, что это подходящая вещь.

Помимо этого я предлагаю вам переместить код в директиву, чтобы вы могли лучше контролировать этот DOM.

3

вы можете получить элемент DOM в функцию связи вашей директивы и делать с ним, куда вы хотите

scope: {...}, 
restrict: 'AE', 
controller: function() {}, 
link: function($scope, elem, attrs) { 
    var el = elem[0]; // elem - jQLite element, el - native DOM element 
    console.log(el.getBoundingClientRect()); // the bounding rect of the element 
} 
Смежные вопросы