如何获取角度 2 中的第一个父 scrollTop 元素?

AngularOne

在任何 HTML 元素上使用此方法:

this.viewContainerRef.element.nativeElement.offsetTop
this.viewContainerRef.element.nativeElement.offsetLeft

我参考了容器:

constructor(private viewContainerRef)

只有当您不向下滚动(父级的innerScroll 或浏览器滚动条,所有文档)时,才会很好地工作。例如,考虑具有内部滚动的表格。如果我将工具提示添加到任何行,它将起作用,但是当我滚动表格时,计算是错误的,我需要以某种方式获取滚动条的 offsetTop 并将其减去:

this.viewContainerRef.element.nativeElement.offsetTop - (the scrollTop of first parent)

如何用 angular 2 来完成?

我发现了一些可能有帮助的东西,但是在将其更改为打字稿时,它在这一行失败了: while (_el = _el.offsetParent) {

findElePosition(_el){

    var _el = this.viewContainerRef.element.nativeElement;

  var isIE = navigator.appName.indexOf('Microsoft Internet Explorer') != -1;

  var curleft = 0;
  var curtop = 0;
  var curtopscroll = 0;
  var curleftscroll = 0;

  if (_el.offsetParent){
    curleft = _el.offsetLeft;
    curtop = _el.offsetTop;

    /* get element scroll position */
    var elScroll = _el;
    while (elScroll = elScroll.parentNode) {
      curtopscroll = elScroll.scrollTop ? elScroll.scrollTop : 0;
      curleftscroll = elScroll.scrollLeft ? elScroll.scrollLeft : 0;

      curleft -= curleftscroll;
      curtop -= curtopscroll;
    }

    /* get element offset postion */
    while (_el = _el.offsetParent) {
      curleft += _el.offsetLeft;
      curtop += _el.offsetTop;
    }
  }

  /* get window scroll position */
  var offsetX = isIE ? document.body.scrollLeft : window.pageXOffset;
  var offsetY = isIE ? document.body.scrollTop : window.pageYOffset;

  return [curtop + offsetY,curleft + offsetX];
}

另外,我怎么知道元素父滚动不是文档,我的意思是有一个innerDiv滚动。当滚动是文档时,根本不需要这个计算。

奥努尔汗艾塔克

如果您知道您的表的类,您可以创建一个循环来查找您的表,然后获取您的 offsetTop。我的意思是该类应该位于创建滚动的溢出元素上。找到偏移量后,您可以随意使用它。

  onMouseOver (event) {
    if (!event.target) {
      return;
    }

    // you can search for your table also with id 
    if (!$(event.target).hasClass("my-table")) {
      this.onMouseOver({target: event.target.parentNode});
      return;
    }

    console.log(event.target.scrollTop);

  }

如果您不使用 jquery,那么您也可以使用它。

  onMouseOver (event) {
    if (!event.target) {
      return;
    }

    if (!~event.target.className.indexOf("my-table")) {
      this.onMouseOver({target: event.target.parentNode});
      return;
    }

    console.log(event.target.scrollTop);

  }

它不会是文档,因为我们检查了类或 ID 名称,因此您无需知道它是否是文档。

编辑:您需要像这样添加鼠标悬停和类;

<table #my-overflowed-element class="my-table" >
  <tr #my-row-with-tooltip on-mouseover='onMouseOver($event)'>
  </tr>
</table>

如果它在另一个元素中,则该类应该在那里

<div #my-overflowed-element class="my-table">
    <table>
      <tr #my-row-with-tooltip on-mouseover='onMouseOver($event)'>
      </tr>
    </table>
</div>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从具有特定类的第一个输入中获取父表单元素

来自分类Dev

从具有特定类的第一个输入中获取父表单元素

来自分类Dev

如何从元素内获取scrollTop?

来自分类Dev

从$(this)元素获取tr中的第一个td

来自分类Dev

在Powershell中获取第一个元素的属性

来自分类Dev

刷卡中的数组获取第一个元素

来自分类Dev

如何快速找到大整数列表中list元素的2的第一个倍数?

来自分类Dev

如何检查数组中的第一个元素

来自分类Dev

如何淡入第一个元素并延迟2秒然后淡入下一个元素?

来自分类Dev

如何淡入第一个元素并延迟2秒然后淡入下一个元素?

来自分类Dev

如何从CSV列中获取第一个和最后一个元素

来自分类Dev

如何选择父元素的第一个子元素?

来自分类Dev

Angular2 http 获取第一个元素

来自分类Dev

如何仅按第一个元素对2D ArrayList <String>进行排序

来自分类Dev

如何获取SimpleXML对象的第一个元素?

来自分类Dev

如何仅隐藏父类的第一个元素

来自分类Dev

如何通过使用子元素的ID选择父对象的第一个孩子?

来自分类Dev

如何从另一个向量的另一个第一个元素减去向量中的第一个元素?

来自分类Dev

获取R中连续增加的数字的长度N的第一个序列的第一个元素

来自分类Dev

获取R中连续增加的数字的长度N的第一个序列的第一个元素

来自分类Dev

如何使用explode并在PHP的一行中获取第一个元素?

来自分类Dev

如何在Perl中获取xml元素的第一个和最后一个子元素

来自分类Dev

获取数组中的第一个和最后一个元素

来自分类Dev

如何从Selenium Java中的json列表中获取第一个元素?

来自分类Dev

只获取第一个元素的子元素

来自分类Dev

如何将节点元素移动到其父元素中的第一个元素

来自分类Dev

如何访问字典中的第一个和最后一个元素?

来自分类Dev

如何忽略xpath中的第一个和最后一个元素

来自分类Dev

Angular2仅在第一个元素上使用ng-for时如何设置元素类名称

Related 相关文章

  1. 1

    从具有特定类的第一个输入中获取父表单元素

  2. 2

    从具有特定类的第一个输入中获取父表单元素

  3. 3

    如何从元素内获取scrollTop?

  4. 4

    从$(this)元素获取tr中的第一个td

  5. 5

    在Powershell中获取第一个元素的属性

  6. 6

    刷卡中的数组获取第一个元素

  7. 7

    如何快速找到大整数列表中list元素的2的第一个倍数?

  8. 8

    如何检查数组中的第一个元素

  9. 9

    如何淡入第一个元素并延迟2秒然后淡入下一个元素?

  10. 10

    如何淡入第一个元素并延迟2秒然后淡入下一个元素?

  11. 11

    如何从CSV列中获取第一个和最后一个元素

  12. 12

    如何选择父元素的第一个子元素?

  13. 13

    Angular2 http 获取第一个元素

  14. 14

    如何仅按第一个元素对2D ArrayList <String>进行排序

  15. 15

    如何获取SimpleXML对象的第一个元素?

  16. 16

    如何仅隐藏父类的第一个元素

  17. 17

    如何通过使用子元素的ID选择父对象的第一个孩子?

  18. 18

    如何从另一个向量的另一个第一个元素减去向量中的第一个元素?

  19. 19

    获取R中连续增加的数字的长度N的第一个序列的第一个元素

  20. 20

    获取R中连续增加的数字的长度N的第一个序列的第一个元素

  21. 21

    如何使用explode并在PHP的一行中获取第一个元素?

  22. 22

    如何在Perl中获取xml元素的第一个和最后一个子元素

  23. 23

    获取数组中的第一个和最后一个元素

  24. 24

    如何从Selenium Java中的json列表中获取第一个元素?

  25. 25

    只获取第一个元素的子元素

  26. 26

    如何将节点元素移动到其父元素中的第一个元素

  27. 27

    如何访问字典中的第一个和最后一个元素?

  28. 28

    如何忽略xpath中的第一个和最后一个元素

  29. 29

    Angular2仅在第一个元素上使用ng-for时如何设置元素类名称

热门标签

归档