如何在angularjs中获取元素的当前位置

时间:2016-01-30 10:33:58

标签: javascript angularjs events dom-manipulation

我想在滚动页面时更改用户界面,为此我想获得div元素的位置(顶部和底部),我如何在angularjs中执行此操作?在下面的代码中,我如何获得top_position?

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**);

});

2 个答案:

答案 0 :(得分: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
}

答案 1 :(得分:2)

基本上,您可以使用两个选项来获取所需元素的top位置。

  1. .offset()会给你元素和位置的位置可以提供top& left职位。但这确实以document高度计算,而不是以视口高度计算。
  2. .scrollTop()是方法,您可以获得与视口(窗口)相关的高度。我认为这是合适的事情。
  3. 除此之外,我建议您将代码移至指令,以便更好地控制该DOM。