jQuery圖片放大和旋轉效果
分享一段程式碼例項,它實現了圖片旋轉和放大的效果。
拖動底部滑動條可以調整拓片的大小,滑鼠旋轉圖片可以實現圖片旋轉效果。
程式碼例項如下:
[HTML] 純文字檢視 複製程式碼<!doctype html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style type="text/css"> *{ margin:0px; padding:0px; -webkit-user-select:none; } .editeImgMain{ position:absolute; width:400px; height:300px; top:50%; left:50%; margin:-150px 0px 0px -200px; box-shadow:rgba(0,0,0,0.2) 0px 0px 0px 1px; display:table; } .editeImgMain .operationBar{ position:absolute; top:0px; bottom:0px; left:0px; right:0px; z-index:100; } .editeImgMain .operationBar .rotateBar{ position:absolute; width:100px; height:100px; top:50%; left:50%; margin:-50px; pointer-events: none; } .editeImgMain .operationBar .rotateBar span{ position:absolute; font-size:12px; color:#fff; } .editeImgMain .operationBar .rotateBar .tip0{ top:0px; left:50%; margin:0px -5px } .editeImgMain .operationBar .rotateBar .tip90{ top:50%; right:0px; margin:-5px -10px; } .editeImgMain .operationBar .rotateBar .tip180{ bottom:0px; left:50%; margin:0px -10px; } .editeImgMain .operationBar .rotateBar .tip270{ top:50%; left:0px; margin:-5px 0px; } .editeImgMain .operationBar .rotateBar .rotateHandle{ box-shadow:rgba(255,255,255,1.0) 0px 0px 0px 4px; width:100px; height:100px; border-radius:50%; background-image:url('demo/jQuery/img/rotate.gif'); background-size:50px; background-position:center; background-repeat:no-repeat; } .editeImgMain .scaleBar{ position:absolute; bottom:0px; width:200px; left:50%; margin:-20px -100px; z-index:100; } .editeImgMain .scaleBar .scaleInput{ width:100%; } .editeImgMain .innerImg{ display:table-cell; vertical-align:middle; } .editeImgMain .innerImg img{ max-width:100%; max-height:100%; } </style> <script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script> <script> $(function() { //旋轉 var mouseState = 'up'; var rotateHandleJQO; var innerImgJQO; var mouseX; var mouseY; var imgCenterX; var imgCenterY; var startAngle = 0; var rotateAngle = 0; var anagleResult; var startScale = 1; var scaleResult = 1; $('.operationBar').on('mousedown', function() { mouseState = 'down'; rotateHandleJQO = $('.rotateHandle'); innerImgJQO = $('.innerImg'); imgCenterX = rotateHandleJQO.offset().left + rotateHandleJQO.width() / 2; imgCenterY = rotateHandleJQO.offset().top + rotateHandleJQO.height() / 2; startAngle = anagleResult; startScale = scaleResult; console.log('startAngle', startAngle); }) $(document).on('mouseup', function() { mouseState = 'up'; if (Math.abs(360 - anagleResult) < 10 || Math.abs(0 - anagleResult) < 10) { anagleResult = 0; rotateAngle = 0; innerImgJQO.css('transform', 'rotate(0deg) scale(' + startScale + ')'); rotateHandleJQO.css('transform', 'rotate(0deg)'); } else if (Math.abs(90 - anagleResult) < 10) { anagleResult = 90; rotateAngle = 90; innerImgJQO.css('transform', 'rotate(90deg) scale(' + startScale + ')'); rotateHandleJQO.css('transform', 'rotate(90deg)'); } else if (Math.abs(180 - anagleResult) < 10) { anagleResult = 180; rotateAngle = 180; innerImgJQO.css('transform', 'rotate(180deg) scale(' + startScale + ')'); rotateHandleJQO.css('transform', 'rotate(180deg)'); } else if (Math.abs(270 - anagleResult) < 10) { anagleResult = 270; rotateAngle = 270; innerImgJQO.css('transform', 'rotate(270deg) scale(' + startScale + ')'); rotateHandleJQO.css('transform', 'rotate(270deg)'); } }) $(document).on('mousemove', function(e) { if (mouseState == 'down') { mouseX = e.pageX; mouseY = e.pageY; rotateAngle = getRotateAngle(mouseX, mouseY, imgCenterX, imgCenterY, startAngle); innerImgJQO.css('transform', 'rotate(' + rotateAngle + 'deg) scale(' + startScale + ')'); rotateHandleJQO.css('transform', 'rotate(' + rotateAngle + 'deg)'); startAngle = rotateAngle; } }) function getRotateAngle(x, y, imgCenterX, imgCenterY, startAngle) { console.log(mouseX, mouseY, imgCenterX, imgCenterY, startAngle) anagleResult = Math.atan(Math.abs(x - imgCenterX) / Math.abs(y - imgCenterY)); anagleResult = anagleResult * 180 / Math.PI; console.log('anagleResult1', anagleResult); if (x > imgCenterX && y > imgCenterY) { console.log('第4象限'); anagleResult = 180 - anagleResult; } else if (x > imgCenterX && y < imgCenterY) { console.log('第1象限'); } else if (x < imgCenterX && y < imgCenterY) { console.log('第2象限'); anagleResult = 360 - anagleResult; } else { console.log('第3象限'); anagleResult = 180 + anagleResult; } console.log('anagleResult2', anagleResult); return anagleResult; } //縮放 $('.scaleInput').on('mousemove', function() { scaleResult = $(this).val() / 100; console.log(scaleResult); startScale = scaleResult; rotateHandleJQO = $('.rotateHandle'); innerImgJQO = $('.innerImg'); innerImgJQO.css('transform', 'rotate(' + rotateAngle + 'deg) scale(' + startScale + ')'); }) }) </script> </head> <body> <div class="editeImgMain"> <div class="operationBar"> <div class="rotateBar"> <div class="rotateHandle"></div> <span class="tip0">0°</span> <span class="tip90">90°</span> <span class="tip180">180°</span> <span class="tip270">270°</span> </div> </div> <div class="scaleBar"> <input type="range" class="scaleInput" max=200 min=0/> </div> <div class="innerImg"> <img src="demo/jQuery/img/green.jpg" /> </div> </div> </body> </html>
相關文章
- CSS3圖片旋轉效果CSSS3
- jQuery隨滑鼠旋轉的圖形效果jQuery
- js控制專輯圖片旋轉效果JS
- 在Delphi中實現圖片的旋轉、縮放 (轉)
- 開源圖片工具箱(Img Toolbox) 格式轉換 新增水印 圖片壓縮 圖片裁剪 圖片旋轉 圖片縮放
- javascript仿新浪微博圖片放大縮小及旋轉效果JavaScript
- html中圖片旋轉HTML
- 將圖片旋轉(這裡不是旋轉imageView)View
- canvas旋轉太極圖效果Canvas
- 怎麼旋轉圖片?BenVista PhotoZoom Pro旋轉圖片的方法OOM
- 圖片操作系列 —(2)手勢旋轉圖片
- php實現圖片旋轉PHP
- Android 中實現圖片平移、縮放、旋轉同步進行Android
- 直播app系統原始碼,圖片Loading旋轉動畫效果APP原始碼動畫
- jQuery圖片無縫滾動效果jQuery
- jQuery環形旋轉載入進度條效果jQuery
- 【Go語言繪圖】圖片的旋轉Go繪圖
- jQuery 圖片垂直切換效果詳解jQuery
- jQuery滑鼠懸浮當前圖片高亮其他圖片灰暗效果jQuery
- imageView圖片放大縮小及旋轉View
- 滑鼠懸浮圖片實現縮放效果
- Flutter 圖片裁剪旋轉翻轉編輯器Flutter
- canvas實現的旋轉太極圖效果Canvas
- jQuery實現圖片尺寸自適應效果jQuery
- 如何實現圖片的3D旋轉,而且是不停旋轉?3D
- jQuery和css3實現的摩天輪旋轉效果jQueryCSSS3
- 卡片旋轉動畫效果動畫
- (轉)jquery圖片左右滾動jQuery
- | / - 的旋轉效果實現(轉)
- 23.Quick QML-簡單且好看的圖片瀏覽器-支援多個圖片瀏覽、縮放、旋轉、滑輪切換圖片UI瀏覽器
- (轉)jquery實現圖片輪播jQuery
- jQuery Mobile圖片輪轉輪播jQuery
- 滑鼠懸浮div實現旋轉縮放效果程式碼例項
- ffmpeg-圖片壓縮旋轉等處理
- 自己積累的一些Emgu CV程式碼(主要有圖片格式轉換,圖片裁剪,圖片翻轉,圖片旋轉和圖片平移等功能)
- iOS下html上傳圖片被旋轉問題iOSHTML
- CSS 3D旋轉效果CSS3D
- CSS3 旋轉魔方效果CSSS3