Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/404.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 获取滚动div的位置并检测滚动到哪个元素_Javascript_Html_Css_Reactjs_Google Chrome - Fatal编程技术网

Javascript 获取滚动div的位置并检测滚动到哪个元素

Javascript 获取滚动div的位置并检测滚动到哪个元素,javascript,html,css,reactjs,google-chrome,Javascript,Html,Css,Reactjs,Google Chrome,我想用react构建一个小模块。在这个模块中,我有一个可滚动的元素 scroll-snap-points-y: repeat(40px); scroll-snap-type: y mandatory; 因此,它坚持列表中的一个元素。我需要知道哪个元素当前位于中心(选中)。目前,我得到元素的scrollTop,并将其除以50(40px加上5px的边距)。但它只适用于狩猎。在chrome中,当它捕捉到一个元素时,scrollTop值为每个元素47,并随比例变化。在20+个元素上,如果我舍入值,这个

我想用react构建一个小模块。在这个模块中,我有一个可滚动的元素

scroll-snap-points-y: repeat(40px);
scroll-snap-type: y mandatory;
因此,它坚持列表中的一个元素。我需要知道哪个元素当前位于中心(选中)。目前,我得到元素的
scrollTop
,并将其除以50(40px加上5px的边距)。但它只适用于狩猎。在chrome中,当它捕捉到一个元素时,scrollTop值为每个元素47,并随比例变化。在20+个元素上,如果我舍入值,这个错误足以选择上一个元素。是否有一种方法可以得到要除以的元素的大小。或者我可以用另一种方式获取当前选定的元素。
另外,我不希望我的代码中有任何依赖项,因为它几乎完成了,而且我除了自身反应之外没有任何依赖项。

您可以为所选元素分配一个ref并获取其ref.current.getClientRects(),您将从中获得它的坐标。只是一个idea@dorriz,我得到了current.firstChild.getClientRects(),它在safari中返回的高度为40,在chrome中返回的高度为38(但我想这是没有边距的)。如果利润不被扭曲,它可能会起作用。谢谢(如果成功的话,我会回答我的问题)太好了!如果你得到一个解决方案,一定要把它贴出来帮助别人。继续学习!您是否将交叉口观察者视为一个选项?