村委
村委
  • 发布:2016-08-10 17:02
  • 更新:2016-08-10 18:02
  • 阅读:4024

获取滚动条高度

分类:MUI
mui

怎么获取元素的滚动条高度,点击一个元素,滚动条慢慢往下拉,但是需要获取到当前元素的滚动条高度,不监听scroll的话不知道为什么获取不到,哪位大神帮忙解决下 谢谢

2016-08-10 17:02 负责人:无 分享
已邀请:
BoredApe

BoredApe - 有问题就会有答案。

如果使用了scroll控件(scroll控件使用transform模拟页面滚动)因此无法通过document.body.scrollTop获取需要监听scroll控件的滚动事件获取detail.y 或者是使用mui('.mui-scroll-wrapper').scroll()[0].y主动获取
如果没有使用可以使用js原生document.body.scrollTop获取

  • 村委 (作者)

    那用了scroll就不能使用点击事件来获取滚动条 高度了是吧

    2016-08-10 18:03

  • BoredApe

    或者是使用mui('.mui-scroll-wrapper').scroll()[0].y主动获取

    2016-08-10 18:06

  • 村委 (作者)

    回复 BoredApe:还是获取的0 mui('#offCanvasContentScroll').scroll().scrollTo(0,-($(_this)[0].offsetHeight + Math.abs(_offCanvasContentScroll.scrollTop())),100); 每次点击 我都会往上面走 但是你说的主动获取还是获取不到

    2016-08-10 18:12

  • BoredApe

    你页面中有几个scroll?用mui('.mui-scroll-wrapper').scroll()打印下

    2016-08-10 18:15

  • 村委 (作者)

    回复 BoredApe: 刚刚太急了 没注意到 写了两个 页面写久了 忘记用了两个了 抱歉 现在可以了 谢谢

    2016-08-10 18:18

  • hellolizhao

    回复 BoredApe: 这个mui('.mui-scroll-wrapper').scroll()是空的 报错了

    2019-12-27 11:51

行走的奇葩

行走的奇葩

不监听滚动事件怎么获取?

  • 村委 (作者)

    一定要监听滚动事件才能获取吗???

    2016-08-10 17:18

lsvih

lsvih

不管干什么,总是需要一个事件来触发的。所以你可以选择监听scroll =>滚动条的滚动过程中会触发事件,此时就能获取到元素高度。
再或者你也可以用touchend之类的来触发事件,全看你自己的需求

  • 村委 (作者)

    我是写了一个点击事件 然后来获取他的滚动条高度 我是一点击就需要获取 而不是滚动鼠标才去获取 我需要的就是尽量不用鼠标 我写的方法 是我用jq测试好了的 但是弄在mui上面就是不行 还有人给我说不是框架的问题 不是框架的问题 为什么设置滚动条的高度的时候 要用负值 而且使用监听事件获取的高度全是负值

    2016-08-10 17:35

  • lsvih

    回复 村委:的确不是框架问题。负值加个负号就行。你可以把代码贴上来大家帮你看看。

    2016-08-10 17:39

  • 村委 (作者)

    回复 lsvih: 但是为什么我用jq获取就获取不到

    2016-08-10 17:41

  • lsvih

    回复 村委:你可以贴个代码看看呗。可能的原因太多了,这么问没人能帮上忙

    2016-08-10 17:51

赵梦欢

赵梦欢 - 专注前端,乐于分享!

当前元素的滚动条高度,可以通过scrollHeight属性获得,例如hello mui中im-chat中聊天消息滚动的实现方法,每次发送消息调用这个方法:

// 消息滚动  
var msgScrollTop = function(){  
    ui.msgList.scrollTop = ui.msgList.scrollHeight + ui.msgList.offsetHeight;  
}
  • 村委 (作者)

    我去看看

    2016-08-10 18:06

该问题目前已经被锁定, 无法添加新回复