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
可以给你提供一点思路,jquery有个方法animate动画效果。详情可以参考他的帮助文档,使用很简单一个大的div,设置好他的高度height:400pxoverflow:hidden,让超出部分隐藏,div里面有个小层,来放你要滚动的内容,点击一下top 就animate({"margin-top":"每次滚动的像素"},"time,滚动的时间",function(){//滚动完之后是否执行其他函数})