原生JS實現(xiàn)簡單放大鏡效果
更新時間:2017年02月08日 17:10:31 作者:zuncle
這篇文章主要為大家詳細介紹了原生JS實現(xiàn)簡單放大鏡效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文實例為大家分享了原生JS實現(xiàn)放大鏡效果的具體代碼,供大家參考,具體內(nèi)容如下
<html> <head> <meta charset="UTF-8"> <title></title> <style type="text/css"> * { margin: 0; padding: 0; } img{ vertical-align: top; } .fdj { width: 350px; height: 350px; position: relative; margin: 100px auto; border: 1px solid gainsboro; } .small { position: relative; } .small img { width: 350px; } .mask { width: 100px; height: 100px; background: rgba(255, 255, 0, 0.4); position: absolute; left: 0; top: 0; cursor: move; display: none; } .big { position: absolute; top: 0; left: 360px; width: 500px; height: 500px; border: 1px solid gainsboro; overflow: hidden; display: none; } .big img{ position: absolute; left: 0; top: 0; } </style> </head> <body> <div class="fdj"> <div class="small"> <img src="http://cdn.attach.qdfuns.com/notes/pics/201702/08/162503mw0fawb5b02va22i.jpg" /> <div class="mask"></div> </div> <div class="big"> <img src="http://cdn.attach.qdfuns.com/notes/pics/201702/08/162503mw0fawb5b02va22i.jpg" /> </div> </div> </body> <script type="text/javascript"> var fdj = document.querySelector('.fdj') // 獲得最大的盒子 var small = document.querySelector('.small'); //獲取小圖片盒子 var big = document.querySelector('.big'); //獲取大圖片盒子 var bigs = big.children[0] //大圖片 var smalls = small.children[0] //小圖片 var mask = small.children[1]; //遮罩 //鼠標移入小圖片盒子 small.onmouseover = function() { //鼠標移入圖片盒子將遮罩與大圖片顯示 mask.style.display = 'block'; big.style.display = ' block'; }; //鼠標移出小圖片盒子 small.onmouseout = function() { //鼠標移出小圖片盒子將遮罩與大圖片隱藏 mask.style.display = 'none'; big.style.display = 'none'; }; var x=0; var y=0; //鼠標在小圖片上移動時 small.onmousemove = function(ev) { var ev = event || window.event; //讓鼠標在遮罩正中 //鼠標X坐標與Y坐標 x = ev.clientX -this.offsetParent.offsetLeft- mask.offsetWidth / 2 ; y = ev.clientY -this.offsetParent.offsetTop- mask.offsetHeight / 2 ; //將遮罩限制在小圖片盒子中 if (x<0) { x=0; }else if(x>small.offsetWidth-mask.offsetWidth){ x = small.offsetWidth-mask.offsetWidth; } if(y<0){ y=0; }else if(y>small.offsetHeight-mask.offsetHeight){ y= small.offsetHeight-mask.offsetHeight } mask.style.left = x + 'px'; mask.style.top = y + 'px'; //大圖與小圖的比例 /*var scalX = bigs.offsetWidth/small.offsetWidth; var scalY = bigs.offsetHeight/small.offsetHeight;*/ var scalX = x/(small.offsetWidth-mask.offsetWidth); var scalY = y/(small.offsetHeight-mask.offsetHeight); bigs.style.left = -(x*scalX)+'px'; bigs.style.top = -(y*scalY)+'px'; }; </script> </html>
效果圖:(演示)
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
淺談JS繼承_借用構(gòu)造函數(shù) & 組合式繼承
下面小編就為大家?guī)硪黄獪\談JS繼承_借用構(gòu)造函數(shù) & 組合式繼承。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-08-08mustache.js實現(xiàn)首頁元件動態(tài)渲染的示例代碼
這篇文章主要介紹了mustache.js實現(xiàn)首頁元件動態(tài)渲染的示例代碼,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-12-12javascript實現(xiàn)簡單的二級聯(lián)動
這篇文章主要介紹了javascript實現(xiàn)簡單的二級聯(lián)動,非常的實用,需要的朋友可以參考下2015-03-03input type=file 選擇圖片并且實現(xiàn)預(yù)覽效果的實例
下面小編就為大家?guī)硪黄猧nput type=file 選擇圖片并且實現(xiàn)預(yù)覽效果的實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-10-10