美文网首页
项目之动态滚动条

项目之动态滚动条

作者: 夜夜夜空灵 | 来源:发表于2018-11-12 01:54 被阅读0次

还是刚刚那样 只是那个滚动条会跟随着屏幕的滚动而滚动了而已,首先还是在data上定义一些我们所需要的属性

data(){
            return{
                //开始滚动的触摸点
                StartX:0,

                //结束点
                EndX:0,

                //移动的长度
                MoveX:0
            }
        },

我们需要三个数据,一个是开始的触摸点离屏幕最左端的距离,名为startX,触摸的时候移动的点到屏幕最左端的距离名为MoveX,还有就是松开手指的时候的距离
接下来就是定义移动端的触摸事件
还是在项目一初始化的时候就触发

mounted(){
            this.bindMobile();
methods:{
            bindMobile(){
                this.$el.addEventListener('touchstart',this.handletouchstart,false);
                this.$el.addEventListener('touchmove',this.handletouchmove,false);
                this.$el.addEventListener('touchend',this.handletouchend,false);
            },
            handletouchstart(event){
                let start = event.touches[0];
                this.StartX = Number(start.pageX);

            },
            handletouchmove(event){
                let move = event.touches[0];
                let moveWidth = Number(move.pageX) - this.StartX;
                this.MoveX = -((this.bgBarW/this.scrollContentW) * moveWidth - this.EndX);
                

                if(this.MoveX <=0){
                    this.MoveX = 0
                }
                else if(this.MoveX >=this.bgBarW -this.barXWidth){
                    this.MoveX = this.bgBarW - this.barXWidth

                }
            },

            handletouchend(event){
                this.EndX = this.MoveX;
            }
        }
    }

定义一个bindMobile方法,通过addEventListener来绑定移动端的触摸事件
this.$el就是它指的是当前组件的的元素,给当前元素动态绑定移动端触摸事件
移动端事件自带一个event参数,通过打印event.touch我们可以知道里面的pageX是我们想要的距离


微信截图_20181112010814.png

然后通过比例换算 移动的过程中的移动距离-开始的距离比上总宽度等于滚动条移动的距离减去初始的距离除滚动条总长度
然后动态给width绑定上往左该移动多少距离

 computed:{
            innerBarStyle(){
                return{
                    left:`${this.MoveX}px`
                }
            }
        },

最后就是对滚动条移动进行处理
最后moveX为啥要减去this.EndX的原因就是,如果不减去最后的EndX距离,那么移动距离就会变成0回到原点,因为只要一放弃触摸,移动距离和开始距离就会变成0
最最最后要对边界值进行处理
往左移动不能小于0否则会超出左边边界
往右移动移动不能超过滚动条的长度减去红色滚动条的长度的距离,否则会超出右边

相关文章

  • 项目之动态滚动条

    还是刚刚那样 只是那个滚动条会跟随着屏幕的滚动而滚动了而已,首先还是在data上定义一些我们所需要的属性 我们需要...

  • Axure-隐藏滚动条

    "axure动态面板滚动条怎么去掉 axure隐藏滚动条 axure 移动app中动态面板如何隐藏滚动条 axur...

  • css div 内容一行显示

    div 内容超出后仍然一行显示, 自动显示横向滚动条 注意 在 Vue 项目中, 数据动态绑定后, 如果超出内容宽...

  • vue-滚动条

    功能简介 功能比较简陋,仅实现了主要功能,水平滚动条,垂直滚动条,容器高宽改变时动态更改滚动条的大小,自定义颜色,...

  • 做一个自定义滚动条

    关于滚动条,大家知道有一些部件可以设置自带的滚动条,来达到滚动的效果,比如动态面板。但是系统自带的滚动条有一个通病...

  • css实现滚动条并隐藏滚动条,兼容写法

    项目中遇到需要隐藏滚动条,但是能滚动。

  • 滚动条默认样式修改

    标签(空格分隔): css 浏览器自带滚动条总是不能够完全适应项目的样式,修改滚动条样式

  • 【Axure移动交互100例】1.Axure实现手机上下滑动

    实现方式:需要滚动的区域做成面板,然后右键设置根据需要来显示垂直滚动条。 然后再在外面加一层动态面板,把垂直滚动条...

  • 『心善渊』Selenium3.0基础 — 21.Selenium

    1、为什么操作滚动条 在HTML页面中,由于前端技术框架的原因,页面中的一些元素为动态显示,元素根据滚动条的下拉而...

  • [获取滚动条宽度]通过offsetWidth

    浏览器的异同没有统一的方法获取纵向或者横向滚动条的实际宽度 动态创建dom结构根据当前浏览器计算 纯在滚动条和不存...

网友评论

      本文标题:项目之动态滚动条

      本文链接:https://www.haomeiwen.com/subject/nafqfqtx.html