我的编程空间,编程开发者的网络收藏夹
学习永远不晚

使用vue怎么实现左右滑动效果

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

使用vue怎么实现左右滑动效果

使用vue怎么实现左右滑动效果?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

HTML代码

<template>    <div id="SlideBar" class="box">        <div class="item" ref="slide" : @touchstart="start($event)" @touchmove="move($event)" @touchend="end($event)">          <img class="lazy" data-src="http://img2.imgtn.bdimg.com/it/u=2555191195,2735808065&fm=26&gp=0.jpg" alt="">          <div class="right">            <div class="title">你好!</div>            <p class="text">哈哈哈</p>            <p class="price">好不</p>          </div>        </div>        <div class="btn" ref="btn">            <button>编辑</button>            <button >收藏</button>        </div>    </div></template>

CSS代码

<style>.box{    position:relative;    border-bottom:0.026667rem solid #666666;}.btn{  height:100%;  position:absolute;  right:0;  top:0;  background:red;  display:flex;}button{  width:1.6rem;  height:100%;  background:#f8f8f8;  border:none;}.item{  padding:0.266667rem;  display:flex;  position:relative;  background:#fff;  z-index: 2;  box-shadow: 0.026667rem 0 0.053333rem #ddd;}.item img{  width:2.133333rem;  height:2.133333rem;  margin-right:0.4rem;  border-radius: 0.133333rem;}.item .title{  font-size:0.48rem;  float: left;}.item .text{  font-size:0.426667rem;  color:#888;  float: left;  margin: 0 1.33rem;}.item .price{  color:#888;  float: left;  margin: 0 1.33rem;}</style>

JS代码

<script>    export default {        name: 'SlideBar',        props: {        },        data (){            return {                flag: false,                startX: 0,                endX: 0,                slideStyle: {                    left: 0,                    transition: 'none'                }            }        },        methods: {            start (e){  //记录开始滑动屏幕的X轴的位置                this.flag = true;                this.startX = e.touches[0].clientX;                this.endX = this.$refs.slide.offsetLeft;                this.slideStyle.transition = 'none';            },            move (e){                if(this.flag){                    // 处理鼠标移动的逻辑                    var moveX = this.endX + (e.touches[0].clientX - this.startX);  //计算滑动的距离                    if(Math.abs(moveX) >= this.$refs.btn.offsetWidth && moveX < 0){  //判断滑动的距离是否大于class:btn的宽度                        moveX = (Math.abs(moveX) - this.$refs.btn.offsetWidth) * 0.1; // 0.3阻力系数                        this.slideStyle.left = - this.$refs.btn.offsetWidth - moveX + 'px';                    }else if(moveX >= 0){  //滑动距离是否大于等于0                        this.slideStyle.left = 0 + 'px';  //大于等于0让class:item等于0                    }else{                        this.slideStyle.left = moveX + 'px';  //小于0让class:item等于滑动的距离                    }                }            },            end (e){                if(this.flag){                    this.flag = false;                    // endX = slide.offsetLeft;                    var moveX = e.changedTouches[0].clientX - this.startX;  //计算滑动的距离                    this.slideStyle.transition = 'left .3s';                    var btnWidth = this.$refs.btn.offsetWidth;  //class:btn的宽度                    if(moveX < 0){                        if(Math.abs(moveX) >= btnWidth / 2 || Math.abs(this.$refs.slide.offsetLeft) >= this.$refs.btn.offsetWidth){ //是否大于class:btn宽度的一半                            this.slideStyle.left = - btnWidth + 'px';  //左滑超过class:btn宽度的一半就滑回去                        }else if(Math.abs(moveX) < btnWidth / 2){  //小于class:btn宽度的一半                            this.slideStyle.left = 0 + 'px';  //左滑没有超过class:btn宽度的一半回原位                        }                    }else if(moveX > 0 && this.endX != 0){                        if(Math.abs(moveX) >= btnWidth / 2){                            this.slideStyle.left = 0 + 'px';  //右滑超过class:btn宽度的一半就滑回去                        }else if(Math.abs(moveX) < btnWidth / 2){                            this.slideStyle.left = - btnWidth + 'px';  //右滑没有超过class:btn宽度的一半回原位                        }                    }                }            }        },        mounted (){            var _this = this;            // 使用js的现代事件监听transition过渡结束            this.$refs.slide.addEventListener('transitionend',function(){                _this.endX = this.offsetLeft;            })        }    }</script>

Vue的优点

Vue具体轻量级框架、简单易学、双向数据绑定、组件化、数据和结构的分离、虚拟DOM、运行速度快等优势,Vue中页面使用的是局部刷新,不用每次跳转页面都要请求所有数据和dom,可以大大提升访问速度和用户体验。

关于使用vue怎么实现左右滑动效果问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注编程网行业资讯频道了解更多相关知识。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

使用vue怎么实现左右滑动效果

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

使用vue怎么实现左右滑动效果

使用vue怎么实现左右滑动效果?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。HTML代码