使用Vue怎么实现QQ左滑删除组件功能

  介绍

这篇文章给大家介绍使用Vue怎么实现QQ左滑删除组件功能,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

<强>实现思路

具体实现思路如下:

<李>

布局方面我采用的是快速眼动+ flex布的局,具体如何结构和样式可以参考我的代码,值得注意的是后面的删除按钮是我通过定位放在了每一行的最后,超出隐藏了而已

<李>

左滑和右滑是通过touchstart和touchend事件,通过判断滑动开始和结束,水平方向x的偏移量,如果大于一定得阈值认为是左滑动,小于一定的阈值则认为是右滑动

<李>

左滑动和右滑动分别都是通过父级李元素的翻译偏移量进行变化的,这里我的实现方式是提前声明好样式,通过改变当前父级李的类型值,进行样式切换

<李>

点击某一个滑块的时候,首先判断当前所有的滑块是否有处于滑出状态的,如果有,则必须先将所有的滑块状态还原,如果没有,则点击生效,我这里只是弹出一个改变,具体业务可以根据实际填写

<李>

删除相对简单,当滑块画出后,出现删除按钮,点击按钮,拿到当前的数组索引值,通过数组的拼接方法,删除对应的数组值即可

<强>具体实现

<强> Html代码

& lt; div 类=癱ontainer"比;   & lt;才能div 类=皃age-title"在滑动组件& lt;/div>   & lt;才能ul>   ,,,& lt; li 类=發ist-item “, v=?项目、索引),拷贝list “,数据类型=?”;在   ,,,,,& lt; div 类=發ist-box", @touchstart.capture=皌ouchStart", @touchend.capture=皌ouchEnd", @click=皊kip"比;   ,,,,,,,& lt; img 类=發ist-img", https://www.yisu.com/zixun/: src=" item.imgUrl ">   
  

{{item.title}}

  

{{item.tips}}

  

{{item.time}}

  
  
  
删除
  李      

注意:我这里的数据全是本地模拟的~

<强> Css样式代码

.page-title {   ,,text-align:中心;   ,,字体大小:17 px;   ,,填充:10 px  15 px;   位置:,才能相对;   }   .page-title:{后   ,,内容:“,“;   位置:才能,绝对;   ,,左:0;   底才能:0;   ,,右:0;   ,,身高:1 px;   边界底部才能:1 px  solid  # ccc;   ,,颜色:# ccc;   ,,-webkit-transform-origin: 0, 100%;   ,,transform-origin: 0, 100%;   ,,-webkit-transform:写入scaleY (0.5);   变换才能:写入scaleY (0.5);   ,,z - index: 2;   }   .list-item {   位置:,才能相对;   ,,高度:1.6快速眼动;   ,,-webkit-transition: all  0.2年代;   过渡:才能,all  0.2年代;   }   .list-item(数据类型=?“){   变换才能:translate3d (0, 0, 0);   }   .list-item(数据类型=?“){   变换才能:translate3d (2 rem, 0, 0);   }   .list-item:{后   ,,内容:“,“;   位置:才能,绝对;   ,,左:0.2快速眼动;   底才能:0;   ,,右:0;   ,,身高:1 px;   边界底部才能:1 px  solid  # ccc;   ,,颜色:# ccc;   ,,-webkit-transform-origin: 0, 100%;   ,,transform-origin: 0, 100%;   ,,-webkit-transform:写入scaleY (0.5);   变换才能:写入scaleY (0.5);   ,,z - index: 2;   }   .list-box {   ,,填充:0.2快速眼动;   ,,背景:# fff;   ,,显示:flex;   ,,对齐项目:中心;   ,,-webkit-box-sizing: border-box;   ,,box-sizing: border-box;   ,,justify-content: flex-end;   位置:才能,绝对;   ,,:0;   ,,右:0;   底才能:0;   ,,左:0;   ,,字体大小:0;   }   .list-item  .list-img {   ,,显示:块;   ,,宽度:1快速眼动;   ,,身高:1快速眼动;   }   .list-item  .list-content {   ,,填充:0.1 rem  0, 0.1 rem  0.2快速眼动;   位置:,才能相对;   flex才能:1;   ,,flex-direction:列;   ,,对齐项目:flex-start;   ,,justify-content:中心;   ,,溢出:隐藏。   }   .list-item  .title {   ,,显示:块;   ,,颜色:# 333;   ,,溢出:隐藏。   ,,字体大小:15 px;   ,,粗细:大胆的;   ,,文本溢出:省略;   ,,空白:nowrap;}   }   .list-item  .tips {   ,,显示:块;   ,,溢出:隐藏。   ,,字体大小:12 px;   ,,颜色:# 999;   ,,行高:20 px;   ,,文本溢出:省略;   ,,空白:nowrap;}   }   .list-item  .time {   ,,显示:块;   ,,字体大小:12 px;   位置:才能,绝对;   ,,右:0;   ,,:0.1快速眼动;   ,,颜色:# 666;   }   .list-item  delete {   宽度:才能,2眼动;   ,,高度:1.6快速眼动;   ,,背景:# ff4949;   ,,字体大小:17 px;   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

使用Vue怎么实现QQ左滑删除组件功能