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实现等比例缩放图片效果插件
Jul 24 Javascript
一些常用且实用的原生JavaScript函数
Sep 08 Javascript
javascript 兼容各个浏览器的事件
Feb 04 Javascript
javascript实现汉字转拼音代码分享
Apr 20 Javascript
Javascript的表单与验证-非空验证
Mar 18 Javascript
jQuery模拟爆炸倒计时功能实例代码
Aug 21 jQuery
bootstrap模态框弹出和隐藏,动态改变中间内容的实例
Aug 10 Javascript
对angularJs中2种自定义服务的实例讲解
Sep 30 Javascript
Vue中使用方法、计算属性或观察者的方法实例详解
Oct 31 Javascript
javascript Canvas动态粒子连线
Jan 01 Javascript
vue 子组件修改data或调用操作
Aug 07 Javascript
Javascript异步流程控制之串行执行详解
Sep 27 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
自动分页的不完整解决方案
2007/01/12 PHP
支持中文字母数字、自定义字体php验证码代码
2012/02/27 PHP
浅析PHP中的UNICODE 编码与解码
2013/06/29 PHP
php静态文件返回304技巧分享
2015/01/06 PHP
PHP实现微信退款功能
2018/10/02 PHP
php 中phar包的使用教程详解
2018/10/26 PHP
JavaScript设置首页和收藏页面的小例子
2013/11/11 Javascript
结合JQ1.9通过js正则判断各种浏览器版本的方法
2013/12/30 Javascript
JS数组(Array)处理函数整理
2014/12/07 Javascript
javascript实现判断鼠标的状态
2015/07/10 Javascript
jquery+正则实现统一的表单验证
2015/09/20 Javascript
javascript每日必学之运算符
2016/02/16 Javascript
jQuery中iframe的操作(点击按钮新增窗口)
2016/04/20 Javascript
数组Array的排序sort方法
2017/02/17 Javascript
用原生JS实现简单的多选框功能
2017/06/12 Javascript
vue2.0s中eventBus实现兄弟组件通信的示例代码
2017/10/25 Javascript
JS解析后台返回的JSON格式数据实例
2018/08/06 Javascript
微信小程序实现音乐播放器
2019/11/20 Javascript
js实现石头剪刀布游戏
2020/10/11 Javascript
python中正则表达式 re.findall 用法
2018/10/23 Python
python GUI库图形界面开发之PyQt5切换按钮控件QPushButton详细使用方法与实例
2020/02/28 Python
matplotlib实现数据实时刷新的示例代码
2021/01/05 Python
纯CSS3编写的的精美动画进度条(无flash/无图像/无脚本/附源码)
2013/01/07 HTML / CSS
HTML5 Canvas鼠标与键盘事件demo示例
2013/07/04 HTML / CSS
联想香港官方网站及网店:Lenovo香港
2018/04/13 全球购物
中科软测试工程师面试题
2012/06/16 面试题
迎接领导欢迎词
2014/01/11 职场文书
建筑个人求职信范文
2014/01/25 职场文书
学期自我评价
2014/01/27 职场文书
护士毕业实习感言
2014/03/05 职场文书
幼儿园父亲节活动方案
2014/03/11 职场文书
励志演讲稿3分钟
2014/08/21 职场文书
乡镇党的群众路线教育实践活动制度建设计划
2014/11/03 职场文书
住房公积金贷款工资证明
2015/06/12 职场文书
导游词之大雁塔景区
2019/09/17 职场文书
将图片保存到mysql数据库并展示在前端页面的实现代码
2021/05/02 MySQL