国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

JavaScript實(shí)現(xiàn)圖片放大鏡效果

2024-05-06 15:37:21
字體:
供稿:網(wǎng)友

本文實(shí)例為大家分享了js實(shí)現(xiàn)圖片放大鏡效果的具體代碼,供大家參考,具體內(nèi)容如下

1、結(jié)構(gòu)布局HTML代碼

<div class="leftcon" id="left"> <img src="~/Content/images/風(fēng)景-1.jpg" /> <div class="slide_box" id="box"></div></div><div class="rightcon" id="right"> <img src="~/Content/images/風(fēng)景-1.jpg" /></div>

2、修飾結(jié)構(gòu)css樣式代碼

img {display: block;}.leftcon {width: 350px;height: 350px;margin: 100px 20px 0px 312px;float: left;position: relative;box-shadow: 3px 3px 10px 0 #111111; /*給圖片施加陰影效果 */-webkit-box-shadow: 3px 3px 10px 0 #111111; /*兼容性處理*/-moz-box-shadow: 3px 3px 10px 0 #111111;}.leftcon img {width: 100%;height: 100%;}.leftcon .slide_box {display: none; /*將小方塊盒子隱藏*/position: absolute;top: 0;left: 0;width: 175px;height: 175px;background: #000;opacity: 0.3;cursor: move; /*改變鼠標(biāo)的形狀*/}.rightcon {display: none; /*將右邊div隱藏*/width: 350px;height: 350px;margin-top: 100px;float: left;overflow: hidden;position: relative;}.rightcon img {width: 200%;height: 200%;position: absolute;left: 0px;top: 0px;}

3、js獲取事件對象

1)、Event是獲取事件對象,對象代表事件的狀態(tài),比如事件在其中發(fā)生的元素、鍵盤按鍵的狀態(tài)、
鼠標(biāo)的位置、鼠標(biāo)按鈕的狀態(tài),envet是windows的一個(gè)屬性。 放大鏡實(shí)現(xiàn)方法(獲取右邊圖片定位)
2)、e.clientY:返回事件觸發(fā)時(shí)鼠標(biāo)相對于元素視口的Y坐標(biāo)。
e.clientX:返回事件觸發(fā)時(shí)鼠標(biāo)相對于元素視口的X坐標(biāo)。
這里的元素視口實(shí)際上代指就是瀏覽器,clientX是鼠標(biāo)距離瀏覽器左邊框的距離,
clientY是鼠標(biāo)距離瀏覽器上邊框的距離。
offsetTop獲取對象相對于版面或由offsetTop屬性指定的父坐標(biāo)的計(jì)算頂端位置。
這里就是左邊的div相對于body即瀏覽器窗口的縱向距離
offsetLeft獲取對象相對于版面或由offsetLeft屬性指定的父坐標(biāo)的計(jì)算頂端位置。
這里就是左邊的div相對于body即瀏覽器窗口的縱橫向距離
offsetHeight是對象的可見高度。這里是指小滑塊的高度
offsetHeight是對象的可見寬度。這里是指小滑塊的寬度

var leftone = document.getElementById('left');var rightone = document.getElementById('right');var box = document.getElementById('box');var rimg = rightone.getElementsByTagName("img")[0];function getPosition(e){ //這里的參數(shù)e就是代表event //首先我們要去判斷事件源,獲取事件源,也就是e  var e=e||window.event;  //實(shí)現(xiàn)兼容  //理解:  //這個(gè)表達(dá)式寫全是這樣:var e=event?event||window.event;  //如果存在event,那么var e=event;而如果不存在event,  //那么var e=window.event.那么可以看出確實(shí)能實(shí)現(xiàn)兼容 var top = e.clientY-leftone.offsetTop-box.offsetHeight/2;  //計(jì)算小圖容器里的鼠標(biāo)坐標(biāo)(要減去最外層的偏移) var left = e.clientX-leftone.offsetLeft-box.offsetWidth/2; //這里為什么除以2?是因?yàn)槲覀儾怀?的話,事件源也就是鼠標(biāo)就在這個(gè)小滑塊的的右下角,并不美觀  //我們要讓鼠標(biāo)位于滑塊的中心,所以寬高各減去一半    //邊界判斷    //獲取小滑塊最大縱向移動(dòng)距離    var maxtop = leftone.offsetHeight - box.offsetHeight;     //獲取小滑塊最大橫向移動(dòng)距離    var maxleft = leftone.offsetWidth - box.offsetWidth;     var mintop = 0; //獲取小滑塊最小縱向移動(dòng)距離    var minleft = 0; //獲取小滑塊最大縱向移動(dòng)距離    var mvtop; //定義小滑塊的縱向移動(dòng)距離    var mvleft; //定義小滑塊的橫向移動(dòng)距離    // 判斷    if (top<mintop) {    box.style.top = mintop + "px";      mvtop = mintop;      //理解:  //top是鼠標(biāo)到瀏覽器的垂直距離-左邊div頂部到瀏覽器的垂直距離-小滑塊的高度的一半。  //那么現(xiàn)在鼠標(biāo)在小滑塊的中心,也就是說,top就等于小滑塊的頂部到左邊div的垂直距離  //如果top<0,就是說小滑塊和左邊div頂部重合,就讓小滑塊的top值為0,即鼠標(biāo)繼續(xù)向上移動(dòng),  //小滑塊不在移動(dòng),從而讓小滑塊的移動(dòng)范圍不能超過左邊div的寬高范圍  //下方同理    }else if(top>maxtop){      box.style.top = maxtop + "px";      mvtop = maxtop; //如果top>maxtop,就是說小滑塊和左邊div底部重合,就讓小滑塊的top值為maxtop, //即鼠標(biāo)繼續(xù)向下移動(dòng),小滑塊不在移動(dòng),從而讓小滑塊的移動(dòng)范圍不能超過左邊div的寬高范圍    }else{      box.style.top = top + "px";      mvtop = top;      //不超過邊界,則小滑塊的垂直移動(dòng)距離就等于top,即小滑塊的頂部到左邊div的垂直距離    }    if(left<minleft){      box.style.left = minleft + "px";      mvleft = minleft    }else if(left>maxleft){      box.style.left = maxleft + "px";      mvleft = maxleft    }else{      box.style.left = left + "px";      mvleft = left;    } //因?yàn)橛疫卍iv的圖片是左邊div的圖片的兩倍,而左邊div和右邊div都是小滑塊的寬高的兩倍, //而要讓右邊div放大左邊的小滑塊的包圍圖片,所以右邊大圖的定位坐標(biāo)是小滑塊的兩倍,這樣才能進(jìn)行映射 //右側(cè)圖片跟著運(yùn)動(dòng):左側(cè)小滑塊移動(dòng)多少,右側(cè)跟著移動(dòng)他的2倍即可    rimg.style.top = -mvtop*2 + "px";    rimg.style.left = -mvleft*2 + "px"; }            
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 汉阴县| 丹阳市| 犍为县| 玉环县| 枞阳县| 宜君县| 柞水县| 丽水市| 闸北区| 胶南市| 彝良县| 平远县| 荃湾区| 仪征市| 清原| 石景山区| 翼城县| 永清县| 孝义市| 郧西县| 武平县| 铁力市| 曲麻莱县| 颍上县| 通化县| 钟祥市| 平罗县| 安国市| 图木舒克市| 巴彦淖尔市| 开原市| 平邑县| 合阳县| 克什克腾旗| 商水县| 平果县| 岢岚县| 大理市| 苗栗县| 乌鲁木齐市| 固安县|