首页 > 其他分享 >实现左滑删除功能

实现左滑删除功能

时间:2023-04-18 15:44:57浏览次数:41  
标签:左滑 功能 删除 color height rem font type size

直接先上图看看效果:

废话不多说直接上代码:

<template>
    <div>
        <div class="biggestBox">
            <div>
                <!-- data-type=0 隐藏删除按钮 data-type=1 显示删除按钮 -->
                <div class="li_vessel" v-for="(item,index) in lists " data-type="0" :key="index">
                    <!-- "touchstart" 当手指触摸屏幕时候触发  "touchend"  当手指从屏幕上离开的时候触发  "capture" 用于事件捕获-->
                    <div @touchstart.capture="touchStart" @touchend.capture="touchEnd" @click="oneself">
                        <div class="contant">
                            <div class="imgico">
                                <img class="image" :src="item.imgUrl" />
                                <div class="label">新品</div>
                            </div>
                            <div class="rightBox">
                                <div class="title">牛排A</div>
                                <div class="Sold">已售999</div>
                                <div class="money"> <span>1积分+</span><span>¥14.00</span> <span>/¥20.00</span> </div>
                                <div class="look">查看</div>
                            </div>
                        </div>
                    </div>
                    <div class="removeBtn" @click="remove" :data-index="index">取消</div>
                </div>
            </div>
        </div>
    </div>
</template>

<script>
    export default {
        name: "index",
        data() {
            return {
                lists: [{
                    title: "标题1",
                    imgUrl: "https://z3.ax1x.com/2021/05/18/gfwKHg.jpg",
                    subheading: "副标题1",
                    faddish: "爆款",
                    price: "¥12.00",
                },
                {
                    title: "标题2",
                    imgUrl: "https://z3.ax1x.com/2021/05/18/gfwKHg.jpg",
                    subheading: "副标题2",
                    faddish: "爆款",
                    price: "¥58.00",
                },
                {
                    title: "标题3",
                    imgUrl: "https://z3.ax1x.com/2021/05/18/gfwKHg.jpg",
                    subheading: "副标题3",
                    faddish: "爆款",
                    price: "¥99.99",
                },
                {
                    title: "标题4",
                    imgUrl: "https://z3.ax1x.com/2021/05/18/gfwKHg.jpg",
                    subheading: "副标题4",
                    faddish: "爆款",
                    price: "¥88.32",
                },
                {
                    title: "标题5",
                    imgUrl: "https://z3.ax1x.com/2021/05/18/gfwKHg.jpg",
                    subheading: "副标题5",
                    faddish: "爆款",
                    price: "¥9999.99",
                },
                ],
                startX: 0, //滑动开始
                endX: 0, //滑动结束
            };
        },
        methods: {
            // 向左滑动出现删除按钮时,点击商品信息区域取消删除
            oneself() {
                if (this.checkSlide()) {
                    this.restSlide();
                } else {
                    // 点击商品信息弹出弹框
                    console.log("点击当前商品触发事件...");
                }
            },
            //滑动开始
            touchStart(e) {
                // 记录初始位置
                this.startX = e.touches[0].clientX;
            },
            //滑动结束
            touchEnd(e) {
                // 当前滑动的父级元素
                let parentElement = e.currentTarget.parentElement;
                // 记录结束位置
                this.endX = e.changedTouches[0].clientX;
                // 左滑大于30距离删除出现
                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(".li_vessel");
                for (let i = 0; i < listItems.length; i++) {
                    if (listItems[i].dataset.type == 1) {
                        return true;
                    }
                }
                return false;
            },
            //复位滑动状态
            restSlide() {
                let listItems = document.querySelectorAll(".li_vessel");
                // 复位
                for (let i = 0; i < listItems.length; i++) {
                    listItems[i].dataset.type = 0;
                }
            },
            //删除数据信息
            remove(e) {
                // 当前索引值
                let index = e.currentTarget.dataset.index;
                // 复位
                this.restSlide();
                // 删除数组lists中一个数据
                this.lists.splice(index, 1);
            },
        },
    };
</script>

