jQuery自定義圖片縮放拖拽插件imageQ實(shí)現(xiàn)方法(附demo源碼下載)
本文實(shí)例講述了jQuery自定義圖片縮放拖拽插件imageQ實(shí)現(xiàn)方法。分享給大家供大家參考,具體如下:
綜合網(wǎng)上一些代碼 自己寫的一個(gè)圖片縮放拖拽的小插件
/** * * <a class='replace_word' title="jQuery知識(shí)庫(kù)" target='_blank' style='color:#df3434; font-weight:bold;'>jQuery</a> imageQ plugin * @name jquery-imageQ.js * @author Q * @date 2011-01-19 * maxRatio 最大放大比例 * minRatio 最小縮小比例 * changeRadio 每次變化幅度 * picUrl:圖片地址, * picWidth:圖片寬度, * picHeight:圖片高度, * reset:是否重設(shè)圖片 * */ (function($){ var status = false; $.fn.imageQ = function(options){ var defaults = { maxRatio:4, minRatio:4, changeRadio:0.2, picUrl:'', picWidth:306, picHeight:372, reset:false } var options=jQuery.extend(defaults,options); return this.each(function(){ status = true; $(this).attr('src',''); $(this).attr('src',options.picUrl); var naturalwidth = options.picWidth; var naturalheight = options.picHeight; var minwidth = Math.round(naturalwidth/options.minRatio); var minheight = Math.round(naturalheight/options.minRatio); var maxwidth = Math.round(naturalwidth*options.maxRatio); var maxheight = Math.round(naturalheight*options.maxRatio); if(options.reset) { $("#wrapDiv").css("width",naturalwidth+"px"); $("#wrapDiv").css("height",naturalheight+"px"); $("#wrapDiv").css("top",'0px'); $("#wrapDiv").css("left",'0px'); } else { $(this).css("width","100%"); $(this).css("height","100%"); $(this).wrap("<div id='wrapDiv' style='-moz-user-select: none;width:"+naturalwidth+"px;height:"+naturalheight+"px;cursor:move;position:relative;top:0px;left:0px;visibility: visible;' ondragstart='return false;' onselectstart='return false;'></div>"); $("#wrapDiv").before('<div style="visibility: visible; height: 26px; width: 78px; display: block; position: absolute; line-height: 1px; cursor: pointer; left: 0px; top: 0px;z-index:1;"><div id="plusTool"></div><div id="minusTool"></div><div id="moveTool"></div></div>'); //$("#wrapDiv").append('<div style="display: block; position: relative; left: 0px; top: 0px; width: 100%; height: 100%; -moz-user-select: none;" id="uploaduserpng"></div>'); $("#plusTool").attr('title','放大'); $("#minusTool").attr('title','縮小'); $("#moveTool").attr('title','拖動(dòng)'); $("#plusTool").bind("click",function(){ _changeOperate('plus'); }); $("#minusTool").bind("click",function(){ _changeOperate('minus'); }); $("#moveTool").bind("click",function(){ _changeOperate('move'); }); function plusOperate() { $("#wrapDiv").unbind(); $("#wrapDiv").unbind(); $("#wrapDiv").bind("click",function(){ var h = $("#wrapDiv").height(); var w = $("#wrapDiv").width(); if(Math.round(h*(1+options.changeRadio)) >= maxheight) { var newH = maxheight; } else { var newH = Math.round(h*(1+options.changeRadio)); } if(Math.round(w*(1+options.changeRadio)) >= maxwidth) { var newW = maxwidth; } else { var newW = Math.round(w*(1+options.changeRadio)); } $("#wrapDiv").css("width",newW+"px"); $("#wrapDiv").css("height",newH+"px"); }); } function minusOperate() { $("#wrapDiv").unbind(); $("#wrapDiv").unbind(); $("#wrapDiv").bind("click",function(){ var h = $("#wrapDiv").height(); var w = $("#wrapDiv").width(); if(Math.round(h*(1-options.changeRadio)) <= minheight) { var newH = minheight; } else { var newH = Math.round(h*(1-options.changeRadio)); } if(Math.round(w*(1-options.changeRadio)) <= minwidth) { var newW = minwidth; } else { var newW = Math.round(w*(1-options.changeRadio)); } $("#wrapDiv").css("width",newW+"px"); $("#wrapDiv").css("height",newH+"px"); }); } function moveOperate() { $("#wrapDiv").unbind(); var _move = false; var _x,_y; $("#wrapDiv").bind("mousedown",function(e){ _setCursor('grabbing'); _move = true; if(!document.all) { _x = e.pageX - parseInt($("#wrapDiv").css("left")); _y = e.pageY - parseInt($("#wrapDiv").css("top")); } else { var pagex = e.clientX+(document.documentElement.scrollLeft?document.documentElement.scrollLeft:document.body.scrollLeft); var pagey = e.clientY+(document.documentElement.scrollTop?document.documentElement.scrollTop:document.body.scrollTop); _x = pagex - parseInt($("#wrapDiv").css("left")); _y = pagey - parseInt($("#wrapDiv").css("top")); } }); $("#wrapDiv").bind("mouseup",function(e){ _setCursor('grab'); _move = false; }); $("#wrapDiv").bind("mousemove",function(e){ if(_move) { if(!document.all) { var pagex = e.pageX; var pagey = e.pageY; } else { var pagex = e.clientX+(document.documentElement.scrollLeft?document.documentElement.scrollLeft:document.body.scrollLeft); var pagey = e.clientY+(document.documentElement.scrollTop?document.documentElement.scrollTop:document.body.scrollTop); } var x = pagex-_x; var y = pagey-_y; $("#wrapDiv").css("top",y); $("#wrapDiv").css("left",x); } }); } function _setCursor(type){ $("#wrapDiv").css("cursor","url('images/cursors/"+type+".cur'),default"); } function _changeOperate(operate) { if(operate == 'plus') { _setCursor('zoom-in'); plusOperate(); } if(operate == 'minus') { _setCursor('zoom-out'); minusOperate(); } if(operate == 'move') { _setCursor('grab'); moveOperate(); } } } }); }; $.fn.imageQ.getStatus = function() { return status; }; })(jQuery);
完整實(shí)例代碼點(diǎn)擊此處本站下載。
PS:在此小編為大家推薦幾款javascript格式化美化工具,相信在以后的開(kāi)發(fā)中可以派上用場(chǎng):
C語(yǔ)言風(fēng)格/HTML/CSS/json代碼格式化美化工具:
http://tools.jb51.net/code/ccode_html_css_json
在線JavaScript代碼美化、格式化工具:
http://tools.jb51.net/code/js
JavaScript代碼美化/壓縮/格式化/加密工具:
http://tools.jb51.net/code/jscompress
在線JSON代碼檢驗(yàn)、檢驗(yàn)、美化、格式化工具:
http://tools.jb51.net/code/json
json代碼在線格式化/美化/壓縮/編輯/轉(zhuǎn)換工具:
http://tools.jb51.net/code/jsoncodeformat
更多關(guān)于jQuery相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《jQuery常用插件及用法總結(jié)》、《jQuery表格(table)操作技巧匯總》、《jQuery拖拽特效與技巧總結(jié)》、《jQuery擴(kuò)展技巧總結(jié)》、《jQuery常見(jiàn)經(jīng)典特效匯總》、《jQuery動(dòng)畫與特效用法總結(jié)》、《jquery中Ajax用法總結(jié)》及《jquery選擇器用法總結(jié)》
希望本文所述對(duì)大家jQuery程序設(shè)計(jì)有所幫助。
相關(guān)文章
傳遞參數(shù)的標(biāo)準(zhǔn)方法(jQuery.ajax)
jQuery.ajax傳遞參數(shù)的方法2008-11-11jQuery獲取radio選中項(xiàng)的值實(shí)例
本文主要介紹jQuery獲取radio選中項(xiàng)的值的方法,希望能幫到大家,有需要的朋友可以參考一下。2016-06-06輕松使用jQuery雙向select控件Bootstrap Dual Listbox
這篇文章主要教大家如何輕松使用jQuery雙向select控件Bootstrap Dual Listbox,感興趣的小伙伴們可以參考一下2015-12-12jQuery控制div實(shí)現(xiàn)隨滾動(dòng)條滾動(dòng)效果
這篇文章主要介紹了jQuery控制div實(shí)現(xiàn)隨滾動(dòng)條滾動(dòng)效果,對(duì)比分析了兩種實(shí)現(xiàn)方法供大家參考選擇,需要的朋友可以參考下2016-06-06用jQuery實(shí)現(xiàn)一些導(dǎo)航條切換,顯示隱藏的實(shí)例代碼
用jQuery實(shí)現(xiàn)一些導(dǎo)航條切換,顯示隱藏的實(shí)例代碼,需要的朋友可以參考一下2013-06-06jQuery實(shí)現(xiàn)的簡(jiǎn)單手風(fēng)琴效果示例
這篇文章主要介紹了jQuery實(shí)現(xiàn)的簡(jiǎn)單手風(fēng)琴效果,結(jié)合實(shí)例形式分析了jQuery基于事件響應(yīng)、頁(yè)面元素屬性動(dòng)態(tài)操作實(shí)現(xiàn)手風(fēng)琴效果的方法,需要的朋友可以參考下2018-08-08