首页 新闻 会员 周边 捐助

动态获取margin-top实现屏幕点击滚动

0
悬赏园豆:80 [已解决问题] 解决于 2020-06-09 15:05

在控制台直接修改margin-top值,可以恰好滚动到1080位置

可是,动态点击的就会点击多跑出来一些,这是为何?

问题补充:

大神们看过来!!!可以提高悬赏,想了一天没想出来

我的子页面每个页面都是1080px高度,但是每次都会多滚动出一部分

啾啾啾c的主页 啾啾啾c | 初学一级 | 园豆:45
提问于:2020-06-08 17:23
< >
分享
最佳答案
0

清除键盘默认事件,默认事件会导致点击滚动条1滚动,距离就大于1080了,所以我们只要记得使用前阻止下默认事件

啾啾啾c | 初学一级 |园豆:45 | 2020-06-09 14:23
其他回答(1)
0

$(".pages").attr("margin-top","1080px");

收获园豆:80
Java·小白 | 园豆:380 (菜鸟二级) | 2020-06-09 10:41

项目里不让用jq(╥﹏╥)

支持(0) 反对(0) 啾啾啾c | 园豆:45 (初学一级) | 2020-06-09 10:50

@啾啾啾c: 改高度也不行啊,治标不治本,看看是因为什么会多出来一块

支持(0) 反对(0) Java·小白 | 园豆:380 (菜鸟二级) | 2020-06-09 10:58

@Java·小白: 我高度的尺寸都是正常的
只要点击时到第二页,第二页就会多滚动上去一部分,造成第三页有一部分上来{{uploading-image-570675.png(uploading...)}}

支持(0) 反对(0) 啾啾啾c | 园豆:45 (初学一级) | 2020-06-09 11:02

@啾啾啾c:
将document.body.screenHeight赋值给data中自定义的变量:

data:{
screenHeight: document.body.clientHeight
}

页面mounted时,挂载window.onresize方法:

mounted () {
const that = this
window.onresize = () => {
return (() => {
window.screenHeight= document.body.clientHeight
that.screenHeight= window.screenHeight
})()
}
}

screenHeight属性值的变化,打印并观察screenHeight发生变化的值:

watch: {
screenHeight (val) {
// 为了避免频繁触发resize函数导致页面卡顿,使用定时器
if (!this.timer) {
// 一旦监听到的screenHeight值改变,就将其重新赋给data里的screenHeight
this.screenHeight = val
this.timer = true
let that = this
setTimeout(function () {
// 打印screenHeight变化的值
console.log(that.screenHeight)
that.timer = false
}, 400)
}
}
}

支持(0) 反对(0) Java·小白 | 园豆:380 (菜鸟二级) | 2020-06-09 11:23

@Java·小白: 我之前用scrolltop和scrollby写过类似的,因为领导更喜欢css3优先,所以改成了margin-top,不过还是感谢感谢

支持(0) 反对(0) 啾啾啾c | 园豆:45 (初学一级) | 2020-06-09 13:15

@Java·小白: 感谢老哥,我终于知道我问题出哪了,我没有清除键盘默认事件,导致一点击,滚动条自然也滚动,所以位置不对

支持(0) 反对(0) 啾啾啾c | 园豆:45 (初学一级) | 2020-06-09 14:21

@啾啾啾c: 解决就好

支持(0) 反对(0) Java·小白 | 园豆:380 (菜鸟二级) | 2020-06-09 14:23
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册