博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Vue 仿QQ左滑删除功能(非原创)
阅读量:5021 次
发布时间:2019-06-12

本文共 4489 字,大约阅读时间需要 14 分钟。

非原创,摘选来源:。

废话不多说,相当实用,先记录。

Html代码:

滑动组件
  • { {item.title}}

    { {item.tips}}

    { {item.time}}

    删除

注意:这里的数据全是本地 mock 的~

Css样式代码:

.page-title{
text-align: center; font-size: 17px; padding: 10px 15px; position: relative;}.page-title:after{
content: " "; position: absolute; left: 0; bottom: 0; right: 0; height: 1px; border-bottom: 1px solid #ccc; color: #ccc; -webkit-transform-origin: 0 100%; transform-origin: 0 100%; -webkit-transform: scaleY(0.5); transform: scaleY(0.5); z-index: 2;}.list-item{
position: relative; height: 1.6rem; -webkit-transition: all 0.2s; transition: all 0.2s;}.list-item[data-type="0"]{
transform: translate3d(0,0,0);}.list-item[data-type="1"]{
transform: translate3d(-2rem,0,0);}.list-item:after{
content: " "; position: absolute; left: 0.2rem; bottom: 0; right: 0; height: 1px; border-bottom: 1px solid #ccc; color: #ccc; -webkit-transform-origin: 0 100%; transform-origin: 0 100%; -webkit-transform: scaleY(0.5); transform: scaleY(0.5); z-index: 2;}.list-box{
padding: 0.2rem; background: #fff; display: flex; align-items: center; -webkit-box-sizing: border-box; box-sizing: border-box; justify-content: flex-end; position: absolute; top: 0; right: 0; bottom: 0; left: 0; font-size: 0;}.list-item .list-img{
display: block; width: 1rem; height: 1rem;}.list-item .list-content{
padding: 0.1rem 0 0.1rem 0.2rem; position: relative; flex: 1; flex-direction: column; align-items: flex-start; justify-content: center; overflow: hidden;}.list-item .title{
display: block; color: #333; overflow: hidden; font-size: 15px; font-weight: bold; text-overflow: ellipsis; white-space: nowrap;}.list-item .tips{
display: block; overflow: hidden; font-size: 12px; color: #999; line-height: 20px; text-overflow: ellipsis; white-space: nowrap;}.list-item .time{
display: block; font-size: 12px; position: absolute; right: 0; top: 0.1rem; color: #666;}.list-item .delete{
width: 2rem; height: 1.6rem; background: #ff4949; font-size: 17px; color: #fff; text-align: center; line-height: 1.6rem; position: absolute; top:0; right: -2rem;}

这是核心的样式代码,还有部分样式重置代码放在了 App.vue 里,通过计算根节点 html 的字体大小的脚本放在了 index.html 中~

js代码:

export default{ name: 'index', data () { return {  list : [    {       title : 'Chrome更新了' ,       imgUrl : './static/images/Chrome.png' ,       tips : '不再支持Flash视频播放' ,       time : '上午 8:30'    },    {       title : '电影新资讯' ,       imgUrl : './static/images/Sina.png' ,       tips : '电影《红海行动》上映以来票房暴涨,很多国人表示对国产电影有了新的改观' ,       time : '上午 12:00'    },    {       title : '聚焦两会·共筑中国梦' ,       imgUrl : './static/images/video.png' ,       tips : '两会故事' ,       time : '下午 17:45'    },    {       title : '微信团队' ,       imgUrl : './static/images/Wechat.png' ,       tips : '您的帐号有异常登录,如非本人操作,请及时修改密码' ,       time : '昨天'    }  ],   startX : 0 ,   endX : 0 , } }, methods : { //跳转 skip(){  if( this.checkSlide() ){    this.restSlide();  }else{    alert('You click the slide!')  } }, //滑动开始 touchStart(e){     // 记录初始位置    this.startX = e.touches[0].clientX; }, //滑动结束 touchEnd(e){      // 当前滑动的父级元素    let parentElement = e.currentTarget.parentElement;    // 记录结束位置    this.endX = e.changedTouches[0].clientX;     // 左滑    if( parentElement.dataset.type == 0 && this.startX - this.endX > 30 ){      this.restSlide();      parentElement.dataset.type = 1;    }     // 右滑    if( parentElement.dataset.type == 1 && this.startX - this.endX < -30 ){      this.restSlide();      parentElement.dataset.type = 0;    }    this.startX = 0;    this.endX = 0; }, //判断当前是否有滑块处于滑动状态 checkSlide(){    let listItems = document.querySelectorAll('.list-item');    for( let i = 0 ; i < listItems.length ; i++){      if( listItems[i].dataset.type == 1 ) {         return true;       }    }    return false; }, //复位滑动状态 restSlide(){    let listItems = document.querySelectorAll('.list-item');      // 复位    for( let i = 0 ; i < listItems.length ; i++){      listItems[i].dataset.type = 0;    } }, //删除 deleteItem(e){     // 当前索引    let index = e.currentTarget.dataset.index;    // 复位    this.restSlide();    // 删除    this.list.splice(index,1);   }  }}

综上,亲测可用,叽叽叽叽叽叽~

转载于:https://www.cnblogs.com/DangerousBaymax/p/9086888.html

你可能感兴趣的文章
flush caches
查看>>
SSAS使用MDX生成脱机的多维数据集CUB文件
查看>>
ACM_hdu1102最小生成树练习
查看>>
MyBatis源码分析(一)--SqlSessionFactory的生成
查看>>
android中ListView点击和里边按钮或ImageView点击不能同时生效问题解决
查看>>
CTF常用工具之汇总
查看>>
java的面向对象 (2013-09-30-163写的日志迁移
查看>>
HDU 2191 【多重背包】
查看>>
51nod 1433 0和5【数论/九余定理】
查看>>
【AHOI2013复仇】从一道题来看DFS及其优化的一般步骤和数组分层问题【转】
查看>>
less 分页显示文件内容
查看>>
如何对数据按某列进行分层处理
查看>>
[Qt] this application failed to start because it could not find or load the Qt platform plugin
查看>>
Git Submodule管理项目子模块
查看>>
学会和同事相处的30原则
查看>>
NOJ——1568走走走走走啊走(超级入门DP)
查看>>
文件操作
查看>>
Python:GUI之tkinter学习笔记3事件绑定(转载自https://www.cnblogs.com/progor/p/8505599.html)...
查看>>
jquery基本选择器
查看>>
hdu 1010 dfs搜索
查看>>