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

JavaScript實現(xiàn)京東放大鏡效果

 更新時間:2019年12月03日 08:49:56   作者:空谷丶幽蘭  
這篇文章主要為大家詳細(xì)介紹了JavaScript實現(xiàn)京東放大鏡效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了JavaScript實現(xiàn)京東放大鏡展示的具體代碼,供大家參考,具體內(nèi)容如下

實現(xiàn)效果:

1.鼠標(biāo)放到圖片上顯示放大鏡和詳細(xì)圖,鼠標(biāo)離開時什么都不顯示(效果消失)
2.鼠標(biāo)一直在放大鏡的中間,且放大鏡隨鼠標(biāo)移動
3.放大鏡不能出縮列圖的盒子
4.鼠標(biāo)放在詳細(xì)圖上詳細(xì)圖消失

實現(xiàn)細(xì)節(jié):

 1.大盒子雖然比詳細(xì)圖的盒子寬度小,但是在邏輯上詳細(xì)圖的盒子屬于大盒子
 2.詳細(xì)圖不能使用浮動,因為盒子下面一般會有文字內(nèi)容
 3.以父盒子來定位詳細(xì)圖的盒子
 4.放大鏡鼠標(biāo)選中為十字形
 5.對圖片進(jìn)行定位才能使圖片移動
 6.使用var evt = event || window.event; //兼容性寫法
 7.用放大鏡頂點(diǎn)在盒子中的位置根據(jù)比例找到圖片的位置,來顯示圖片
 8.圖片在詳細(xì)圖中的定位為負(fù)值

代碼:

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>京東放大鏡</title>
 <style>
 .box{ /*大盒子雖然比詳細(xì)圖的盒子寬度小,但是在邏輯上詳細(xì)圖的盒子屬于大盒子*/
 width: 350px;
 height: 350px;
 position: relative;
 margin: 100px;
 border: 1px solid #aaa;
 }
 .box .detailed{ /*詳細(xì)圖不能使用浮動,因為盒子下面一般會有文字內(nèi)容*/
 width: 450px;
 height: 450px;
 border: 1px solid #aaa;
 position: absolute;
 overflow: hidden;
 left: 365px; /*以父盒子來定位*/ 
 top: 0;
 /*初始設(shè)置為不可見*/
 display: none;
 }
 .box .normal .magnfier{
 width: 150px;
 height: 150px;
 top: 0;
 left: 0;
 position: absolute;
 background-color: rgba(0, 0, 255, 0.2);/*也可以用opacity來設(shè)置透明度*/
 cursor: move; /*鼠標(biāo)選中為十字*/
 display: none; /*初始設(shè)為不可見*/
 }
 .detailed img{ /*對圖片進(jìn)行定位使圖片移動*/
 position: absolute;
 top: 0;
 left: 0;
 }
 </style>
 <script>
 function $(id){
 return document.getElementById(id);
 }
 window.onload = function(){
 var box = $('box');
 var normal = box.children[0];
 var margnfier = normal.children[1];//獲取放大鏡的Dom對象,document.getElementsByClassName來獲取。
 var detailed = box.children[1];//獲得縮略圖DOM對象也可以用document.getElementsByClassName('zoom')[0];
 var detailedImg = box.children[1].children[0];
 normal.onmouseover = function(){//不能給box注冊onmousever事件,否則快速移到詳細(xì)圖上是詳細(xì)圖也不會消失,
 margnfier.style.display = 'block';
 detailed.style.display = 'block';
 }
 normal.onmouseout = function(){
 margnfier.style.display = 'none';
 detailed.style.display = 'none';
 }
 var x = 0;
 var y = 0;
 //控制zoom放大鏡部分在normal里面的移動
 normal.onmousemove = function(event){
 var evt = event || window.event;
 //兼容性寫法
 x = evt.clientX - box.offsetLeft - margnfier.offsetWidth / 2;
 y = evt.clientY - box.offsetTop - margnfier.offsetHeight / 2; 
 //判斷鼠標(biāo)是不是溢出了normal的區(qū)域,
 if(x < 0){
 x = 0; 
 }else{
 if(x > box.offsetWidth - margnfier.offsetWidth){
 x = box.offsetWidth - margnfier.offsetWidth;
 }
 }
 if(y < 0){
 y = 0;
 }else{
 if(y > box.offsetHeight - margnfier.offsetHeight){
  y = box.offsetHeight - margnfier.offsetHeight;
 }
 }
 margnfier.style.left = x + 'px';
 margnfier.style.top = y + 'px';
 var detailedX = -x * 800 / this.offsetWidth;
 var detailedY = -y * 800 / this.offsetHeight;
 //用放大鏡頂點(diǎn)在盒子中的位置根據(jù)比例找到圖片的位置,來顯示圖片
 //改變圖片位置
 detailedImg.style.left = detailedX + 'px';
 detailedImg.style.top = detailedY + 'px';
 } 
 }
 </script>
