原生JS實(shí)現(xiàn)簡(jiǎn)單放大鏡效果
本文實(shí)例為大家分享了原生JS實(shí)現(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]; //遮罩 //鼠標(biāo)移入小圖片盒子 small.onmouseover = function() { //鼠標(biāo)移入圖片盒子將遮罩與大圖片顯示 mask.style.display = 'block'; big.style.display = ' block'; }; //鼠標(biāo)移出小圖片盒子 small.onmouseout = function() { //鼠標(biāo)移出小圖片盒子將遮罩與大圖片隱藏 mask.style.display = 'none'; big.style.display = 'none'; }; var x=0; var y=0; //鼠標(biāo)在小圖片上移動(dòng)時(shí) small.onmousemove = function(ev) { var ev = event || window.event; //讓鼠標(biāo)在遮罩正中 //鼠標(biāo)X坐標(biāo)與Y坐標(biāo) 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>
效果圖:(演示)
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
js實(shí)現(xiàn)點(diǎn)贊按鈕功能的實(shí)例代碼
這篇文章主要介紹了js實(shí)現(xiàn)點(diǎn)贊按鈕功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的工作或?qū)W習(xí)具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-03-03淺談JS繼承_借用構(gòu)造函數(shù) & 組合式繼承
下面小編就為大家?guī)?lái)一篇淺談JS繼承_借用構(gòu)造函數(shù) & 組合式繼承。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-08-08mustache.js實(shí)現(xiàn)首頁(yè)元件動(dòng)態(tài)渲染的示例代碼
這篇文章主要介紹了mustache.js實(shí)現(xiàn)首頁(yè)元件動(dòng)態(tài)渲染的示例代碼,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12javascript實(shí)現(xiàn)簡(jiǎn)單的二級(jí)聯(lián)動(dòng)
這篇文章主要介紹了javascript實(shí)現(xiàn)簡(jiǎn)單的二級(jí)聯(lián)動(dòng),非常的實(shí)用,需要的朋友可以參考下2015-03-03js實(shí)現(xiàn)頁(yè)面多個(gè)日期時(shí)間倒計(jì)時(shí)效果
這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)頁(yè)面多個(gè)日期時(shí)間倒計(jì)時(shí)效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-06-06input type=file 選擇圖片并且實(shí)現(xiàn)預(yù)覽效果的實(shí)例
下面小編就為大家?guī)?lái)一篇input type=file 選擇圖片并且實(shí)現(xiàn)預(yù)覽效果的實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-10-10uniapp多選框全選功能的實(shí)現(xiàn)思路與方法實(shí)例
uniapp給我們提供了tabs組件進(jìn)行單項(xiàng)的切換,但是多選的效果需要我們自己去手寫(xiě),下面這篇文章主要給大家介紹了關(guān)于uniapp多選框全選功能實(shí)現(xiàn)思路與方法的相關(guān)資料,需要的朋友可以參考下2022-08-08