JavaScript實現圖片的放大縮小及拖拽功能示例
本文實例講述了JavaScript實現圖片的放大縮小及拖拽功能。分享給大家供大家參考,具體如下:
實現效果如下:
實現代碼:
<!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; } } //獲取相關CSS屬性 var getCss = function(o,key){ return o.currentStyle? o.currentStyle[key] : document.defaultView.getComputedStyle(o,false)[key]; }; //拖拽的實現 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>
更多關于JavaScript相關內容感興趣的讀者可查看本站專題:《JavaScript圖片操作技巧大全》、《JavaScript切換特效與技巧總結》、《JavaScript運動效果與技巧匯總》、《JavaScript動畫特效與技巧匯總》、《JavaScript錯誤與調試技巧總結》、《JavaScript數據結構與算法技巧總結》、《JavaScript遍歷算法與技巧總結》及《JavaScript數學運算用法總結》
希望本文所述對大家JavaScript程序設計有所幫助。
相關文章
Bootstrap滾動監(jiān)聽(Scrollspy)插件詳解
滾動監(jiān)聽插件是用來根據滾動條所處在的位置自動更新導航項目, 顯示導航項目高亮顯示。這篇文章主要介紹了Bootstrap滾動監(jiān)聽(Scrollspy)插件的相關資料,需要的朋友可以參考下2016-04-04webpack使用Symbol.toStringTag(Symbol.toStringTag用法)
Symbol.toStringTag是一個內置 symbol,它通常作為對象的屬性鍵使用,對應的屬性值應該為字符串類型,這個字符串用來表示該對象的自定義類型標簽,這篇文章主要介紹了webpack使用Symbol.toStringTag(Symbol.toStringTag用法),需要的朋友可以參考下2024-02-02javascript完整操作Table的增加行,刪除行的列子大全
非常漂亮的js操作table行代碼函數。比較方便2008-10-10bootstrap table.js動態(tài)填充單元格數據的多種方法
這篇文章主要為大家詳細介紹了bootstrap table.js填充單元格數據的多種方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-07-07javascript (用setTimeout而非setInterval)
javascript (用setTimeout而非setInterval)如果用setInterval 可能出現 下次調用會在前一次調用前調用2011-12-12