</head>
<body>
 <div id="box" class="box"> <!--包含詳細(xì)圖和縮略圖的盒子-->
 <div class="normal">
 <img src="imgs/show.jpg" alt="">
 <div class="magnfier"></div>
 </div>
 <div class="detailed">
 <img src="imgs/detail.jpg" alt="">
 </div>
 </div>
</body>
</html>

更多關(guān)于放大鏡的效果,請查看專題:《放大鏡特效》

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

相關(guān)文章

  • 你不知道的JS?ES6字符串標(biāo)簽函數(shù)分享

    你不知道的JS?ES6字符串標(biāo)簽函數(shù)分享

    字符串標(biāo)簽函數(shù)是一種特殊的函數(shù)調(diào)用語法,本文將深入探討ES6中字符串標(biāo)簽函數(shù)的工作原理,并結(jié)合具體的代碼展示它的威力,快跟隨小編一起學(xué)習(xí)起來吧
    2023-06-06
  • js實現(xiàn)隨機(jī)點(diǎn)名程序

    js實現(xiàn)隨機(jī)點(diǎn)名程序

    這篇文章主要為大家詳細(xì)介紹了js實現(xiàn)隨機(jī)點(diǎn)名程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • JS動態(tài)添加的div點(diǎn)擊跳轉(zhuǎn)到另一頁面實現(xiàn)代碼

    JS動態(tài)添加的div點(diǎn)擊跳轉(zhuǎn)到另一頁面實現(xiàn)代碼

    這篇文章主要介紹了JS動態(tài)添加的div點(diǎn)擊跳轉(zhuǎn)到另一頁面實現(xiàn)代碼,需要的朋友可以參考下
    2017-09-09
  • js圖片無縫滾動插件使用詳解

    js圖片無縫滾動插件使用詳解

    這篇文章主要為大家詳細(xì)介紹了js圖片無縫滾動插件的使用方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • JS實現(xiàn)點(diǎn)擊發(fā)送驗證碼 xx秒后重新發(fā)送功能

    JS實現(xiàn)點(diǎn)擊發(fā)送驗證碼 xx秒后重新發(fā)送功能

    在一些注冊類的網(wǎng)站,經(jīng)常遇到這樣的需求,點(diǎn)擊發(fā)送驗證碼,xx秒后重新發(fā)送,這樣的功能怎么實現(xiàn)呢,接下來通過本文給大家分享js點(diǎn)擊發(fā)送驗證碼 xx秒后重新發(fā)送功能,需要的朋友參考下吧
    2019-07-07
  • JS實現(xiàn)模糊查詢帶下拉匹配效果

    JS實現(xiàn)模糊查詢帶下拉匹配效果

    這篇文章主要介紹了JS實現(xiàn)模糊查詢帶下拉匹配效果,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-06-06
  • JS得到當(dāng)前時間的方法示例

    JS得到當(dāng)前時間的方法示例

    這篇文章主要介紹了JS得到當(dāng)前時間的方法,結(jié)合具體實例形式對比分析了javascript獲取日期時間的相關(guān)操作技巧,需要的朋友可以參考下
    2017-03-03
  • js 調(diào)用父窗口的具體實現(xiàn)代碼

    js 調(diào)用父窗口的具體實現(xiàn)代碼

    想要實現(xiàn)如題所示:父窗體需要頂一個show()方法,具體實現(xiàn)代碼如下,感興趣的朋友可以參考下哈,希望對大家有所幫助
    2013-07-07
  • JavaScript運(yùn)算符小結(jié)

    JavaScript運(yùn)算符小結(jié)

    本文主要給大家詳細(xì)總結(jié)了下javascript中的運(yùn)算符,包括常見的算數(shù)運(yùn)算符、比較運(yùn)算符和邏輯運(yùn)算符。十分的清晰,有需要的小伙伴可以參考下。
    2015-06-06
  • javaScript call 函數(shù)的用法說明

    javaScript call 函數(shù)的用法說明

    javaScript 中的 call() 是一個奇妙的方法,但也是一個讓人迷惑的方法,先看一下官方的解釋。
    2010-04-04

最新評論

定州市| 全州县| 康马县| 柳河县| 叶城县| 陆丰市| 米林县| 读书| 赣榆县| 甘孜县| 军事| 建宁县| 玛纳斯县| 天峨县| 成安县| 资阳市| 长治县| 迁西县| 运城市| 东城区| 铜川市| 临猗县| 通江县| 巴东县| 华容县| 建平县| 奉贤区| 兰坪| 策勒县| 南华县| 光泽县| 桃源县| 乐都县| 正镶白旗| 通州市| 大荔县| 普兰店市| 龙川县| 邵阳县| 娱乐| 旅游|