我对JS不是特别了解(只能看懂和修改JS代码的程度的能力,但是无论任何JS代码都敢修改的程度),这效果能做出来的,我就不贴具体代码了。
不需要嵌套,纯原生。将来浏览器会支持这个效果的。
// 设置准备要滚动的元素let p = document.getElementById('userDetailContent').parentNode
// 该元素目前 顶部 被卷起(隐藏)的高度
let t = p.scrollTop
// 这段匀速运动 分30步来走, step:每一步走的距离
let step = Math.floor(t / 30)
if( step > 1) //一步最少要走1个像素,否则无限触发滚动
(function walkTop(t) {
setTimeout(()=>{
// scrollTo( x轴滚动, y轴)
p.scrollTo(0, t -= step) // 走一步, 将剩余路程 减去一步的路程的结果
if(t<0) return // 停止迭代循环
walkTop(t)//迭代
},1)// 每毫秒走一步
})(t) // 自执行函数 传入参数t ,!important