昨天看一篇博文的時(shí)候,說(shuō)到了這個(gè)效果,于是自己想試著寫(xiě)一個(gè),沒(méi)有使用插件,
基本的想法就是,左邊是小圖,右邊對(duì)應(yīng)大圖,鼠標(biāo)進(jìn)去小圖范圍之后,獲取他的坐標(biāo)(x,y)然后計(jì)算
x/小圖的寬度*大圖得寬度/2
y/小圖的高度*大圖得高度/2
計(jì)算出來(lái)的兩個(gè)結(jié)果即為大圖得左右偏移距離
/2是為了讓右邊區(qū)域不會(huì)出現(xiàn)空白。
經(jīng)過(guò)測(cè)試,ie7以上以及主流瀏覽器都可以用,代碼如下:
<div class="wrap"> <div class="small"> <img src="1s.jpg"> <div class="tool" id="tool"></div> </div> <div class="big"><img src="1.jpg"></div></div>
.wrap{overflow:hidden;margin:50px auto;}.small{position:relative;float:left;width:214px;height:328px;} .tool{width:100px;height:100px;position:absolute;top:50px;left:100px;background:rgba(255,255,255,0.5);} .big{float:left;margin:0 40px;width:330px;overflow:hidden;height:328px;display:none;position:relative;}.big img{position:absolute;width:650px;height:960px;}主要的JS代碼如下:
//不加蒙版放大鏡    $('.small').mousemove(function(e) {      $(this).siblings('.big').show();      //var e = event || window.event;      var scrollX = document.documentElement.scrollLeft || document.body.scrollLeft;      //滾動(dòng)條距離屏幕左邊的寬度      var scrollY = document.documentElement.scrollTop || document.body.scrollTop;      //滾動(dòng)條距離屏幕上面的高度      //e.pageX相對(duì)于文檔左邊的高度      //e.pageY相對(duì)于文檔上面的高度      //e.clientX相對(duì)于屏幕左邊的高度      //e.clientY相對(duì)于屏幕上面的高度      var xx = e.pageX || e.clientX + scrollX;//相對(duì)于文檔左邊的寬度      var yy = e.pageY || e.clientY + scrollY;//相對(duì)于文檔上面的高度      //.offset().top元素相對(duì)于文檔上面的位置      //.offset().left元素相對(duì)于文檔左面的位置      var y=yy-$(this).offset().top;//鼠標(biāo)相對(duì)于元素的x,y坐標(biāo)      var x=xx-$(this).offset().left;      var width=$(this).width();      var lwidth=$(this).siblings('.big').find('img').width();      //按照大圖與小圖的比例來(lái)進(jìn)行移動(dòng)的      var left=x/width*lwidth/2;      var height=$(this).height();      var lheight=$(this).siblings('.big').find('img').height();      var top=y/height*lheight/2;      $(this).siblings('.big').find('img').css({left:-left,top:-top});      //console.log(x + '---' + y);      //不加蒙版放大鏡結(jié)束      //蒙版跟著動(dòng)      var twidth=$(this).find('.tool').width();      var theight=$(this).find('.tool').height();      var tleft=x-twidth/2;      var ttop=y-theight/2;      if(tleft<0){        tleft=0;      }      if(tleft>width-twidth){        tleft=width-twidth;      }      if(ttop<0){        ttop=0      }      if(ttop>height-theight){        ttop=height-theight;      }      $(this).find('.tool').css({left:tleft,top:ttop});    });效果如下:

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持武林網(wǎng)。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注