本文实例讲述了jQuery实现的移动端图片缩放功能组件。分享给大家供大家参考,具体如下:
源码见这里:https://github.com/CaptainLiao/zujian/tree/master/matrix
HTML结构:
<div class="box"> <img src="/UploadFiles/2021-04-02/d1981a8ba21975314fd2edf9c09447bb.jpg">JS:
function Matrix($el, options) { this.$el = $el; this.clientW = $(window).width(); this.imgLen = 0; this.cur_x = 0; this.start_x = 0; // 差值 this.m = 0; this.params = $.extend({},{plus: 1.1, reduce: .9}, options); this.plus = this.params.plus; this.reduce = this.params.reduce; // 缩放初始值 this.s = 1; this.flag = false; } Matrix.prototype.chooseImg = function () { var _this = this, $wrap = this.$el; $wrap.on('click','img' ,function () { var mask = $('<div class="fui-mask"></div>'), fui_pop = $('<div class="fui-pop"></div>'), fui_slider = $('<ul class="fui-slider"></ul>'), index, $imgs = $wrap.find('img'), url = '', li = '', clientWidth = _this.clientW; index = $(this).index(); $('body').append(mask).append(fui_pop); $('.fui-pop').append(fui_slider); if($imgs) { $imgs.each(function () { url = $(this).attr('src'); li += ' <li class="fui-slider-item" style="width: '+clientWidth+'px"><img src='+url+' alt=""></li>'; _this.imgLen++; }); $('.fui-slider').append(li) .width(_this.imgLen * 100 +'%') .css('left', -index * clientWidth +'px'); }else { alert('请选择图片@@'); return } _this.touchSlide(); _this.closeImg(); _this.scale(); }) }; Matrix.prototype.closeImg = function () { var _this = this; $('.fui-slider-item').on('click', function (e) { $('.fui-pop, .fui-mask').remove(); _this.imgLen = 0; }) }; Matrix.prototype.touchSlide = function () { var _this = this, $slider = $('.fui-slider'), clientW = this.clientW, imgLen = this.imgLen; $slider.on('touchstart', '.fui-slider-item', function (e) { var index = $(this).index(), m = _this.m, left = parseInt($slider.css('left')); _this.start_x = e.originalEvent.touches[0].clientX; if(_this.flag) return; _this.flag = true; $(this).on('touchmove', function (e) { _this.cur_x = e.originalEvent.touches[0].clientX; m = _this.cur_x - _this.start_x; if(Math.abs(m) > 50) { console.log(m); console.log(m); $slider .css('left', left+m+'px') .find('.fui-slider-item').css({ 'transform': 'scale(1)', 'transform-origin': '0% 0%' }); } }); $(this).on('touchend', function (e) { _this.flag = false; // 每次touchend的时候,将缩放值初始化 _this.s = 1; if(Math.abs(m) < clientW / 3){ $slider.css('left', left+'px'); return; } index = index % imgLen; if(index ==0){ if(m > 0) { $slider.css('left', left+'px'); }else { $slider.css('left', left-clientW+'px'); } }else if(index < imgLen-1){ if(m > 0) { $slider.css('left', left+clientW+'px'); }else { $slider.css('left', left-clientW+'px'); } }else{ if(m < 0) { $slider.css('left', left+'px'); }else { $slider.css('left', left+clientW+'px'); } } }); }) }; Matrix.prototype.scale = function() { var _this = this; $('.fui-slider').on('mousewheel','.fui-slider-item', function(e) { var oEvent = e.originalEvent, p_x = 0, p_y = 0, delta = oEvent.wheelDelta || -oEvent.delta; if(delta > 0) { _this.s *= _this.plus; }else { _this.s *= _this.reduce; } p_x = (oEvent.clientX / $(window).width()) * 100; p_y = (oEvent.clientY / $(window).height()) *100 ; $(this).css({ 'transform': 'scale('+_this.s+')', 'transform-origin':p_x+'% '+p_y+'%', '-webkit-transform-origin': p_x+'% '+p_y+'%' }); }) }; $.fn.zoom = function (options, cb) { var zoom = new Matrix(this, options, cb); return zoom.chooseImg(); };更多关于jQuery相关内容感兴趣的读者可查看本站专题:《jQuery扩展技巧总结》、《jQuery常用插件及用法总结》、《jQuery切换特效与技巧总结》、《jQuery遍历算法与技巧总结》、《jQuery常见经典特效汇总》、《jQuery动画与特效用法总结》及《jquery选择器用法总结》
希望本文所述对大家jQuery程序设计有所帮助。
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
- 【雨果唱片】中国管弦乐《鹿回头》WAV
- APM亚流新世代《一起冒险》[FLAC/分轨][106.77MB]
- 崔健《飞狗》律冻文化[WAV+CUE][1.1G]
- 罗志祥《舞状元 (Explicit)》[320K/MP3][66.77MB]
- 尤雅.1997-幽雅精粹2CD【南方】【WAV+CUE】
- 张惠妹.2007-STAR(引进版)【EMI百代】【WAV+CUE】
- 群星.2008-LOVE情歌集VOL.8【正东】【WAV+CUE】
- 罗志祥《舞状元 (Explicit)》[FLAC/分轨][360.76MB]
- Tank《我不伟大,至少我能改变我。》[320K/MP3][160.41MB]
- Tank《我不伟大,至少我能改变我。》[FLAC/分轨][236.89MB]
- CD圣经推荐-夏韶声《谙2》SACD-ISO
- 钟镇涛-《百分百钟镇涛》首批限量版SACD-ISO
- 群星《继续微笑致敬许冠杰》[低速原抓WAV+CUE]
- 潘秀琼.2003-国语难忘金曲珍藏集【皇星全音】【WAV+CUE】
- 林东松.1997-2039玫瑰事件【宝丽金】【WAV+CUE】