让DOM元素自动滚到视野内ScrollIntoView
Posted yangzhou33
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了让DOM元素自动滚到视野内ScrollIntoView相关的知识,希望对你有一定的参考价值。
概述
项目中需要把一个DOM元素自动滚动到视野内,百思不得其解,最后再element库里面发现了这个方法,记录下来供以后开发时参考,相信对其他人也有用。
参考资料:element scroll-into-view.js
代码
代码如下:
/* eslint-disable no-param-reassign */
export default function scrollIntoView(container, selected)
if (!selected)
container.scrollTop = 0;
return;
const offsetParents = [];
let pointer = selected.offsetParent;
while (pointer && container !== pointer && container.contains(pointer))
offsetParents.push(pointer);
pointer = pointer.offsetParent;
const top = selected.offsetTop + offsetParents.reduce((prev, curr) => (prev + curr.offsetTop), 0);
const bottom = top + selected.offsetHeight;
const viewRectTop = container.scrollTop;
const viewRectBottom = viewRectTop + container.clientHeight;
if (top < viewRectTop)
container.scrollTop = top;
else if (bottom > viewRectBottom)
container.scrollTop = bottom - container.clientHeight;
以上是关于让DOM元素自动滚到视野内ScrollIntoView的主要内容,如果未能解决你的问题,请参考以下文章