JavaScript 圖片放大鏡效果
本章節分享一段程式碼例項,它實現了滑鼠懸浮放大鏡效果。
程式碼例項如下:
[HTML] 純文字檢視 複製程式碼執行程式碼<!doctype html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style type="text/css"> body { padding: 0; margin: 0; width: 100%; height: 100%; overflow: hidden; } .wrap { text-align: center; } .wrap img { width: 60%; cursor: crosshair; } .loupe { position: absolute; pointer-events: none; visibility: hidden; z-index: 999; width: 200px; height: 200px; border: 3px solid #636363; border-radius: 50%; } </style> <script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script> <script type="text/javascript"> $(document).ready(function(){ var vh=$(window).height() var vw=$(window).width() var imgh=$(".wrap img").height() var imgw=$(".wrap img").width() var beginX=vw*2/10 var endX=beginX+imgw var beginY=(vh-imgh)/2 var endY=beginY+imgh $(".wrap").css("margin-top",beginY+"px") //滑鼠經過 document.addEventListener("mousemove", loupe , false); function loupe(e){ var x,y x=e.clientX y=e.clientY //判斷滑鼠或觸控點在圖片區域,是則顯示放大鏡div層 if(x>beginX&&x<endX&&y>beginY&&y<endY){ var mx=100-(x-beginX)/imgw*1920 //1920為原圖片寬度 var my=100-(y-beginY)/imgh*1200 //1200為原圖片高度 var bg="url(demo/jQuery/img/pic.jpg) "+mx+"px "+my+"px no-repeat #fff" $(".loupe").css("left",x-103+"px").css("top",y-103+"px").css('background',bg) $(".loupe").css("visibility","visible") }else{ $(".loupe").css("visibility","hidden") } } }) </script> </head> <body> <div class="loupe"></div> <div class="wrap"> <img src="demo/jQuery/img/pic.jpg"> </div> </body> </html>
上面的程式碼實現了放大鏡效果,下面介紹一下它的實現過程。
一.程式碼註釋:
(1).$(document).ready(function(){}),當文件結構完全載入完畢再去執行函式中的程式碼。
(2).var vh = $(window).height(),獲取視窗的高度。
(3).var vw = $(window).width(),獲取視窗的寬度。
(4).var imgh = $(".wrap img").height(),獲取圖片的高度。
(5).var imgw = $(".wrap img").width(),獲取圖片的寬度。
(6).var beginX = (vw - imgw) / 2,由於圖片水平居中的,所以beginX就是圖片區域左邊緣座標。
(7).var endX = beginX + imgw,圖片區域右邊緣的座標。
(8).var beginY = (vh - imgh) / 2,由於圖片是垂直居中,所以beginY就是圖片區域上邊緣的座標。
(9).var endY = beginY + imgh,圖片區域下邊緣的座標。
(10).$(".wrap").css("margin-top", beginY + "px"),設定圖片是垂直居中,水平居中效果在wrap樣式類中設定的。
(11).document.addEventListener("mousemove", loupe , false);,註冊事件處理函式。
(12).function loupe(e){},事件處理函式,引數是事件物件。
(13).var x, y,宣告兩個變數,下面會用到。(14).x = e.clientX,獲取滑鼠指標在客戶區的水平座標並賦值給x。
(15).y = e.clientY,獲取滑鼠指標在客戶區的垂直座標並賦值給y。
(16).if(x>beginX&&x<endX&&y>beginY&&y<endY),判斷滑鼠指標是否在圖片區域。
(17).var mx = 100 - (x - beginX) / imgw * 1920,獲取背景圖片的x軸方位的座標,原圖的寬度是1920px。使用100減去這個值,目的是將圖片懸浮的地方定位於圓形區域的中心。
(18).var my = 100 - (y - beginY) / imgh * 1200,和上面是同樣的道理。
(19).var bg = "url(img/pic.jpg) " + mx + "px " + my + "px no-repeat #fff",設定背景圖片樣式的字串。
(20).$(".loupe").css("left", x - 103 + "px").css("top", y - 103 + "px").css('background', bg),將滑鼠指標定位於圓形區域的中心。
(21).$(".loupe").css("visibility", "visible"),圓形區域顯示。
(22).$(".loupe").css("visibility", "hidden"),圓形區域隱藏。
二.相關閱讀:
(1).css()可以參閱jQuery css()一章節。
(2).addEventListener()可以參閱addEventListener()一章節。
(3).clientX可以參閱javascript event.clientX一章節。
相關文章
- canvas實現的圖片放大鏡效果Canvas
- 直播app開發搭建,純javascript實現圖片放大鏡效果APPJavaScript
- 圖片放大鏡效果實現過程詳解
- 用JavaScript中jQuery編寫放大鏡效果JavaScriptjQuery
- jQuery 放大鏡效果jQuery
- Magnifier.js - 支援滑鼠滾輪縮放的圖片放大鏡效果NifiJS
- javascript仿新浪微博圖片放大縮小及旋轉效果JavaScript
- CSS3圖片拉近放大效果CSSS3
- jQuery圖片放大和旋轉效果jQuery
- jQuery 放大鏡效果詳解jQuery
- 一個基於vue的圖片放大鏡Vue
- Flutter 圖片加濾鏡效果Flutter
- CSS滑鼠懸浮圖片動畫放大效果CSS動畫
- 通過JavaScript如何做一個仿京東的跟隨圖片放大鏡效果?(附加註釋)簡單實用。JavaScript
- JS 文字輸入框放大鏡效果JS
- 離屏Canvas——製作放大鏡效果Canvas
- JavaScript 圖片切換展示效果JavaScript
- 利用 OmniGraffle 實現放大鏡標註效果
- 視覺化學習:實現Canvas圖片區域性放大鏡視覺化Canvas
- Canvas + JavaScript 製作圖片粒子效果CanvasJavaScript
- jQuery放大鏡jQuery
- javascript實現放大鏡外掛【含進階】JavaScript
- SVG格式圖片的放大SVG
- Canvas實現放大鏡效果完整案例分析(附程式碼)Canvas
- javascript實現的放大效果程式碼JavaScript
- AI影像放大工具,圖片放大無所不能AI
- 基於 Vue 的商品主圖放大鏡方案Vue
- JavaScript跟隨滑鼠移動的圖片效果JavaScript
- Android自定義控制元件之區域性圖片放大鏡--BiggerViewAndroid控制元件View
- Android自定義控制元件之區域性圖片放大鏡–BiggerViewAndroid控制元件View
- vue-piczoom:基於vue2.x的電商圖片放大鏡外掛VueOOM
- JavaScript和css3點贊放大效果JavaScriptCSSS3
- JS實現動態瀑布流及放大切換圖片效果(js案例)JS
- CSS圖片濾鏡灰度CSS
- Mac顯示放大鏡Mac
- 淘寶放大鏡實現
- 讓 Vuepress 支援圖片放大功能Vue
- 後臺展示圖片點選放大