JavaScript實現(xiàn)圖片的放大縮小及拖拽功能示例
本文實例講述了JavaScript實現(xiàn)圖片的放大縮小及拖拽功能。分享給大家供大家參考,具體如下:
實現(xiàn)效果如下:
實現(xiàn)代碼:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> div{width:400px;height:400px;overflow:hidden;position:relative;border:1px solid #000;} div img{position:absolute;height:100%;width:auto;cursor:move;} </style> </head> <body> <div id="div" onmousewheel="return bbimg(this)"><img id="img" border="0" src="img/zs.jpg" /></div> <script language="javascript"> var params = { zoomVal:1, left: 0, top: 0, currentX: 0, currentY: 0, flag: false }; //圖片縮放 function bbimg(o){ var o=o.getElementsByTagName("img")[0]; params.zoomVal+=event.wheelDelta/1200; if (params.zoomVal >= 0.2) { o.style.transform="scale("+params.zoomVal+")"; } else { params.zoomVal=0.2; o.style.transform="scale("+params.zoomVal+")"; return false; } } //獲取相關(guān)CSS屬性 var getCss = function(o,key){ return o.currentStyle? o.currentStyle[key] : document.defaultView.getComputedStyle(o,false)[key]; }; //拖拽的實現(xiàn) var startDrag = function(bar, target, callback){ if(getCss(target, "left") !== "auto"){ params.left = getCss(target, "left"); } if(getCss(target, "top") !== "auto"){ params.top = getCss(target, "top"); } //o是移動對象 bar.onmousedown = function(event){ params.flag = true; if(!event){ event = window.event; //防止IE文字選中 bar.onselectstart = function(){ return false; } } var e = event; params.currentX = e.clientX; params.currentY = e.clientY; }; document.onmouseup = function(){ params.flag = false; if(getCss(target, "left") !== "auto"){ params.left = getCss(target, "left"); } if(getCss(target, "top") !== "auto"){ params.top = getCss(target, "top"); } }; document.onmousemove = function(event){ var e = event ? event: window.event; if(params.flag){ var nowX = e.clientX, nowY = e.clientY; var disX = nowX - params.currentX, disY = nowY - params.currentY; target.style.left = parseInt(params.left) + disX+ "px"; target.style.top = parseInt(params.top) + disY+ "px"; if (typeof callback == "function") { callback((parseInt(params.left) || 0) + disX, (parseInt(params.top) || 0) + disY); } if (event.preventDefault) { event.preventDefault(); } return false; } } }; startDrag(document.getElementById("img"),document.getElementById("img")) </script> </body> </html>
更多關(guān)于JavaScript相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《JavaScript圖片操作技巧大全》、《JavaScript切換特效與技巧總結(jié)》、《JavaScript運動效果與技巧匯總》、《JavaScript動畫特效與技巧匯總》、《JavaScript錯誤與調(diào)試技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》及《JavaScript數(shù)學(xué)運算用法總結(jié)》
希望本文所述對大家JavaScript程序設(shè)計有所幫助。
相關(guān)文章
Bootstrap滾動監(jiān)聽(Scrollspy)插件詳解
滾動監(jiān)聽插件是用來根據(jù)滾動條所處在的位置自動更新導(dǎo)航項目, 顯示導(dǎo)航項目高亮顯示。這篇文章主要介紹了Bootstrap滾動監(jiān)聽(Scrollspy)插件的相關(guān)資料,需要的朋友可以參考下2016-04-04webpack使用Symbol.toStringTag(Symbol.toStringTag用法)
Symbol.toStringTag是一個內(nèi)置 symbol,它通常作為對象的屬性鍵使用,對應(yīng)的屬性值應(yīng)該為字符串類型,這個字符串用來表示該對象的自定義類型標(biāo)簽,這篇文章主要介紹了webpack使用Symbol.toStringTag(Symbol.toStringTag用法),需要的朋友可以參考下2024-02-02javascript完整操作Table的增加行,刪除行的列子大全
非常漂亮的js操作table行代碼函數(shù)。比較方便2008-10-10bootstrap table.js動態(tài)填充單元格數(shù)據(jù)的多種方法
這篇文章主要為大家詳細(xì)介紹了bootstrap table.js填充單元格數(shù)據(jù)的多種方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-07-07javascript (用setTimeout而非setInterval)
javascript (用setTimeout而非setInterval)如果用setInterval 可能出現(xiàn) 下次調(diào)用會在前一次調(diào)用前調(diào)用2011-12-12