getParentScrollElement【获取父元素滚动元素】 🔥
描述
获取当前 dom 元素在哪个父元素下进行滚动,返回最近的 overflow: auto 的父元素 Dom。
如果当前 Dom 元素正好是滚动视图,返回自己;否则返回最近的上级滚动的视图容器。
# 1.示例
.ex-scroll-view__wrap 容器
box-1
box-2
box-3
box-4
复制代码
# 打印结果:
# 2.入参说明
| 参数 | 说明 | 类型 | 是否必填 | 默认值 |
|---|---|---|---|---|
| targetElement | 目标 dom 元素 | HTMLElement | - | - |
# 3.源码
源码,点开查看 👈
import getStyle from './getStyle'
/**
* 获取当前元素在哪个父元素滚动视图,如果当前Dom元素正好是滚动视图,返回自己;否则返回最近的上级滚动的视图容器
* @param {HTMLElement} targetElement 目标元素
* @returns {{HTMLElement}}
*/
function getParentScrollElement(targetElement = null) {
const cb = (targetElement = null, scrollView = { el: null }) => {
if (['BODY', 'HTML'].includes(targetElement?.tagName)) {
scrollView.el = document?.body
} else if (
targetElement &&
(getStyle(targetElement, 'overflow-y') == 'auto' || getStyle(targetElement, 'overflow-x') == 'auto')
) {
scrollView.el = targetElement
scrollView.el = targetElement
} else if (targetElement?.parentElement) {
cb(targetElement.parentElement, scrollView)
}
return scrollView
}
const { el } = cb(targetElement)
return el
}
export default getParentScrollElement
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
上次更新: 2025/07/01, 14:52:29