微信h5用js操作图片的缩放,与拖拽 ,防止图片拖过界限

2017年03月29日 17:10来源于:指尖上的java代码
分享:
最近公司有个新需求,做一个类似百度地图一样的功能。但不能用百度地图,而是手绘地图,然后可以像百度地图一样可以缩放,拖拽。当时在网上找了很多插件,后来找到了一个touchjs.js,但是还是有些相差的。主要是这个

最近公司有个新需求,做一个类似百度地图一样的功能。但不能用百度地图,而是手绘地图,然后可以像百度地图一样可以缩放,拖拽。当时在网上找了很多插件,后来找到了一个touchjs.js,但是还是有些相差的。主要是这个插件,它可以无限缩放,拖拽没有限制,这样的话,很容易导致图片拖拽出界限。这样就很难看了。

手稿推算

效果图

touchjs.js优点

轻量级

封装好了接口

touchjs.js缺点

无限制的移动

无限制的缩放

防止图片拖拽过界原理

比如,图片往下移动,如果图片顶部此时已经滑到屏幕顶部(图片与屏幕顶部重合),此时就不能再往下拖动了,当然这过程还要考虑图片的缩放。这里我通过在草稿纸上画图得出一个算法,就是要算出一个临界值。顶部限制 防止出现下滑过多公式:Hlimit = {H原-(H原*Scale)}/2,Hilimt就是临界值,超过这个值就不允许往下移动。

公式演算图

代码

//拖动

drag: function ($targetObj, callback) {

//拖动动作 drag

touch.on($targetObj, 'drag', function (ev) {

cat.touchjs.divoffsetTop = (document.getElementById("target").offsetTop);

cat.touchjs.Hbottom = (cat.touchjs.Ho+(cat.touchjs.Ho*cat.touchjs.scaleVal)-(2*cat.touchjs.clientHeight))/2;

// 顶部限制 防止出现下滑过多

cat.touchjs.Htop = parseInt((cat.touchjs.Ho - cat.touchjs.Ho*cat.touchjs.scaleVal)/2);

if(cat.touchjs.divoffsetTop >= parseInt(-cat.touchjs.Htop) && ev.y>0){

//禁止继续拖动 ,

//cat.touchjs.div这个变量是时实获取图片的top值

//Htop就是Hlimit

}else{

//继续拖动

}

});

}

明天接着讲:图片的缩放,与拖拽 (防止图片拖过屏幕底部)touch-0.2.14.min.js和demo可以找我要


分享:
相关阅读
移动互联网

粗细随心变!小熊电器可调粗细绞肉机:轻松享受花

食物是时间的胶囊,而口感,则是开启胶囊的钥匙。它是外婆拿手的水晶虾饺,那份Q弹与鲜甜,藏着童年的无忧无虑;它是妈妈做的那碗热气腾腾的肉臊面,那粗犷的肉粒与酱香,

2025-06-26 News

喂养不焦虑!小熊电器「托管级」喂养方案,安心直

当科学育儿成为当代家庭的生活共识,现代父母对喂养的期待早已超越了基础功能,他们希望能在这方寸育儿之地,既要设备齐全可以精准掌控每一毫升营养的配比,又希望告别设备

2025-06-26 News

世俱杯 AI 看球新姿势!预测赛事走向、球员秒识别

2025世俱杯战火燃起,绿茵场上豪强对决看点十足:拜仁慕尼黑以10比0的悬殊比分横扫奥克兰城,大巴黎则以4比0大胜马竞,一场场酣畅淋漓的进球盛宴,让全球球迷为之热血沸腾

2025-06-20 News

把用户价值变成竞争力,小熊电器的转型中轴是时代

超前半步是先驱,超前一步是炮灰,落后一步即淘汰,在人、货、场不断重构的消费时代,这一商业逻辑贴切形容了把握机遇的重要性。而事实上,市场也做出论证:如茶饮领域在用

2025-06-20 News