js實現(xiàn)淘寶恤溶、京東商品展示放大鏡效果

放大鏡效果.png

實現(xiàn)思路:主要分為三大塊,展示圖片帜羊、蒙版咒程、放大的圖片,鼠標進入時候圖片時候顯示蒙版和放大的圖片區(qū)域
1讼育、首先限制蒙版的 left 帐姻、top
2稠集、在右邊放大的框下面超出隱藏一張大圖片,蒙版移動時候大圖片按照(move移動的距離/move能夠移動的最大距離 = 大圖片移動的距離/大圖片能夠移動的距離)的比例進行移動饥瓷,不過注意此時大圖片是相對反方向移動的剥纷,所以在大圖片移動時候切記加上負號

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>放大鏡</title>
    <style>

        #small{
            width: 300px;
            height: 300px;
            float: left;
            margin: 50px;
            position: relative;
            cursor: move;
        }
          #move{
              width: 100px;
              height: 100px;
              background: rgba(255,255,0,.5);
              position: absolute;
              left: 0;
              top: 0;
              display: none;
          }

        #small_img{
            width: 300px;
            height: 300px;
        }

        #big{
            float: left;
            width: 400px;
            height: 400px;
            overflow: hidden;
            display: none;
            position: relative;
        }
        #big_img{
            width: 1000px;
            height: 1000px;
            position: absolute;
            left: 0;
            top: 0;
        }

    </style>
</head>
<body>
<div id="box">
    <div id="small">
        <img id="small_img" src="./img/2.jpg" alt="">
        <div id="move"></div>
    </div>

    <div id="big">
        <img id="big_img" src="./img/2.jpg" alt="">
    </div>

    <script>
        var oSmall = document.getElementById("small");
        var oMove = document.getElementById("move");
        var oBig = document.getElementById("big");
        var oBig_img = document.getElementById("big_img");

        oSmall.onmouseenter = function () {
            oMove.style.display = "block";
            oBig.style.display = "block";

            var pointMove = {
                left:0,
                top:0
            }

            oSmall.onmousemove = function(ev){
                var ev = ev ||window.event;
                //當鼠標移入開始移動的時候 計算move 的定位信息
                //移動的值是  鼠標的距離-samll距離瀏覽器邊緣的距離 - move自身一半的距離
                pointMove.left = ev.clientX - oSmall.offsetLeft - oMove.offsetWidth/2;
                pointMove.top = ev.clientY - oSmall.offsetTop - oMove.offsetHeight/2;

                // 判斷臨界值
                if(pointMove.left <= 0){
                    pointMove.left =0;
                }else if(pointMove.left >= oSmall.clientWidth - oMove.offsetWidth){
                    pointMove.left = oSmall.clientWidth - oMove.offsetWidth;
                }
                if(pointMove.top <= 0){
                    pointMove.top =0;
                }else if(pointMove.top >= oSmall.clientHeight - oMove.offsetHeight){
                    pointMove.top = oSmall.clientHeight - oMove.offsetHeight;
                }

                //對move塊進行賦值操作
                oMove.style.left = pointMove.left +"px";
                oMove.style.top = pointMove.top +"px";

                // 比例計算:
                // move移動的距離/move能夠移動的最大距離 = 大圖片移動的距離/大圖片能夠移動的距離
                var scaleX = pointMove.left / (oSmall.clientWidth - oMove.offsetWidth);
                var scaleY = pointMove.top / (oSmall.clientHeight - oMove.offsetHeight);

                // 計算大圖應該向移動的距離
                oBig_img.style.left =  - scaleX * (oBig_img.offsetWidth - oBig.clientWidth) + "px";
                oBig_img.style.top =  - scaleY * (oBig_img.offsetHeight - oBig.clientHeight) + "px";

            }
        }
        oSmall.onmouseleave = function () {
            oMove.style.display = "none";
            oBig.style.display = "none";

        }
        
    </script>
</div>
</body>
</html>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市呢铆,隨后出現(xiàn)的幾起案子筷畦,更是在濱河造成了極大的恐慌,老刑警劉巖刺洒,帶你破解...
    沈念sama閱讀 211,948評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鳖宾,死亡現(xiàn)場離奇詭異,居然都是意外死亡逆航,警方通過查閱死者的電腦和手機鼎文,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,371評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來因俐,“玉大人拇惋,你說我怎么就攤上這事∧ㄊ#” “怎么了撑帖?”我有些...
    開封第一講書人閱讀 157,490評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長澳眷。 經(jīng)常有香客問我胡嘿,道長,這世上最難降的妖魔是什么钳踊? 我笑而不...
    開封第一講書人閱讀 56,521評論 1 284
  • 正文 為了忘掉前任衷敌,我火速辦了婚禮,結(jié)果婚禮上拓瞪,老公的妹妹穿的比我還像新娘缴罗。我一直安慰自己,他們只是感情好祭埂,可當我...
    茶點故事閱讀 65,627評論 6 386
  • 文/花漫 我一把揭開白布面氓。 她就那樣靜靜地躺著,像睡著了一般蛆橡。 火紅的嫁衣襯著肌膚如雪舌界。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,842評論 1 290
  • 那天航罗,我揣著相機與錄音禀横,去河邊找鬼。 笑死粥血,一個胖子當著我的面吹牛柏锄,可吹牛的內(nèi)容都是我干的酿箭。 我是一名探鬼主播,決...
    沈念sama閱讀 38,997評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼趾娃,長吁一口氣:“原來是場噩夢啊……” “哼缭嫡!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起抬闷,我...
    開封第一講書人閱讀 37,741評論 0 268
  • 序言:老撾萬榮一對情侶失蹤妇蛀,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后笤成,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體评架,經(jīng)...
    沈念sama閱讀 44,203評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,534評論 2 327
  • 正文 我和宋清朗相戀三年炕泳,在試婚紗的時候發(fā)現(xiàn)自己被綠了纵诞。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,673評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡培遵,死狀恐怖浙芙,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情籽腕,我是刑警寧澤嗡呼,帶...
    沈念sama閱讀 34,339評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站皇耗,受9級特大地震影響南窗,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜廊宪,卻給世界環(huán)境...
    茶點故事閱讀 39,955評論 3 313
  • 文/蒙蒙 一矾瘾、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧箭启,春花似錦、人聲如沸蛉迹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,770評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽北救。三九已至荐操,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間珍策,已是汗流浹背托启。 一陣腳步聲響...
    開封第一講書人閱讀 32,000評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留攘宙,地道東北人屯耸。 一個月前我還...
    沈念sama閱讀 46,394評論 2 360
  • 正文 我出身青樓拐迁,卻偏偏與公主長得像,于是被迫代替她去往敵國和親疗绣。 傳聞我的和親對象是個殘疾皇子线召,可洞房花燭夜當晚...
    茶點故事閱讀 43,562評論 2 349

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