京東放大鏡

話不多說,直接先上效果圖

效果圖

放大鏡 (2).gif

文件結(jié)構(gòu)圖:

1569806498039.png

上代碼:

CSS

*{
    margin: 0;
    padding: 0;
}
.container{
    margin: 20px auto;
    width: 650px;
    /*height: 300px;*/
}
.container .smallBox{
    position: relative;
    float: left;
    width: 300px;
    height: 300px;
    overflow: hidden;
}
.container .smallBox img{
    display: block;
    width: 100%;
    height: 100%;
}
.mark{
    position: absolute;
    left: 0;
    top: 0;
    width: 100px;
    height: 100px;
    background: rgba(220, 20, 164,0.3);
    cursor: move;
}
.bigBox{
    position: relative;
    float: left;
    width: 350px;
    height: 350px;
    overflow: hidden;
}
.bigBox img{
    position: absolute;
    top: 0;
    left: 0;
    /*mark:small-box===big-box:大img*/
    width: 1050px;
    height: 1050px;

}

HTML

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<link rel="stylesheet" href="magnifier.css">
<body>
<!--section.magnifierBox>(div.smallBox>img[src='img/縮小.jpg']+div.mark)+(div.bigBox>img[src='img/放大.jpg'])-->
<section class="container clearfix">
    <div class="smallBox">
        <img src="img/小.jpg" alt="">
        <!--<div class="mark"></div>-->
    </div>
    <div class="bigBox"><img src="img/小.jpg" alt=""></div>
</section>
<script src="magnifier.js"></script>
</body>

JS

let smallBox=document.querySelector('.smallBox'),
    mark=null;
let bigBox=document.querySelector('.bigBox'),
    bigImg=bigBox.querySelector('img');
//=>鼠標(biāo)滑過:創(chuàng)建mark
smallBox.onmouseenter=function(){
    if(!mark){
        mark=document.createElement('div');
        mark.className='mark';
        this.appendChild(mark);
        bigBox.style.display='block';
    }
};
//=>鼠標(biāo)移動(dòng)實(shí)現(xiàn)mark跟隨鼠標(biāo)移動(dòng)
smallBox.onmousemove=function(ev){
    if(!mark) return;
    //計(jì)算鼠標(biāo)在盒子中間的left和top
    let curL=ev.pageX-smallBox.offsetLeft-mark.offsetWidth/2,
        curT=ev.pageY-smallBox.offsetTop-mark.offsetHeight/2;
    //計(jì)算的值不能超過邊界
    let minL=0,minT=0,
        maxL=smallBox.offsetWidth-mark.offsetWidth,
        maxT=smallBox.offsetHeight-mark.offsetHeight;
    curL=curL<minL?minL:(curL>maxL?maxL:curL);
    curT=curT<minT?minT:(curT>maxL?maxT:curT);
    //給markz賦值樣式,讓其移動(dòng)到指定位置
    mark.style.left=curL+'px';
    mark.style.top=curT+'px';

    bigImg.style.left=-curL*3.5+'px';
    bigImg.style.top=-curT*3.5+'px';
}
//=>鼠標(biāo)離開,移除mark
smallBox.onmouseleave=function(){
    if(mark){
        this.removeChild(mark);//從頁面中移除mark,但是此時(shí)mark變量依然存儲(chǔ)著之前的值(頁面移除是DOM操作,但是mark是js變量沒啥關(guān)系)
        mark=null;//=>手動(dòng)賦值為null,代表mark已經(jīng)不存在了
        bigBox.style.display='none';
    }

};
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末翩剪,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子姆涩,更是在濱河造成了極大的恐慌账忘,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,451評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件佑吝,死亡現(xiàn)場離奇詭異坐昙,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)芋忿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門炸客,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人戈钢,你說我怎么就攤上這事痹仙。” “怎么了殉了?”我有些...
    開封第一講書人閱讀 164,782評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵开仰,是天一觀的道長。 經(jīng)常有香客問我薪铜,道長众弓,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,709評(píng)論 1 294
  • 正文 為了忘掉前任隔箍,我火速辦了婚禮田轧,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘鞍恢。我一直安慰自己傻粘,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,733評(píng)論 6 392
  • 文/花漫 我一把揭開白布帮掉。 她就那樣靜靜地躺著弦悉,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蟆炊。 梳的紋絲不亂的頭發(fā)上稽莉,一...
    開封第一講書人閱讀 51,578評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音涩搓,去河邊找鬼污秆。 笑死劈猪,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的良拼。 我是一名探鬼主播战得,決...
    沈念sama閱讀 40,320評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼庸推!你這毒婦竟也來了常侦?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,241評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤贬媒,失蹤者是張志新(化名)和其女友劉穎聋亡,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體际乘,經(jīng)...
    沈念sama閱讀 45,686評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡坡倔,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,878評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了脖含。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片致讥。...
    茶點(diǎn)故事閱讀 39,992評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖器赞,靈堂內(nèi)的尸體忽然破棺而出垢袱,到底是詐尸還是另有隱情,我是刑警寧澤港柜,帶...
    沈念sama閱讀 35,715評(píng)論 5 346
  • 正文 年R本政府宣布请契,位于F島的核電站,受9級(jí)特大地震影響夏醉,放射性物質(zhì)發(fā)生泄漏爽锥。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,336評(píng)論 3 330
  • 文/蒙蒙 一畔柔、第九天 我趴在偏房一處隱蔽的房頂上張望氯夷。 院中可真熱鬧,春花似錦靶擦、人聲如沸腮考。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽踩蔚。三九已至,卻和暖如春枚粘,著一層夾襖步出監(jiān)牢的瞬間馅闽,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評(píng)論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留福也,地道東北人局骤。 一個(gè)月前我還...
    沈念sama閱讀 48,173評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像暴凑,于是被迫代替她去往敵國和親峦甩。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,947評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 寫在開頭 先說說為什么要寫這篇文章, 最初的原因是組里的小朋友們看了webpack文檔后, 表情都是這樣的: (摘...
    Lefter閱讀 5,289評(píng)論 4 31
  • ?前端面試題匯總 一搬设、HTML和CSS 21 你做的頁面在哪些流覽器測(cè)試過?這些瀏覽器的內(nèi)核分別是什么? ...
    Simon_s閱讀 2,220評(píng)論 0 8
  • 第一部分HTML&CSS整理答案1.什么是HTML5撕捍? 答:HTML5是最新的HTML標(biāo)準(zhǔn)拿穴。 注意:講述HTML5...
    Programmer客棧閱讀 2,013評(píng)論 0 12
  • 段落十七 原文:文子曰:慈父之愛子者,非求其報(bào)忧风,不可內(nèi)解于心默色;圣主之養(yǎng)民,非為己用也狮腿,性不能已也腿宰;及恃其力,賴其功...
    andy言道閱讀 686評(píng)論 2 5
  • 當(dāng)看到這一期的作業(yè)主題“描述你自己缘厢、或者你熟悉的一個(gè)人吃度,盡可能采用合適的流行語”這樣的要求時(shí),我是懵圈的贴硫,第一感覺...
    我是花小琪閱讀 306評(píng)論 0 2