• <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
    當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

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

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

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

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

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

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

    css相對定位:position:absolute;

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

    獲取鼠標(biāo)點擊坐標(biāo):X軸:clientX,Y軸:clientY

    當(dāng)前元素相對于父元素的左位移:offsetLeft

    當(dāng)前元素相對于父元素的上位移:offsetTop

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

    球當(dāng)前元素的最小值,最大值: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是因為讓鼠標(biāo)點出現(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;
    //鼠標(biāo)可以移動的最大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);//求出小圖遮罩的坐標(biāo)占可移動區(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)站的時候往往會看到一些圖片展示的效果,例如:把鼠標(biāo)放在圖片上右側(cè)會出現(xiàn)一個放大的預(yù)覽區(qū)域,這就是所謂放大鏡效果。今天閑著沒事干,就打算復(fù)習(xí)一下JavaScript基礎(chǔ),用一下基礎(chǔ)知識制作一個類似于淘寶的放大鏡效果。 先
    推薦度:
    • 熱門焦點

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 精品综合久久久久久97超人| 国产精品VIDEOSSEX久久发布| 精品国产美女福利到在线不卡| 亚洲午夜精品第一区二区8050| 亚洲精品在线观看视频| 精品偷自拍另类在线观看| 欧美日韩国产精品 | 亚洲av永久无码精品古装片 | 男女男精品网站免费观看| 久久国产精品国产自线拍免费| 中文精品99久久国产| 亚洲欧美日韩精品| 国产精品欧美一区二区三区不卡| 久久精品天天中文字幕人妻| 亚洲日韩精品射精日| 无码国产亚洲日韩国精品视频一区二区三区 | 999久久久免费国产精品播放| HEYZO无码综合国产精品227| 无码精品人妻一区二区三区中| 在线亚洲精品自拍| 久久久久久国产精品免费免费| 亚洲国产综合91精品麻豆| 精品亚洲aⅴ在线观看| 国产精品成人观看视频免费| 精品无码人妻夜人多侵犯18| 中文字幕亚洲精品无码| 无码人妻一区二区三区精品视频| 精品第一国产综合精品蜜芽| 国产精品理论片在线观看| 97久久精品人人做人人爽| 亚洲国产精品久久久久婷婷老年| 精品国产福利第一区二区三区| 99香蕉国产精品偷在线观看| 国产精品亲子乱子伦xxxx裸| 久久99精品久久久久久久不卡| 久久亚洲精品中文字幕| 欧美精品hdvideosex4k| 欧洲成人午夜精品无码区久久| 亚洲国产精品无码久久| 久久国产乱子伦免费精品| 国产精品高清一区二区三区|