最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JS實(shí)現(xiàn)圖片放大鏡插件詳解

 更新時(shí)間:2017年11月06日 08:37:58   作者:一個(gè)檸檬  
這篇文章主要為大家詳細(xì)介紹了JS實(shí)現(xiàn)圖片放大鏡插件的使用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

前  言

  我們大家經(jīng)常逛各種電商類的網(wǎng)站,商品的細(xì)節(jié)就需要用到放大鏡,這個(gè)大家一定不陌生,今天我們就做一個(gè)圖片放大鏡的插件,來(lái)看看圖片是如何被放大的……

先看一下我們要是實(shí)現(xiàn)的最終效果是怎么樣的    

看完效果,大家有思路了嗎,沒(méi)有的話,我們一起來(lái)看一下是如何實(shí)現(xiàn)的~

1實(shí)現(xiàn)思路

① 要實(shí)現(xiàn)指上后放大的效果,需要做三個(gè)div,一個(gè)用來(lái)放原圖,另一個(gè)用來(lái)放放大效果的div,最后一個(gè)是鼠標(biāo)指上后需要放大部分的div(這個(gè)div我們用p標(biāo)簽來(lái)代替)。

② 確定放大比例,最重要的一點(diǎn),鼠標(biāo)指上的div與放大效果的div,和原圖與放大圖的比例要相等。

③ 將鼠標(biāo)指上后的放大效果顯示出來(lái)。

2具體實(shí)現(xiàn)步驟

 首先,我們先來(lái)建三個(gè)div。

<div id="wrapper"> 
     <!--小圖-->
    <div id="img_min"> 
       <!--圖片-->
       <img src="img/11.png" alt="min"> 
       <!--跟隨鼠標(biāo)的白塊-->
       <p id="mousebg"></p> 
     </div> 
   <!--大圖-->
     <div id="img_max">
       <img id="img2_img" src="img/11.png" alt="max">
     </div> 
   </div> 

我們HTML代碼部分已經(jīng)全部完成,接下來(lái),我們用JS來(lái)實(shí)現(xiàn)功能:

給原圖添加三個(gè)事件,分別是,鼠標(biāo)進(jìn)入,鼠標(biāo)移動(dòng),鼠標(biāo)移出。

當(dāng)鼠標(biāo)移入原圖時(shí),鼠標(biāo)指上時(shí)的div和放大效果的div同時(shí)顯示。

img1.onmouseover = function () { 
       //鼠標(biāo)進(jìn)入 
       img2.style.display = 'block'; 
       mousebg.style.display = 'block'; 
      
     }     

鼠標(biāo)移出事件:

 img1.onmouseout = function () { 
       //鼠標(biāo)離開(kāi) 
       img2.style.display = 'none'; 
       mousebg.style.display = 'none'; 
     } 

重點(diǎn)是當(dāng)鼠標(biāo)移動(dòng)時(shí),根據(jù)p標(biāo)簽與原圖的位置,來(lái)顯示大圖需要放大的部分。

var _event = event||window.event;//兼容性處理 
var mouseX = _event.clientX - img1.offsetLeft; 
 //計(jì)算鼠標(biāo)相對(duì)與小圖的位置 
var mouseY = _event.clientY - img1.offsetTop; 

在做位置分析時(shí),需要考慮四種臨界情況:

就是當(dāng)鼠標(biāo)從圖片的上、下、左、右剛剛進(jìn)入時(shí),并且這個(gè)距離小于鼠標(biāo)指上的div寬度的二分之一時(shí),放大效果的div顯示出來(lái),并不移動(dòng)。

//特殊情況處理,分別靠近四條邊的時(shí)候 
 if(mouseX<mousebg.offsetWidth/2){ 
  mouseX = mousebg.offsetWidth/2; 
   } 
 if(mouseX>img1.offsetWidth-mousebg.offsetWidth/2){ 
  mouseX = img1.offsetWidth-mousebg.offsetWidth/2; 
   } 
 if(mouseY<mousebg.offsetHeight/2){ 
  mouseY = mousebg.offsetHeight/2; 
 } 
 if(mouseY>img1.offsetHeight-mousebg.offsetHeight/2){ 
  mouseY = img1.offsetHeight-mousebg.offsetHeight/2; 
 } 

最后,計(jì)算大圖的顯示范圍:

 //計(jì)算大圖的顯示范圍 
 img2_img.style.left = -mul*mouseX+img2.offsetWidth/2+"px"; 
 img2_img.style.top = -mul*mouseY+img2.offsetHeight/2+"px"; 
 //使鼠標(biāo)在白塊的中間 
mousebg.style.left = mouseX-mousebg.offsetWidth/2+"px"; 
mousebg.style.top = mouseY-mousebg.offsetHeight/2+"px"; 

