js實現(xiàn)放大鏡效果的思路與代碼
本文實例為大家分享了js實現(xiàn)放大鏡效果的具體代碼,供大家參考,具體內(nèi)容如下
樣式展示:

思路
先準備兩張圖片,一張小圖,一張大圖,并且兩張圖片有一個整數(shù)比值
在小圖片的上方設置一個放大鏡樣式,背景設為透明色即可
大圖片外邊套一個父元素,超出父元素隱藏,大小為只能容納你的放大部分即可
父元素與放大鏡樣式的比值=大圖與小圖的比值
在小圖片上進行鼠標移動時獲取鼠標的坐標,得到鼠標當前處于小圖片上的坐標
根據(jù)對應的比例求出大圖片的坐標并移動大圖片令放大部分處于父元素可見范圍
代碼
1.html部分
<div id="box">
<!-- toBig是放大鏡元素 -->
<div id="toBig"></div>
<!-- 小圖片 -->
<img src="img/05.jpg" id="smallImg" width="800px">
</div>
<div id="beBig">
<!-- 大圖片,比例為1.5倍數(shù) -->
<img src="img/05.jpg" id="bigImg" width="1200px">
</div>
2.css樣式部分
*{
margin: 0px;
padding: 0px;
}
#box{
position: relative;
float: left;
}
#toBig{
width: 80px;
height: 80px;
border: 1px solid gray;
background-color: transparent;
position: absolute;
}
#beBig{
float: left;
overflow: hidden;
border: 1px solid gray;
position: relative;
left: 40px;
top:325px ;
}
#bigImg{
position: absolute;
}
3.腳本部分
<script type="text/javascript">
//獲取小圖片,大圖片,放大鏡元素,大圖片的父元素
var smallImg=document.querySelector("#smallImg");
var bigImg=document.querySelector("#bigImg");
var toBig=document.querySelector("#toBig");
var beBig=document.querySelector("#beBig");
/*在頁面加載時就先計算出小圖片與大圖片的比例*/
var q=0;
window.onload=function(){
q=bigImg.offsetWidth/smallImg.offsetWidth;
//根據(jù)放大鏡的寬高和比例計算要顯示放大內(nèi)容的大小
beBig.style.width = toBig.clientWidth * q +"px";
beBig.style.height = toBig.clientHeight * q +"px";
}
//獲取放大鏡元素的中心,保證鼠標在放大鏡中心
var xCenter=toBig.clientWidth/2;
var yCenter=toBig.clientHeight/2;
//flag是一個標志,當鼠標按下時為true,可以進行移動
flag=false;
toBig.onmousedown = function(){
flag=true;
}
toBig.onmouseup = function(){
flag=false;
}
window.onmousemove=function(ev){
var ev = ev || window.event;
//flag為true時,放大鏡元素被按下并可以進行拖動
if(flag){
//獲取鼠標當前所在位置并計算除了元素自身外要移動的位置
var mouseX=ev.clientX,mouseY=ev.clientY;
var trueX=mouseX - xCenter;
//判斷放大鏡元素是否超出小圖片范圍
if(trueX < smallImg.offsetLeft){
trueX = smallImg.offsetLeft;
}
if(trueX > smallImg.clientWidth - toBig.offsetWidth){
trueX = smallImg.clientWidth - toBig.offsetWidth;
}
var trueY=mouseY - yCenter;
if(trueY <= smallImg.offsetTop){
trueY = smallImg.offsetTop;
}
if(trueY > smallImg.clientHeight - toBig.offsetHeight){
trueY = smallImg.clientHeight - toBig.offsetHeight;
}
//小圖片移動
toBig.style.left = trueX + "px";
toBig.style.top = trueY + "px";
console.log(trueX,trueY);
// 大圖片要移動的位置
bigImg.style.left =-(trueX * q) + "px";
bigImg.style.top =-(trueY * q) + "px";
}
}
</script>
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
詳解JavaScript中扁平與樹形數(shù)據(jù)的轉(zhuǎn)換
這篇文章主要為大家想介紹了JavaScript中實現(xiàn)扁平與樹形數(shù)據(jù)相互轉(zhuǎn)換的方法,文中的示例代碼講解詳細,對我們學習JavaScript有一定的幫助,需要的可以參考一下2023-01-01
JS如何獲取未來n天的時間(返回日期:yyyy-mm-dd,并且判斷是否是今天和星期)
開發(fā)中經(jīng)常遇到獲取時間的業(yè)務,將常用的方法做個筆記記錄下,對JS如何獲取未來n天的時間相關(guān)知識感興趣的朋友一起看看吧2024-03-03
JavaScript實現(xiàn)左右下拉框動態(tài)增刪示例
本篇文章主要介紹了JavaScript實現(xiàn)左右下拉框動態(tài)增刪示例,可以對下拉框進行刪除和增加,非常具有實用價值,需要的朋友可以參考下。2017-03-03
uni-app彈出層uni-popup使用及修改默認樣式的方法實例
我們在使用uniapp開發(fā)的時候,有時可以使用uniapp自有的樣式模板,這樣可以提高開發(fā)效率,下面這篇文章主要給大家介紹了關(guān)于uni-app彈出層uni-popup使用及修改默認樣式的相關(guān)資料,需要的朋友可以參考下2022-11-11
JavaScript實現(xiàn)in-place思想的快速排序方法
這篇文章主要介紹了JavaScript實現(xiàn)in-place思想的快速排序方法的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2016-08-08
一個用javascript寫的select支持上下鍵、首字母篩選以及回車取值的功能
一個用javascript寫的select支持上下鍵、首字母篩選以及回車取值的功能2009-09-09

