使用AlloyFinger(移动端点触插件)
来源:互联网 发布:js遍历二维数组 编辑:程序博客网 时间:2024/06/16 03:48
插件gitHub地址https://github.com/AlloyTeam/AlloyFinger
直接贴代码。这里主要是用pressMove 和 pinch 功能。
var initScale = 1;const mapEl = document.getElementById("map-element");const imgEl = document.getElementById("hit");const _timeout = 500;Transform(mapEl);Transform(imgEl);new AlloyFinger(mapEl, { pinch: function(evt) { mapEl.scaleX = mapEl.scaleY = initScale * evt.zoom; imgEl.scaleX = imgEl.scaleY = initScale * evt.zoom; }, pressMove: function(evt) { mapEl.translateX += evt.deltaX; mapEl.translateY += evt.deltaY; imgEl.translateX += evt.deltaX; imgEl.translateY += evt.deltaY; evt.preventDefault(); }, multipointEnd: function() { To.stopAll(); if (mapEl.scaleX < 1) { new To(mapEl, "scaleX", 1, 500, ease); new To(mapEl, "scaleY", 1, 500, ease); new To(imgEl, "scaleX", 1, 500, ease); new To(imgEl, "scaleY", 1, 500, ease); } if (mapEl.scaleX > 4) { new To(mapEl, "scaleX", 4, 500, ease); new To(mapEl, "scaleY", 4, 500, ease); new To(imgEl, "scaleX", 4, 500, ease); new To(imgEl, "scaleY", 4, 500, ease); } let _minX = -(parseInt(mapEl.style.width) / 2) if (mapEl.translateX < _minX) { new To(mapEl, "translateX", _minX, _timeout, ease); new To(imgEl, "translateX", _minX, _timeout, ease); } let _maxX = (parseInt(mapEl.style.width) / 2) if (mapEl.translateX > _maxX) { new To(mapEl, "translateX", _maxX, _timeout, ease); new To(imgEl, "translateX", _maxX, _timeout, ease); } let _minY = -20; if (mapEl.translateY < _minY) { new To(mapEl, "translateY", _minY, _timeout, ease); new To(imgEl, "translateY", _minY, _timeout, ease); } let _maxY = 50; if (mapEl.translateY > _maxY) { new To(mapEl, "translateY", _maxY, _timeout, ease); new To(imgEl, "translateY", _maxY, _timeout, ease); } initScale = mapEl.scaleX; }})function ease(x) { return Math.sqrt(1 - Math.pow(x - 1, 2));}function moveTo(_storeId) { let _point = polygonPoints[_storeId]; let _scale = 2; let _center = getCenter(_point); let _x = window.innerWidth - _center.deltaX * _scale; let _y = 30; highLight(_storeId); new To(mapEl, "scaleX", _scale, _timeout, ease); new To(mapEl, "scaleY", _scale, _timeout, ease); new To(imgEl, "scaleX", _scale, _timeout, ease); new To(imgEl, "scaleY", _scale, _timeout, ease); new To(mapEl, "translateX", _x, _timeout, ease); new To(mapEl, "translateY", _y, _timeout, ease); new To(imgEl, "translateX", _x, _timeout, ease); new To(imgEl, "translateY", _y, _timeout, ease);}function getCenter(_points) { let _oddY = 0; let _evenX = 0; let _result = { deltaX: 0, deltaY: 0 }; for (let i in _points) { if (i % 2 == 0) { _evenX += _points[i]; } else { _oddY += _points[i]; } } let _rate = $("#hit").width() / 1920; _result.deltaY = Math.round(_oddY * _rate / (_points.length / 2)) _result.deltaX = Math.round(_evenX * _rate / (_points.length / 2)) return _result;}
主要是实现2个联动所以才会这么多重复的代码。
首先是获得元素,最好使用id,用class的话要加[0](如果是第一个的话);
Transform是动画插件。所有的插件可以来这里下载。https://pan.baidu.com/s/1qXEnk3y
提取密码 7x23。
这里有几点需要提醒大家:
1.有几个需要缩放的容器,就需要Transform多少个。
2.如果需要设置缩放不从1开始,可以在multipointEnd的时候。设置
initScale = mapEl.scaleX;
To是一个动画插件。可以限定拖动的区域。
阅读全文
0 0
- 使用AlloyFinger(移动端点触插件)
- 移动端点赞评论
- H5移动端点击跳转(无背景阴影)
- 【笔记】移动端点击处理
- 移动端点击的坑。。
- 移动端点击穿透遮罩层场景
- cursor: pointer移动端点击高亮
- js 移动端点赞功能
- 移动端点餐系统总结
- pc端点击事件和移动端点击事件区别
- web手势库AlloyFinger运用( 控制CANVAS中图片移动、缩放、旋转)
- 移动端点击(click)事件延迟问题的产生与解决方法
- 移动端点击事件触发顺序
- 移动端点击事件延迟300毫秒
- IOS移动端点击阴影如何去除?
- 移动端点击元素出现闪烁
- 移动端点击事件触发顺序
- 移动端点透现象即解决办法
- (快排实例)查询一个数组中第n大的元素
- 小程序文档整理之 -- 快速上手
- Elasticsearch 1.4安装marvel
- JS 和 Java 中URL特殊字符编码方式
- 行为识别笔记:iDT算法用法与代码解析
- 使用AlloyFinger(移动端点触插件)
- MySQL 触发器简单实例
- XtraReport显示行序号
- linux下vi命令大全
- json-c 的安装和使用(使用json-c读取文件中的json数据和保存json格式的数据至文件中)
- 简单的实现一个类似于Cocos2dx的游戏框架——导演、场景、层、精灵(已填坑5%)
- 字符编码详解——彻底理解掌握编码知识,“乱码”不复存在
- Crash收集的方式
- 用Spring Cloud和Docker构建微服务