Javascript 角度4将div滚动一定量
我有一个div,它的高度是给定的,并且它有Javascript 角度4将div滚动一定量,javascript,html,angular,Javascript,Html,Angular,我有一个div,它的高度是给定的,并且它有overflow-y:auto,所以必要时它有一个滚动条。 现在,我希望能够在事件上滚动该div一定数量。到目前为止,我已经能够scrollIntoView(false)将其滚动到底部。我想滚动它几乎,但不完全到底部。我不想滚动窗口,因为该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);
}`