为什么给元素设置scrollTop不起作用?

今天要给一个元素添加一个向上滚动的效果,于是马上用到了scrollTop()。比如说是下面的页面结构:

#wrapper的高度是屏幕的可见高度,它在页面中不会随着页面的滚动而滚动。.scroll-fixed-count是#wrapper的子元素,它的高度很高,要远远超过#wrapper的高度。现在我想在某个事件触发之后,让.scroll-fixed-count向上移动100px,于是我用:

1

angular.element('.scroll-fixed-count').scrollTop(100)

  来实现,但问题是,并不能实现预期的效果,即实现如下的效果:

 

 不但不能实现如上的效果,我把页面手动滚上去一段距离,然后用:

1

angular.element('.scroll-fixed-count').scrollTop()

  来取它的scrollTop的值,也是0.

这里,之所以会出现这个问题,实际是对scrollTop的含义并没有搞清楚。实际上,scrollTop()方法返回或设置匹配元素的滚动条的垂直位置。什么意思呢?就是说,首先,这个元素必须本身有滚动条;如果这个元素本身没有滚动条,那么它的scrollTop()的值只会是0.就好像上面的例子,.scroll-fixed-count这个元素很长,但是它本身是没有滚动条的,所以无论你好像手动把它向上滚动了多少,它本身是没有滚动条的,有滚动条的是它的父元素#wrapper,要取也是取 angular.element('#wrapper').scrollTop() 。scrollTop指的是滚动条相对于其顶部的偏移。

总结一下,像上面这种情况,我要想将子元素.scroll-fixed-count向上滚动一些,我需要:

1、#wrapper具备滚动条;

2、设置#wrapper的overflow属性为auto或者scroll。如果不显示地设置这个属性,也不能实现。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值