scrollToElement【滚动到某个dom元素】 🔥
描述
垂直滚动到某个 dom 元素位置,比较常用✴️
# 1.示例
复制代码
# 2.入参说明
| 参数 | 说明 | 类型 | 是否必填 | 默认值 |
|---|---|---|---|---|
| target | 目标元素 或 (传入完整的 css class | css id) | HTMLElement String | 是 | - |
| scrollElement | 滚动容器元素 或 (传入完整的 css class | css id) | HTMLElement String | - | - |
| cb | 滚动后回调函数 | Function | - | - |
| duration | 滚动时长 | number | - | 400(单位 ms) |
| offsetTop | 偏移量 | number | - | 0) |
# 3.源码
源码,点开查看 👈
import getParentScrollElement from './getParentScrollElement'
import isString from '@/base/isString'
import getAbsOffsetTop from './getAbsOffsetTop'
import scrollToY from './scrollToY'
/**
* @description 垂直滚动到某个元素位置
* @param {string | HTMLElement} target 目标元素
* @param {{}} scrollElement 滚动元素
* @param {Function} cb 滚动结束后回掉方法
* @param {number} duration 滚动时长
* @param {number} offsetTop 偏移量
*/
function scrollToElement({ target = '', scrollElement = null, cb = () => {}, duration = 400, offsetTop = 0 }) {
let targetDOM = target
if (isString(target)) {
targetDOM = document.querySelector(target)
if (!targetDOM) {
console.error(`[warning] 缺少target字段值`)
return
}
}
if (!scrollElement) {
scrollElement = getParentScrollElement(targetDOM)
}
if (scrollElement?.nodeType !== 1) {
console.error(`[warning] 传入的scrollElement非元素`)
return
}
if (targetDOM?.nodeType == 1) {
// 是元素
const to = getAbsOffsetTop(targetDOM, scrollElement) + offsetTop
const scrollTop = scrollElement.scrollTop
scrollToY(scrollElement, scrollTop, to, duration, cb)
}
}
export default scrollToElement
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
28
29
30
31
32
33
34
35
36
37
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
28
29
30
31
32
33
34
35
36
37
上次更新: 2025/07/01, 14:52:29