博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
html5实现ios长按图标后进入图标排序及删除功能的效果
阅读量:5968 次
发布时间:2019-06-19

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

hot3.png

html5实现ios长按图标后进入图标排序及删除功能的效果

我们知道在ios(国产定制安卓系统基本都有)设备上按下图标,图标就会不停的抖动,并且可以随心拖动排序和删除。那么问题来了,我们怎么通过html5来实现呢?

1.首先要保证移动端支持tap,longtap,touch,drag等事件,因此引入了mui.js,当然根据项目需求,可以选择zepto.js等前端框架;

2.图标不停抖动的效果需要用到CSS3animation,transfrom

/*循环线性抖动,一个周期0.5s*/.shake {                -webkit-transform-origin: center center;                -webkit-animation-name: shake-rotate;                -webkit-animation-duration: 0.5s;                -webkit-animation-timing-function: linear;                -webkit-animation-iteration-count: infinite;            }/*最大旋转2.5度,2.5deg正好,基本能达到ios图标抖动的效果*/@-webkit-keyframes shake-rotate {                0% {                    -webkit-transform: rotate(0deg);                }                12.5% {                    -webkit-transform: rotate(1.25deg);                }                25% {                    -webkit-transform: rotate(2.5deg);                }                37.5% {                    -webkit-transform: rotate(1.25deg);                }                50% {                    -webkit-transform: rotate(0deg);                }                62.5% {                    -webkit-transform: rotate(-1.25deg);                }                75% {                    -webkit-transform: rotate(-2.5deg);                }                87.5% {                    -webkit-transform: rotate(-1.25deg);                }                100% {                    -webkit-transform: rotate(0deg);                }            }

3.最关键的一点,排序和删除的功能,使用sortable.js来实现,不过最新的版本还是有些小瑕疵,因此我在源码的基础上做了一些修改

具体的瑕疵或bug如下:

  • 在移动端如果滑动排序的速度很快,有闪烁效果
  • 排序时没有延时,targetEl在dragEl刚drop时就开始移动了
  • targetEl和dragEl间的兄弟结点移动时没有动画,移动时很粗糙
  • dragEl在浮起拖动时,没有缩放效果
//新增了两个自定义属性,来改善排序效果var sort = new Sortable(document.getElementById(""), {                chosenClass: 'sort-chosen',                ghostClass: 'sort-ghost',                delay: 150,                animation: 400,                handle: '.drag-handle',                //-------- 自定义属性                isDropAnimation: false, //DragDrop时是否对DragEl启用滑动效果                ghostScale:1.2,//DragGhostEl 缩放效果                //--------                onStart: function( /**Event*/ evt) { // 拖拽                },                onEnd: function( /**Event*/ evt) { // 拖拽                    var itemEl = evt.item;                    var timespan = evt.timeStamp - touchtime;                    if (timespan < 200) {} else if (itemEl.offsetLeft == item_offset.left && itemEl.offsetTop == item_offset.top) {} else {                        //reset_order();                    }                    touchtime = null;                },            });

有图有真相

sort.gif


具体代码在这

By小云菜:

github:

版权所有,转载请注明出处

转载于:https://my.oschina.net/u/1266171/blog/717970

你可能感兴趣的文章
mysql 并行复制
查看>>
傲不可长,欲不可纵,乐不可极,志不可满——提高个人修养
查看>>
linux系统增加swap容量的方法
查看>>
后台调用gps
查看>>
HTML5标签的语义认知和理解(1)
查看>>
MySQL日志功能详解(2)
查看>>
HP LaserJet 305X 和 339X 系列一体机如何设置手动或自动接收传真?
查看>>
linux之权限之隐藏权限
查看>>
XDCTF成长记录
查看>>
Linux系统中的文本处理工具
查看>>
IDE---Python IDE之Eric5在window下的安装
查看>>
Mybatis调用Oracle中的存储过程和function
查看>>
telnet :No route to host
查看>>
基本安装lnmp环境
查看>>
yum源资料汇总
查看>>
7、MTC与MTV,http请求介绍
查看>>
logstash消费阿里云kafka消息
查看>>
第四节课作业
查看>>
EasyUI Calendar 日历
查看>>
unix 环境高级编程
查看>>