• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com专业计算机教程网站
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure
您的位置:首页 > 网页设计 >html5 > 移动端HTML5模拟长按删除事件(附代码)

移动端HTML5模拟长按删除事件(附代码)

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-03

本文主要包含HTML5等相关知识,匿名希望在学习及工作中可以帮助到您
本篇文章给大家带来的内容是关于移动端HTML5模拟长按删除事件(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

为啥写这篇文章

最近接了个需求,要求长按某个标签显示删除一个悬浮的删除按钮。这个需求其实在app上很常见,但是在移动端h5中,我们没有长按的事件,所以就需要自己模拟这个事件了。

大概效果如下:

2345截图20180930151947.png

思路

  • 放弃click事件,通过判断按的时长来决定是单击还是长按

  • 使用touchstart和touchend事件

  • 在touchstart中开启一个定时器,比如在700ms后显示一个长按菜单

  • 在touchend中清除这个定时器,这样如果按下的时间超过700ms,那么长按菜单已经显示出来了,清除定时器不会有任何影响;如果按下的时间小于700ms,那么touchstart中的长按菜单还没来得及显示出来,就被清除了。

由此我们可以实现模拟的长按事件了。

上代码

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> <link rel="stylesheet" type="text/css" href="./longpress.css" /> </head> <body> <div> <div id="label">长按我</div> <div>删除</div> </div> <script src="./longpress.js"></script> </body> </html>

JS

let timer = null
let startTime = ''
let endTime = ''
const label = document.querySelector('.label')
const deleteBtn = document.querySelector('.delete_btn')

label.addEventListener('touchstart', function () {
  startTime = +new Date()
  timer = setTimeout(function () {
    deleteBtn.style.display = 'block'
  }, 700)
})

label.addEventListener('touchend', function () {
  endTime = +new Date()
  clearTimeout(timer)
  if (endTime - startTime < 700) {
    // 处理点击事件
    label.classList.add('selected')
  }
})

CSS

.container {
    position: relative;
    display: inline-block;
    margin-top: 50px;
}

.label {
    display: inline-block;
    box-sizing: border-box;
    width: 105px;
    height: 32px;
    line-height: 32px;
    background-color: #F2F2F2;
    color: #5F5F5F;
    text-align: center;
    border-radius: 3px;
    font-size: 14px;
}

.label.selected {
    background-color: #4180cc;
    color: white;
}

.delete_btn {
    display: none;
    position: absolute;
    top: -8px;
    left: 50%;
    transform: translateX(-50%) translateY(-100%);
    color: white;
    padding: 10px 16px;
    background-color: rgba(0, 0, 0, .7);
    border-radius: 6px;
    line-height: 1;
    white-space: nowrap;
    font-size: 12px;
}

.delete_btn::after {
    content: '';
    width: 0;
    height: 0;
    border-width: 5px;
    border-style: solid;
    border-color: rgba(0, 0, 0, .7) transparent transparent transparent;
    position: absolute;
    bottom: -9px;
    left: 50%;
    transform: translateX(-50%);
}

ps: touchstart和touchend只有在移动端设备上才有用,如果要看代码示例的话请:

  • 用chrome

  • F12打开调时窗

  • 切换到模拟移动设备

即点击如下图:

2156555810-5baf4d54e9afa_articlex.png

以上就是移动端HTML5模拟长按删除事件(附代码)的详细内容,更多请关注微课江湖其它相关文章!

您可能想查找下面的文章:

相关文章

  • 2018-12-03HTML 5 event-source 标签是否违背了自定义标签才使用短横线的约定?
  • 2017-08-06Html5大文件断点续传实现方法
  • 2018-12-03怎样操作页面、可视区、屏幕等宽高属性
  • 2018-12-03关于H5调用相机拍照并压缩图片的代码
  • 2018-12-03开发人员需要牢记的HTML 5安全问题
  • 2018-12-03基于Tomcat运行HTML5 WebSocket echo实例详解
  • 2018-12-03HTML5每日一练之meter标签的应用
  • 2018-12-03vue中解决v-for使用报红并出现警告
  • 2018-12-03淘宝的flexible适配方案为什么只对iOS进行dpr判断,对于Android始终认为其dpr为1?
  • 2018-12-03HTML5实战与剖析之媒体元素(2、媒体元素的属性)

文章分类

  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure

最近更新的内容

    • HTML5知识点总结
    • 使用HTML5 Canvas绘制直线或折线等线条的方法讲解
    • HTML5中的aside标签怎么用?HTML5aside侧边栏的具体使用方法你知道吗?
    • 优秀WEB前端UI框架推荐
    • IE8不兼容rgba()如何处理
    • 想在猪八戒接做网页,要怎样系统的学习 ?
    • html5 音乐播放器 audio 标签使用概述_html5教程技巧
    • html5 header标签怎么用?html5 header标签的作用介绍
    • HTML5+CSS3实现无插件拖拽上传图片(支持预览与批量)的详情介绍
    • 10个最常见的 HTML5 面试题及答案

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有