<style scoped>
    .biggestBox {
        overflow: hidden;
        /*超出部分隐藏*/
    }

    .li_vessel {
        /* 全部样式 0.2秒 缓动*/
        transition: all 0.2s;
    }

    /* =0隐藏 */
    .li_vessel[data-type="0"] {
        transform: translate3d(0, 0, 0);
    }

    /* =1显示 */
    .li_vessel[data-type="1"] {
        /* -64px 设置的越大可以左滑的距离越远,最好与下面删除按钮的宽度以及定位的距离设置一样的值*/
        transform: translate3d(-64px, 0, 0);
    }

    /* 删除按钮 */
    .removeBtn {
        width: 1.28rem;
        height: 2.06rem;
        background: #FF7373;
        font-size: .3rem;
        color: #fff;
        text-align: center;
        line-height: .44rem;
        position: absolute;
        top: 0px;
        right: -1.28rem;
        line-height: 2.06rem;
        text-align: center;
        border-radius: 2px;
    }

    /* 左边的图片样式 */
    .contant {
        overflow: hidden;
        /*消除图片带来的浮动*/
        padding: .2rem .3rem;
        background: #ffffff;
    }

    .imgico {
        width: 1.6rem;
        height: 1.6rem;
        float: left;
        position: relative;
    }

    .label {
        position: absolute;
        top: -0.07rem;
        right: -0.05rem;
        width: .68rem;
        height: .28rem;
        background: linear-gradient(135deg, #FF5858 0%, #FF736B 100%);
        border-radius: 0px .16rem 0px .08rem;
        font-size: .18rem;
        color: #fff;
        text-align: center;
        line-height: .28rem;
    }

    .image {
        width: 1.6rem;
        height: 1.6rem;
        border-radius: .16rem;
    }

    /* 右边的文字信息样式 */
    .rightBox {
        overflow: hidden;
        padding-left: 8px;
        position: relative;
    }
    .look{
        width: 1.08rem;
        height: .44rem;
        background: #FFFFFF;
        border-radius: .22rem;
        border: 1px solid #489EFF;
        color: #489EFF;
        text-align: center;
        line-height: .44rem;
        font-size: .24rem;
        position: absolute;
        bottom: .1rem;
        right: 0rem;
    }

    .title {
        color: #333333;
        font-weight: bold;
        font-size: .3rem;
    }

    .Sold {
        font-size: .2rem;
        color: #999999;
    }

    .money {
        margin-top: .3rem;
    }

    .money>span:nth-child(1) {
        font-size: .3rem;
        font-weight: bold;
        color: #333333;
    }

    .money>span:nth-child(2) {
        font-size: .38rem;
        font-weight: bold;
        color: #333333;
    }

    .money>span:nth-child(3) {
        font-size: .2rem;
        font-weight: normal;
        color: #999999;
    }
</style>

 

标签:左滑,功能,删除,color,height,rem,font,type,size
From: https://www.cnblogs.com/8023-CHD/p/17329807.html

相关文章

  • 安卓手机备忘录app删除了怎么恢复
    手机备忘录对很多网友来说是常用的工具软件之一,因为它可以用来记录生活、工作和学习中的各种事情,不仅方便随时记事,而且方便随时修改、使用、分享、删除等。不过也有不少网友表示,自己在使用手机备忘录APP时遇到了一些问题,其中大多数人都遇到过误删除备忘录,但不知道怎么恢复的情况。......
  • Java Web实现文件上传下载功能实例解析
    ​ 第一点:Java代码实现文件上传FormFilefile=manform.getFile();StringnewfileName= null;Stringnewpathname= null;StringfileAddre= "/numUp";try{    InputStreamstream=file.getInputStream();// 把文件读入    StringfilePath=request.......
  • 微信小程序实现简单登录界面和登录功能
    微信小程序实现简单登录界面和登录功能问题背景客户端开发和学习过程中,登录功能是一个很常见的场景。本文将介绍,微信小程序开发过程中是如何实现登录界面和登录功能的。问题分析话不多说,直接上代码。(1)index.js文件,代码如下:Page({/***页面的初始数据*/data:{......
  • mongodb 3.x 之实用新功能窥看[1] ——使用TTLIndex做Cache处理
    mongodb一直都在不断的更新,不断的发展,那些非常好玩也非常实用的功能都逐步加入到了mongodb中,这不就有了本篇对ttlindex的介绍,刚好我们的生产业务场景中就有这个一个案例。。。 一:案例分析   我们生产的推荐系统要给用户发送短信和邮件的关联营销......
  • Apifox 更新 | WebSocket 接口调试功能上线!
    Apifox 新版本上线啦!欢迎升级使用:界面右上角【设置】-> 【关于Apifox】->【检查更新】看看本次版本更新主要涵盖的重点内容,有没有你所关注的功能特性:支持WebSocketAPI;自动化测试功能升级;Web端新增部分功能快捷键;支持自定义设置版本更新及安装提醒。01支持WebSocketAPI最新......
  • 实验一 密码引擎-3-电子钥匙功能测试
    1解压“龙脉密码钥匙驱动实例工具等”压缩包2在Ubuntu中运行“龙脉密码钥匙驱动实例工具等\mToken-GM3000\skf\samples\linux_mac”中例程,提交运行结果截图3加分项:运行“龙脉密码钥匙驱动实例工具等\mToken-GM3000\skf\samples\windows”中例程,提交运行结果截图ubuntu:wi......
  • MyBatis查询功能
    如果查询出的数据只有一条,可以通过实体类对象接收List集合接收Map集合接收,结果如果查询出的数据有多条,一定不能用实体类对象接收,会抛异常TooManyResultsException,可以通过实体类类型的LIst集合接收Map类型的LIst集合接收在mapper接口的方法上添加@MapKey注解查询......
  • 使用汇编语言 实现hello world功能
    使用汇编语言实现helloworld功能汇编环境设置安装DOSBox0和正常的软件安装没有区别在根目录文件DOSBox0.74-win32-installer.exe双击然后直接下一步next就行了masm5编译环境然后将根目录文件debug.exe文件拖放到masm5文件夹然后再将此文件夹拖放到D:的根目录此目......
  • [Leetcode]删除链表中等于val 的所有结点
    力扣链接方法一:使用前后两个指针,cur指向当前位置,prev指向前一个位置,通过改变指向和释放结点来删除val初步代码,还存在问题:/***Definitionforsingly-linkedlist.*structListNode{*intval;*structListNode*next;*};*/structListNode*remo......
  • jumpserver部署及简单功能使用
    @目录一、极速部署二、用户管理三、添加资产四、资产分配五、使用资产一、极速部署建议安装环境项目机器配置操作系统备注jumpserver4核/16G内存/200G硬盘centos/rhel7.*保证是干净的系统具体机器配置安装需求来定,如果只是部署实验下,那可适当的把机械配置往......