這樣,我們用JS實(shí)現(xiàn)圖片放大鏡的插件就全部完成了。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 跨瀏覽器的事件對(duì)象介紹

    跨瀏覽器的事件對(duì)象介紹

    雖然IE的事件對(duì)象與DOM的事件對(duì)象存在差異,但是IE事件對(duì)象中所包含的信息和能力,與DOM事件對(duì)象是相同的,只是表現(xiàn)形式不同而已,通過(guò)映射的方式,我們可以實(shí)現(xiàn)兼容IE和DOM事件對(duì)象的事件對(duì)象
    2012-06-06
  • BootStrap文件上傳樣式超好看【持續(xù)更新】

    BootStrap文件上傳樣式超好看【持續(xù)更新】

    這篇文章主要介紹了BootStrap文件上傳樣式非常好看,通過(guò)引入相關(guān)插件,實(shí)現(xiàn)此效果,非常具有參考借鑒價(jià)值,感興趣的朋友快來(lái)一起學(xué)習(xí)吧
    2016-05-05
  • JS高級(jí)拖動(dòng)技術(shù) setCapture,releaseCapture

    JS高級(jí)拖動(dòng)技術(shù) setCapture,releaseCapture

    setCapture 的意思就是設(shè)置一個(gè)對(duì)象的方法被觸發(fā)的范圍,或者作用域。
    2011-07-07
  • Javascript實(shí)現(xiàn)快速排序(Quicksort)的算法詳解

    Javascript實(shí)現(xiàn)快速排序(Quicksort)的算法詳解

    排序算法(Sorting algorithm)是計(jì)算機(jī)科學(xué)最古老、最基本的課題之一,要想成為合格的程序員,就必須理解和掌握各種排序算法。
    2015-09-09
  • javascript+css3 實(shí)現(xiàn)動(dòng)態(tài)按鈕菜單特效

    javascript+css3 實(shí)現(xiàn)動(dòng)態(tài)按鈕菜單特效

    這篇文章主要介紹了javascript+css3 實(shí)現(xiàn)動(dòng)態(tài)按鈕菜單特效的相關(guān)資料,需要的朋友可以參考下
    2016-02-02
  • JavaScript之Date_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    JavaScript之Date_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    在JavaScript中,Date對(duì)象用來(lái)表示日期和時(shí)間。下面給大家介紹js中的date,需要的朋友參考下吧
    2017-06-06
  • 詳解JavaScript對(duì)象的深淺復(fù)制

    詳解JavaScript對(duì)象的深淺復(fù)制

    從層次上來(lái)看,對(duì)象的復(fù)制可以簡(jiǎn)單地分為淺復(fù)制和深復(fù)制,顧名思義,淺復(fù)制是指只復(fù)制一層對(duì)象的屬性,不會(huì)復(fù)制對(duì)象中的對(duì)象的屬性,對(duì)象的深復(fù)制會(huì)復(fù)制對(duì)象中層層嵌套的對(duì)象的屬性。本文是我在復(fù)制對(duì)象方面的一些心得總結(jié),由淺復(fù)制到深復(fù)制,感興趣的朋友一起學(xué)習(xí)吧
    2017-03-03
  • 點(diǎn)擊A元素觸發(fā)B元素的事件在IE8下會(huì)識(shí)別成A元素

    點(diǎn)擊A元素觸發(fā)B元素的事件在IE8下會(huì)識(shí)別成A元素

    IE8自動(dòng)觸發(fā)的事件源會(huì)識(shí)別成手動(dòng)點(diǎn)擊的元素就是點(diǎn)擊A元素觸發(fā)B元素的事件在IE8下會(huì)識(shí)別成A元素,需要的朋友可以參考下
    2014-09-09
  • es6中l(wèi)et和const的使用方法詳解

    es6中l(wèi)et和const的使用方法詳解

    這篇文章主要介紹了es6中l(wèi)et和const的使用方法,結(jié)合實(shí)例形式詳細(xì)分析了es6中l(wèi)et和const的基本功能、原理、使用方法及操作注意事項(xiàng),需要的朋友可以參考下
    2020-02-02
  • JS中的作用域鏈

    JS中的作用域鏈

    本文主要介紹了JS中的作用域鏈的相關(guān)知識(shí)。具有很好的參考價(jià)值,下面跟著小編一起來(lái)看下吧
    2017-03-03

最新評(píng)論

台东县| 邵东县| 大方县| 保山市| 新乡县| 定兴县| 长武县| 孝义市| 龙游县| 沿河| 秦皇岛市| 宁乡县| 怀集县| 四川省| 巫山县| 巴青县| 宁海县| 合川市| 全州县| 郸城县| 漳浦县| 临汾市| 两当县| 通海县| 西乌| 名山县| 建始县| 阳山县| 天台县| 正定县| 六枝特区| 克什克腾旗| 缙云县| 建德市| 静安区| 江川县| 建宁县| 磴口县| 华坪县| 南京市| 绵竹市|