• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
    問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
    當前位置: 首頁 - 科技 - 知識百科 - 正文

    原生js實現(xiàn)淘寶放大鏡效果

    來源:懂視網(wǎng) 責編:小采 時間:2020-11-27 22:04:28
    文檔

    原生js實現(xiàn)淘寶放大鏡效果

    原生js實現(xiàn)淘寶放大鏡效果:大家經(jīng)常逛淘寶、天貓、京東這類網(wǎng)站的時候往往會看到一些圖片展示的效果,例如:把鼠標放在圖片上右側(cè)會出現(xiàn)一個放大的預覽區(qū)域,這就是所謂放大鏡效果。今天閑著沒事干,就打算復習一下JavaScript基礎(chǔ),用一下基礎(chǔ)知識制作一個類似于淘寶的放大鏡效果。 先
    推薦度:
    導讀原生js實現(xiàn)淘寶放大鏡效果:大家經(jīng)常逛淘寶、天貓、京東這類網(wǎng)站的時候往往會看到一些圖片展示的效果,例如:把鼠標放在圖片上右側(cè)會出現(xiàn)一個放大的預覽區(qū)域,這就是所謂放大鏡效果。今天閑著沒事干,就打算復習一下JavaScript基礎(chǔ),用一下基礎(chǔ)知識制作一個類似于淘寶的放大鏡效果。 先

    大家經(jīng)常逛淘寶、天貓、京東這類網(wǎng)站的時候往往會看到一些圖片展示的效果,例如:把鼠標放在圖片上右側(cè)會出現(xiàn)一個放大的預覽區(qū)域,這就是所謂放大鏡效果。今天閑著沒事干,就打算復習一下JavaScript基礎(chǔ),用一下基礎(chǔ)知識制作一個類似于淘寶的放大鏡效果。

    先說一下這個效果需要用到的一些基礎(chǔ)知識:

    css相對定位:position:absolute;

    鼠標移入移出以及移動事件:onmouseover、onmouseout、onmousemove,記住這些事件一般不會單個出現(xiàn)

    獲取鼠標點擊坐標:X軸:clientX,Y軸:clientY

    當前元素相對于父元素的左位移:offsetLeft

    當前元素相對于父元素的上位移:offsetTop

    當前元素的實際高、寬度(不包括滾動條):offsetWidth、offsetHeight

    球當前元素的最小值,最大值:Math.min()、Math.max();

    話不多說直接上代碼吧!

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>放大鏡效果</title>
    <style type="text/css">
    *{
    padding: 0;
    margin: 0;
    }
    #demo{
    display: block;
    width: 400px;
    height: 255px;
    margin: 50px;
    position: relative;
    border: 1px solid #ccc;
    }
    #float-box{
    position: relative;
    z-index: 1;
    }
    #small-box{
    display: none;
    width: 160px;
    height: 120px;
    position: absolute;
    background: #ffffcc;
    border: 1px solid #ccc;
    filter: alpha(opacity=50);
    opacity: 0.5;
    cursor: move;
    }
    #big-box{
    display: none;
    position: absolute;
    top: 0;
    left: 460px;
    width: 400px;
    height: 300px;
    overflow: hidden;
    border: 1px solid #ccc;
    z-index: 1;
     
     
    }
    #big-box img{
    position: absolute;
    z-index: 5;
    }
     
     
    </style>
    </head>
    <body>
    <div id="demo">
    <div id="float-box">
    <div id="small-box"></div>
    <img src="../images/macbook-small.jpg">
    </div>
    <div id="big-box">
    <img src="../images/macbook-big.jpg">
    </div>
    </div>
    <script type="text/javascript">
    window.onload = function(){
     
    //獲取到需要的元素
    var demo = document.getElementById('demo');
    var smallBbox = document.getElementById('small-box');
    var floatBox = document.getElementById('float-box');
    var bigBox = document.getElementById('big-box');
    var bigBoxImg = bigBox.getElementsByTagName('img')[0];
     
     
    floatBox.onmouseover = function(){
    smallBbox.style.display = "block";
    bigBox.style.display = "block";
    }
    floatBox.onmouseout = function(){
    smallBbox.style.display = "none";
    bigBox.style.display = "none";
    }
    floatBox.onmousemove = function(e){
    var _event = e || event;
    console.log(_event.clientY);
    var l = _event.clientX - demo.offsetLeft - floatBox.offsetLeft - smallBbox.offsetWidth/2;//除2是因為讓鼠標點出現(xiàn)在放大遮罩的中心位置
    var t = _event.clientY - demo.offsetTop - floatBox.offsetTop - smallBbox.offsetHeight/2;
     
    var demoWidth = demo.offsetWidth;
    var demoHeight = demo.offsetHeight;
     
     
    var smallBboxWidth = smallBbox.offsetWidth;
    var smallBboxHeight = smallBbox.offsetHeight;
    //鼠標可以移動的最大XY的距離
    var maxX = demoWidth - smallBboxWidth;
    var maxY = demoHeight - smallBboxHeight;
     
     
    l = Math.min(maxX,Math.max(0,l));
    t = Math.min(maxY,Math.max(0,t));
    smallBbox.style.left = l +"px";
    smallBbox.style.top = t +"px";
     
     
    var percentX = l / (floatBox.offsetWidth - smallBboxWidth);//求出小圖遮罩的坐標占可移動區(qū)域的比例
    var percentY = t / (floatBox.offsetHeight - smallBboxHeight);
     
     
    bigBoxImg.style.left = -percentX *(bigBoxImg.offsetWidth - bigBox.offsetWidth) +"px";//大圖對的移動方向和小圖遮罩的移動方向相反
    bigBoxImg.style.top = -percentY*(bigBoxImg.offsetHeight - bigBox.offsetHeight)+"px";
     
    }
    }
    </script>
    </body>
    </html>

    聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    原生js實現(xiàn)淘寶放大鏡效果

    原生js實現(xiàn)淘寶放大鏡效果:大家經(jīng)常逛淘寶、天貓、京東這類網(wǎng)站的時候往往會看到一些圖片展示的效果,例如:把鼠標放在圖片上右側(cè)會出現(xiàn)一個放大的預覽區(qū)域,這就是所謂放大鏡效果。今天閑著沒事干,就打算復習一下JavaScript基礎(chǔ),用一下基礎(chǔ)知識制作一個類似于淘寶的放大鏡效果。 先
    推薦度:
    • 熱門焦點

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 精品亚洲一区二区| 精品国产青草久久久久福利| 亚洲精品免费在线观看| 日韩精品无码Av一区二区| 欧美精品第一页| 久久99精品国产麻豆| 亚洲国产av无码精品| 国内精品久久久久久麻豆 | 四虎国产精品永久在线| 国产在AJ精品| 99精品久久久久久久婷婷| 国产精品亚洲专区在线观看 | 久久精品亚洲男人的天堂| 亚洲国产一成久久精品国产成人综合 | 国产精品va久久久久久久 | 999精品视频这里只有精品| 日产精品99久久久久久| 亚洲国产成人精品无码久久久久久综合 | 国产在线精品一区二区在线观看| 在线中文字幕精品第5页| 久久久无码精品亚洲日韩软件| 国产精品免费大片一区二区| 91久久精品无码一区二区毛片| 日韩精品一区二区三区大桥未久 | 亚洲精品二三区| 国产亚洲精品免费视频播放| 国产精品内射视频免费| 国产精品日韩欧美久久综合 | 伊在人亚洲香蕉精品区麻豆| 亚洲精品黄色视频在线观看免费资源 | 欧美精品免费在线| 国产亚洲精品国产| 国产日韩欧美精品| 九九精品免视看国产成人| 国产精品久久久久9999高清| 91精品国产综合久久久久久| 99精品视频在线观看| 97久久综合精品久久久综合| 久久精品国产亚洲麻豆| 国产成人精品久久亚洲高清不卡 | 国产精品H片在线播放|