zoukankan      html  css  js  c++  java
  • vue 横向滚动样式&&$ref.scrollLeft初始化数据滚动位置

    一、先说一下横向滚动样式:

    <div class="everyone-wrap" ref="parent">
        <div class="everyone-cont">
           <dl v-for="(item, index) in shareData.top" :key="index">
                <dt>
                   <van-image :src="item.pic">
                     <template v-slot:loading>                                //vant中loading图
                         <van-loading type="spinner" size="20" />
                     </template>
                     <template v-slot:error>
                         <img src="../../assets/img/wait-voice.png" alt />    //vant中error图
                     </template>
                  </van-image>
               </dt>
               <dd>
                    <p class="dd_title">标题{{ index }}</p>
                    <p class="dd_text">这里是描述呀这里是描述呀这里是描述呀这里是描述呀这里是描述呀这里是描述呀这里是描述呀这里是描述呀</p>
               </dd>
            </dl>
        </div>
     </div>

    css代码:
    .everyone-wrap {
         width: 100%;
         overflow-x: scroll;
        .everyone-cont {
                display: -webkit-flex;
                display: -ms-flexbox;
                display: flex;
                float: left; // 使其脱离文档流 宽度为所有字元素的和
                min-width: 100%;
                padding-bottom: 20px;
                dl {
                     width: 180px;
                     margin: 0 34px 0 0;
                     float: left;
                }
        }
    }

    二、再说一下解决进来页面就让滚动条滚动:

     刚开始我是做的

        mounted() {
               this.$nextTick(() => {
                    this.$refs.parent.scrollLeft = '500';
                });
        },

    然鹅,并没有卵用。查阅文档感觉应该是以下原因:

    mounted 不会承诺所有的子组件也都一起被挂载。
    如果你希望等到整个视图都渲染完毕,可以用 vm.$nextTick 替换掉 mounted。
    
    $nextTick  将回调延迟到下次 DOM 更新循环之后执行。
    在修改数据之后立即使用它,然后等待 DOM 更新。
    它跟全局方法 Vue.nextTick 一样,不同的是回调的 this 自动绑定到调用它的实例上。

    最后说下解决方法:

    1.获取完数据之后  $nextTick中   this.$refs.parent.scrollLeft = '500';
    
    2.updated: function() {
            this.$nextTick(function() {
                this.$refs.parent.scrollLeft = '500';
            });
        }
    
    3.mounted中setTimeout(() => {
                this.$refs.parent.scrollLeft = '500';
            }, 100);
    4.在获取完数据之后:(感觉这才是$nextTick的正确打开方式)
    this.$nextTick(function() {
                this.$refs.parent.scrollLeft = '500';
            });
     
  • 相关阅读:
    青蛙学Linux—MySQL常用命令(二)
    青蛙学Linux—MySQL常用命令(一)
    青蛙学Linux—MySQL安装和初始化
    青蛙学Linux—MySQL
    青蛙学Linux—Apache提供HTTPS服务
    青蛙学Linux—Apache配置PHP支持
    青蛙学Linux—Apache+Tomcat实现动静分离以及负载均衡
    青蛙学Linux—Apache负载均衡的实现
    青蛙学Linux—Apache反向代理的实现
    青蛙学Linux—Apache的MPM模式和httpd-mpm.conf
  • 原文地址:https://www.cnblogs.com/liAnran/p/12069953.html
Copyright © 2011-2022 走看看