zoukankan      html  css  js  c++  java
  • vue进入页面时不在顶部,检测滚动返回顶部按钮

    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设置了{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{100%,height:100%}以上就不适用了

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

    html,body,#app-container{  100%; height: 100%; overflow: scroll;}
    html::-webkit-scrollbar, body::-webkit-scrollbar,#app-container::-webkit-scrollbar{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;
       }
     }

    资源搜索网站大全 http://www.szhdn.com

    返回顶部按钮

    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端和移动端那几个浏览器都能正常运作。

  • 相关阅读:
    Python 类中方法的内部变量,命名加'self.'变成 self.xxx 和不加直接 xxx 的区别
    用foreach遍历 datagridView 指定列所有的内容
    treeView1.SelectedNode.Level
    YES NO 上一个 下一个
    正则 单词全字匹配查找 reg 边界查找 精确匹配 只匹配字符 不含连续的字符
    抓取2个字符串中间的字符串
    sqlite 60000行 插入到数据库只用不到2秒
    将多行文本以单行的格式保存起来 读和写 ini
    将秒转换成时间格式
    richtextbox Ctrl+V只粘贴纯文本格式
  • 原文地址:https://www.cnblogs.com/xiaonian8/p/14024932.html
Copyright © 2011-2022 走看看