JS如何实现封装列表右滑动删除收藏按钮


Posted in Javascript onJuly 23, 2020

前言

列表右滑动展示删除和收藏按钮就类似微信或者美团饿了吗的列表,右滑动出现指定的按钮功能;

本来我是想把前几年支付宝的一个机试题拿来讲,奈何我记不太清题目,也找不到当时做的题了,所以只好将就一下那这个案例来讲解,其实解题思路大致是一样的,毕竟作为程序员最重要的不是会多少框架和会用api用的多熟练,设计思路才是最重要!

案例

JS如何实现封装列表右滑动删除收藏按钮

这个界面相信大家都非常熟悉,很多时候一些封装好的插件可以拿来用即可实现这个功能,算是比较大众化,不过为了给不了解原理的小伙伴们讲解,所以自己用dom手写了一个,思路如下:

html部分

<!DOCTYPE html>
<html lang="en">

<head>
 <meta charset="UTF-8">
 <meta name="viewport"
  content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
 <title>支付宝前端机试题</title>
 <link rel="stylesheet" href="css/index.css" rel="external nofollow" >
 <script src="js/index.js"></script>
</head>

<body>
 <h2 class="title">购物车</h2>
 <section class="shoppingList"></section>
</body>

</html>

JS部分

let initXY = [0,0];//记录移动的坐标
let isStop = false;//记录是否禁止滑动
let oldIndex = null;//记录旧的下标
let theIndex = null;//记录新的下标

function touchstart(event,index){
 if(event.touches.length > 1) {
  isStop = true;
  return;
 }
 oldIndex = theIndex;
 theIndex = null;
 initXY = [event.touches[0].pageX,event.touches[0].pageY];
 // console.log(initXY);
}

function touchmove(event,index){
 if(event.touches.length > 1) return;
 let moveX = event.touches[0].pageX - initXY[0];
 let moveY = event.touches[0].pageY - initXY[1];
 if(isStop || Math.abs(moveX) < 5) return;//如果禁止滑动或者滑动的距离小于5就返回
 if(Math.abs(moveY) > Math.abs(moveX)){
  isStop = true;
  return;
 }
 if(moveX<0){
  theIndex = index;
  isStop = true;
 }else if(theIndex && oldIndex === theIndex){
  oldIndex =index;
  theIndex = null;
  isStop = true;
  setTimeout(()=>{oldIndex=null;},150);//设置150毫秒延迟来凸显动画效果,实际不加也可以
 }
 // 这里用jq就不用循环了,但我懒得引,大家知道就好
 let goods = document.getElementsByClassName("goodsInfo");
 for(let i=0;i<goods.length;i++){
  theIndex === i ? goods[i].classList.add("open") : goods[i].classList.remove("open");
 };
 // console.log(moveX,moveY);
}

function touchend(){
 isStop = false;
}

总结

实现的方法无非就是判断触碰的时候移动的坐标值再加上动画,有兴趣看源代码的小伙伴可以到github下载:

https://github.com/13632756286/Sliding-menu

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript 事件查询综合 推荐收藏
Mar 10 Javascript
jQuery中使用Ajax获取JSON格式数据示例代码
Nov 26 Javascript
Javascript前端UI框架Kit使用指南之kitjs的对话框组件
Nov 28 Javascript
jQuery对指定元素中指定字符串进行替换的方法
Mar 17 Javascript
javascript实现了照片拖拽点击置顶的照片墙代码
Apr 03 Javascript
Bootstrap与KnockoutJs相结合实现分页效果实例详解
May 03 Javascript
js跨域资源共享 基础篇
Jul 02 Javascript
vue的基本用法与常见指令
Aug 15 Javascript
微信小程序实现点击按钮修改文字大小功能【附demo源码下载】
Dec 06 Javascript
vue渲染时闪烁{{}}的问题及解决方法
Mar 28 Javascript
JS实现左边列表移到到右边列表功能
Mar 28 Javascript
layer ui插件显示tips时,修改字体颜色的实现方法
Sep 11 Javascript
vue+iview框架实现左侧动态菜单功能的示例代码
Jul 23 #Javascript
JS前后端实现身份证号验证代码解析
Jul 23 #Javascript
vue实现用户长时间不操作自动退出登录功能的实现代码
Jul 23 #Javascript
在vue中封装的弹窗组件使用队列模式实现方法
Jul 23 #Javascript
基于JS实现计算24点算法代码实例解析
Jul 23 #Javascript
javascript递归函数定义和用法示例分析
Jul 22 #Javascript
简单了解vue 插值表达式Mustache
Jul 22 #Javascript
You might like
百事可乐也出咖啡了 双倍咖啡因双倍快乐
2021/03/03 咖啡文化
mysql中存储过程、函数的一些问题
2007/02/14 PHP
用php实现批量查询清除一句话后门的代码
2008/01/20 PHP
PHP读取大文件的类SplFileObject使用介绍
2014/04/09 PHP
[原创]PHP实现逐行删除文件右侧空格的方法
2015/12/25 PHP
Laravel使用模型实现like模糊查询的例子
2019/10/24 PHP
juqery 学习之三 选择器 可见性 元素属性
2010/11/25 Javascript
javascript闭包的高级使用方法实例
2013/07/04 Javascript
JavaScript中对象属性的添加和删除示例
2014/05/12 Javascript
NodeJS学习笔记之Http模块
2015/01/13 NodeJs
JavaScript中toString()方法的使用详解
2015/06/05 Javascript
利用jQuery实现CheckBox全选/全不选/反选的简单代码
2016/05/31 Javascript
微信小程序-获得用户输入内容
2017/02/13 Javascript
Express + Session 实现登录验证功能
2017/09/08 Javascript
Vant的安装和配合引入Vue.js项目里的方法步骤
2018/12/05 Javascript
详解webpack引入第三方库的方式以及注意事项
2019/01/15 Javascript
3分钟了解vue数据劫持的原理实现
2019/05/01 Javascript
JavaScript常用内置对象用法分析
2019/07/09 Javascript
关于layui flow loading占位图的实现方法
2019/09/21 Javascript
Vue 使用Props属性实现父子组件的动态传值详解
2019/11/13 Javascript
Python 按字典dict的键排序,并取出相应的键值放于list中的实例
2019/02/12 Python
python 实现快速生成连续、随机字母列表
2019/11/28 Python
python绘制彩虹图
2019/12/16 Python
python通过对字典的排序,对json字段进行排序的实例
2020/02/27 Python
pycharm激活方法到2099年(激活流程)
2020/09/22 Python
Python爬虫之Selenium下拉框处理的实现
2020/12/04 Python
python绘制汉诺塔
2021/03/01 Python
荷兰网上鞋店:Ziengs.nl
2017/01/02 全球购物
出国留学自荐信
2013/10/25 职场文书
医学专业毕业生个人的求职信
2013/12/04 职场文书
中专三年学习的个人自我评价
2013/12/12 职场文书
施工质量承诺书范文
2014/05/30 职场文书
施工单位安全责任书
2014/07/24 职场文书
专业见习报告范文
2014/11/03 职场文书
政风行风整改报告
2014/11/06 职场文书
css3 文字断裂效果
2022/04/22 HTML / CSS