我需要将div中的某个元素(不是直接子元素)滚动到视图中。
基本上,我需要与ScrollIntoView提供的功能相同的功能,但是对于指定的父级(只有这个父级应该滚动)。
此外,我不可能使用任何第三方库。
我不太确定如何解决这个问题,因为我做的JavaScript开发非常有限。有人能帮我吗?
我发现this code可以满足我的需要,但不幸的是它需要jQuery,我无法将其转换为纯JavaScript。
我需要将div中的某个元素(不是直接子元素)滚动到视图中。
基本上,我需要与ScrollIntoView提供的功能相同的功能,但是对于指定的父级(只有这个父级应该滚动)。
此外,我不可能使用任何第三方库。
我不太确定如何解决这个问题,因为我做的JavaScript开发非常有限。有人能帮我吗?
我发现this code可以满足我的需要,但不幸的是它需要jQuery,我无法将其转换为纯JavaScript。
4条答案
按热度按时间nxagd54h1#
我想我有一个开始。当你考虑这个问题时,你会想到让子div进入父div的可视区域。一种简单的方法是使用页面上的子位置相对于父位置在页面上的位置。然后考虑到滚动的父。这里有一个可能的实现。
只需要像这样传递父节点和子节点:
添加了一个在主元素甚至嵌套元素上使用此函数的演示
https://jsfiddle.net/nex1oa9a/1/
2nbm6dog2#
这个功能可以在几个步骤中实现。首先,使用
childElement.getBoundingClientRect();
获取子节点的位置,它将返回以下值然后根据左上角的值将子元素放置到父元素中,保持子元素
position
为absolute
。父元素的position
必须是relative
类型,才能正确放置子元素并获得ScrollIntoView
的效果。bis0qfac3#
你可以做一些简单的事情,比如:
基本上
window.location.href
应该可以帮助你。l7mqbcuq4#
试试这个,我觉得很好用。
方法
onListUp
和onListDown
应在按下向上和向下箭头时调用。focus
是元素数组的当前元素id。items
是列表DOM元素的数组。