Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/418.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 角度4将div滚动一定量_Javascript_Html_Angular - Fatal编程技术网

Javascript 角度4将div滚动一定量

Javascript 角度4将div滚动一定量,javascript,html,angular,Javascript,Html,Angular,我有一个div,它的高度是给定的,并且它有overflow-y:auto,所以必要时它有一个滚动条。 现在,我希望能够在事件上滚动该div一定数量。到目前为止,我已经能够scrollIntoView(false)将其滚动到底部。我想滚动它几乎,但不完全到底部。我不想滚动窗口,因为该div相对于窗口是位置:固定的。 据我所见,这在技术上是可能的,但人们一直在提及各种插件。现在,插件不是一个选项(可能在将来的版本中,但不是现在) 标准方法如何: 首先,将引用分配给div,如下所示: <div

我有一个div,它的高度是给定的,并且它有
overflow-y:auto
,所以必要时它有一个滚动条。
现在,我希望能够在事件上滚动该div一定数量。到目前为止,我已经能够
scrollIntoView(false)
将其滚动到底部。我想滚动它几乎,但不完全到底部。我不想滚动窗口,因为该div相对于窗口是
位置:固定的。
据我所见,这在技术上是可能的,但人们一直在提及各种插件。现在,插件不是一个选项(可能在将来的版本中,但不是现在)


标准方法如何: 首先,将引用分配给div,如下所示:

<div #divToScroll></div>
最后,当您需要滚动时,只需调用:

divToScroll.nativeElement.scrollTop = 30;

当我们需要滚动元素(比如*ngFor中的一个特定div)时,它会变得单调乏味 最好的方法是使用以下方法获取图元的当前位置和高度:

为每个div动态分配id
[attr.id]=“section”+data.id”

getBoundingClientRect()。top
将给出距顶部的高度x是任何恒定值,如标题部分的高度


它主要用于提供类似scrollspy的功能。

在该div中放置一个虚拟span,然后滚动到该span?@Vega,这是个好主意,但取决于屏幕高度,该div需要滚动到不同的位置。我想我可能会疯狂地使用
渲染器2
,并将我的跨度放在我需要的地方,但这可能会成为一团乱麻。它只是一个元素,但取决于屏幕高度和其他可见元素,它需要以不同的方式滚动,以使特定的div(在本例中是一个输入)可见。我不知道为什么,但这是行不通的。
el.nativeElement.scrollTop
始终保持0.code。现在我(再次)检查它,我意识到
overflow-y:auto
位于围绕所讨论组件的div中。可能是我需要在父组件中设置该div的
scrollTop
。。哦,该死。这就解决了问题。谢谢只需要将事件传播到父组件并滚动到那里。
<div #divToScroll></div>
@ViewChild('divToScroll') divToScroll: ElementRef;
divToScroll.nativeElement.scrollTop = 30;
<div id="parentDiv" #parentDiv>
  <div *ngFor="let data of content" [attr.id]=" 'section' + data.id">
    <p>section {{data.id}}</p>
    <botton (click)="scrollMyDiv(data)"></button>
  </div>
</div>
  scrollMyDiv(item) {
    let section = 'section' + item.id);
    window.scroll(0, 0);  // reset window to top 
    const elem = document.querySelector('#' + section);
    let offsetTop = elem.getBoundingClientRect().top` - x;  
    window.scroll(0, offsetTop);

  }`