vue进入页面时不在顶部,检测滚动返回顶部按钮问题及解决方法


Posted in Javascript onOctober 30, 2019

这里是本小白使用时遇到的问题及个人使用的方法可能并不完美。

1.监测浏览器滚动条滚动事件及滚动距离

dmounted() {  
   window.addEventListener("scroll", this.gundong);  
 },
 destroyed() {
   window.removeEventListener("scroll", this.gundong);
 },
 methods: {
  gundong() {   
   var dis = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;
   if(dis > 120){
    this.flag = true
   }else{
    this.flag = false
   }
  },

一般给window绑定监测事件就能获得window.pageYOffset滚动距离。

2.有些时候给body设置了{width:100%,height:100%},之后就需要将事件绑定在document.body,才能获得document.body.scrollTop滚动距离。

       2.1PC端IE/edge有滚动事件但通过document.body.scrollTop获取不到数值。

       2.2移动端火狐浏览器这样设置没问题也能获取document.body.scrollTop,百度浏览器和华为手机自带的浏览器获取不到。以下有解决方法

vue进入页面时不在顶部

  可以在main.js中写入以下

router.afterEach((to, from) => {
 window.scrollTo(0,0);
});

 或者用vue-router中的,需要浏览器支持history.pushState

scrollBehavior (to, from, savedPosition) {
 if (savedPosition) {
  return savedPosition
 } else {
  return { x: 0, y: 0 }
 }
}

如果因为需要设置了body{width:100%,height:100%}以上就不适用了

我是将vue最外层的#app-container也设置了{width:100%;height:100%},如果需要隐藏滚动条这时的样式,其他浏览器隐藏样式

html,body,#app-container{ width: 100%; height: 100%; overflow: scroll;}

html::-webkit-scrollbar, body::-webkit-scrollbar,#app-container::-webkit-scrollbar{width:0px;height:0px;}

此时可以在#app-contianer上绑定滚动事件并检测滚动距离

<div id="app-container" @scroll="scrollEvent($event)">

scrollEvent(e) {
  var dis = e.srcElement.scrollTop;
  console.log(dis)    
  if (dis > 150) {
   this.flag = true;
  } else {
   this.flag = false;
  }
 }

返回顶部按钮

backTop() {
  this.$el.scrollTop = 0;   
}

进入页面在顶部

var vm = new Vue({
 router,
 store,
 render: h => h(App)
}).$mount("#app");

router.afterEach((to, from) => {
 vm.$el.scrollTop = 0;
});

这样在PC端和移动端那几个浏览器都能正常运作。

总结

以上所述是小编给大家介绍的vue进入页面时不在顶部,检测滚动返回顶部按钮,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
用jquery生成二级菜单的实例代码
Jun 24 Javascript
ajaxFileUpload.js插件支持多文件上传的方法
Sep 02 Javascript
jQuery插件pagination实现分页特效
Apr 12 Javascript
浅谈javascript alert和confirm的美化
Dec 15 Javascript
使用bootstraptable插件实现表格记录的查询、分页、排序操作
Aug 06 Javascript
vue 移动端适配方案详解
Nov 15 Javascript
Vue CLI 3.x 自动部署项目至服务器的方法
Apr 02 Javascript
详解axios中封装使用、拦截特定请求、判断所有请求加载完毕)
Apr 09 Javascript
js中的面向对象之对象常见创建方法详解
Dec 16 Javascript
JavaScript实现简单计算器
Mar 19 Javascript
使用vue实现通过变量动态拼接url
Jul 22 Javascript
ant design vue中表格指定格式渲染方式
Oct 28 Javascript
Vue中图片Src使用变量的方法
Oct 30 #Javascript
解决VUE双向绑定失效的问题
Oct 29 #Javascript
vue-form表单验证是否为空值的实例详解
Oct 29 #Javascript
vue获取form表单的值示例
Oct 29 #Javascript
Vue 实现把表单form数据 转化成json格式的数据
Oct 29 #Javascript
使用axios请求时,发送formData请求的示例
Oct 29 #Javascript
基于form-data请求格式详解
Oct 29 #Javascript
You might like
如何在PHP中进行身份认证
2006/10/09 PHP
用PHP查询搜索引擎排名位置的代码
2010/01/05 PHP
php中大括号作用介绍
2012/03/22 PHP
PHP中return 和 exit 、break和contiue 区别与用法
2012/04/09 PHP
PHP错误和异长常处理总结
2014/03/06 PHP
PHP简单实现“相关文章推荐”功能的方法
2014/07/19 PHP
php无限分类使用concat如何实现
2015/11/05 PHP
BOOM vs RR BO3 第二场2.13
2021/03/10 DOTA
ext checkboxgroup 回填数据解决
2009/08/21 Javascript
JavaScript中扩展Array contains方法实例
2020/08/23 Javascript
JS实现跟随鼠标的链接文字提示框效果
2015/08/06 Javascript
浅谈JavaScript超时调用和间歇调用
2015/08/30 Javascript
基于jQuery实现多标签页切换的效果(web前端开发)
2016/07/24 Javascript
vue指令以及dom操作详解
2017/03/04 Javascript
Angularjs上传图片实例详解
2017/08/06 Javascript
简单实现jQuery弹窗效果
2017/10/30 jQuery
详解Webpack loader 之 file-loader
2018/11/07 Javascript
小程序中英文混合排序问题解决
2019/08/02 Javascript
js实现简单掷骰子效果
2019/10/24 Javascript
JS如何生成动态列表
2020/09/22 Javascript
Python中捕捉详细异常信息的代码示例
2014/09/18 Python
Python实现输出程序执行进度百分比的方法
2017/09/16 Python
python numpy 一维数组转变为多维数组的实例
2018/07/02 Python
对Python3 goto 语句的使用方法详解
2019/02/16 Python
浅谈Python大神都是这样处理XML文件的
2019/05/31 Python
使用python将最新的测试报告以附件的形式发到指定邮箱
2019/09/20 Python
keras读取训练好的模型参数并把参数赋值给其它模型详解
2020/06/15 Python
如何用python开发Zeroc Ice应用
2021/01/29 Python
aec加密 php_php aes加密解密类(兼容php5、php7)
2021/03/14 PHP
英国足球店:UK Soccer Shop
2017/11/19 全球购物
检举信的格式及范文
2014/04/04 职场文书
房屋转让协议书
2014/10/18 职场文书
学术会议邀请函
2015/01/30 职场文书
让子弹飞观后感
2015/06/11 职场文书
2015年秋季小学开学标语
2015/07/16 职场文书
解决thinkphp6(tp6)在状态码500下不报错,或者显示错误“Malformed UTF-8 characters”的问题
2021/04/01 PHP