放大鏡功能

来源:http://www.cnblogs.com/zhousen34/archive/2017/09/08/7492860.html
-Advertisement-
Play Games

<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8"> <title></title> <style> * { margin: 0; padding: 0; } .box { width: 350px; height: 350px; ...


<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }

        .box {
            width: 350px;
            height: 350px;
            margin: 100px;
            border: 1px solid #ccc;
            position: relative;
        }

        .big {
            width: 400px;
            height: 400px;
            position: absolute;
            top: 0;
            left: 360px;
            border: 1px solid #ccc;
            overflow: hidden;
            display: none;
        }

        .mask {
            width: 175px;
            height: 175px;
            background: rgba(255, 255, 0, 0.4);
            position: absolute;
            top: 0;
            left: 0;
            cursor: move;
            display: none;
        }

        .small {
            position: relative;
        }

        .box img {
            vertical-align: top;
        }

        #bigBox img {
            position: absolute;
        }
    </style>
</head>
<body>
<div class="box" id="box">
    <!--我們一來就看到的盒子-->
    <div id="smallBox" class="small">
        <!--smallbox裡面的一張小圖片-->
        <img src="images/001.jpg" width="350" alt=""/>
        <!--mask: 黃色的div,一開始是隱藏的-->
        <div id="mask" class="mask"></div>
    </div>

    <!--smallBox旁邊的大盒子,一開始隱藏的-->
    <div id="bigBox" class="big">
        <!--大圖片,會在大盒子裡面移動。我們只能看到圖片的一部分。-->
        <img src="images/0001.jpg" width="800" alt=""/>
    </div>
</div>

<script>

  var box = document.getElementById("box");
  var smallBox = document.getElementById("smallBox");
  var mask = document.getElementById("mask");
  var bigBox = document.getElementById("bigBox");
  var bigImg = bigBox.children[0];

  //1. 給smallBox註冊滑鼠經過事件, 讓mask和bigBox顯示出來
  smallBox.onmouseover = function () {
    mask.style.display = "block";
    bigBox.style.display = "block";
  }

  smallBox.onmouseout = function () {
    mask.style.display = "none";
    bigBox.style.display = "none";
  }


  //產品經理
  smallBox.onmousemove = function (e) {
    //讓mask跟著滑鼠移動, 滑鼠在smallBox中的位置

    //spaceX:滑鼠在smallbox中的x的位置. offsetLeft獲取的是 盒子距離有定位的父元素的距離
    var spaceX = e.pageX - box.offsetLeft;
    var spaceY = e.pageY - box.offsetTop;
    var x = spaceX - mask.offsetWidth/2;
    var y = spaceY- mask.offsetHeight/2;
    //x的最小值:0    最大值: smallBox.offsetWidth - mask.offsetWidth
    if(x <= 0){
      x = 0;
    }
    if(x >= smallBox.offsetWidth - mask.offsetWidth){
      x = smallBox.offsetWidth - mask.offsetWidth;
    }
    if(y <= 0){
      y = 0;
    }
    if(y >= smallBox.offsetHeight - mask.offsetHeight){
      y = smallBox.offsetHeight - mask.offsetHeight;
    }
    //設置x和y必須在判斷後面
    mask.style.left = x + "px";
    mask.style.top = y + "px";

 

 

    //移動大圖片
    // 假設吃饅頭的速度是勻速的
    // 助教 10分鐘 能夠吃100個饅頭
    // 班主任10分鐘 能吃300個饅頭
    // 助教 吃完了50個饅頭了
    // 問:班主任吃完了 多少個饅頭
    // 助教當前吃的饅頭數/助教能吃的總饅頭數 = 班主任當前吃的饅頭數/班主任能吃的總饅頭數
    // mask當前移動的距離/smallBox的寬度 = 大圖片移動的距離/大圖片的寬度
    bigImg.style.left = - x/smallBox.offsetWidth * bigImg.offsetWidth + "px";
    bigImg.style.top = - y/smallBox.offsetHeight * bigImg.offsetHeight + "px";
  }

</script>

</body>
</html>


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1.DOM內部插入append()與appendTo() 動態創建的元素是不夠的,它只是臨時存放在記憶體中,最終我們需要放到頁面文檔並呈現出來。那麼問題來了,怎麼放到文檔上? 這裡就涉及到一個位置關係,常見的就是把這個新創建的元素,當作頁面某一個元素的子元素放到其內部。針對這樣的處理,jQuery就定 ...
  • 近日壓力山大,找找樂子,看有沒有好的東西可以研究研究,剛好看到我的螞蟻森林居然可以種樹了,很好奇,難道馬雲真會種樹? 二話不說,利用本人專業所學(遙感專業,有木有同行??),來監測監測那些樹木長得如何了?是不是真有,二話不說,直接上圖!! 註意,這裡是螞蟻森林種植的大概範圍,我從高德地圖查詢到的,內 ...
  • [1]坐標定位 [2]四個坐標系 [3]圖形變換 [4]居中變換 ...
  • 說到原生瀏覽器事件函數處理相容,大家可能會想到addEventListener().....以及attachEvent()....相信看了下文,會給你提供不一樣的更優雅的實現方式,希望下文會對你有幫助~~~~~ 總結:以上方法也是jquery源碼中Event模塊中add的方法的借鑒來源,資料來源於此 ...
  • 創建畫布,驗證瀏覽器相容性我就省去了,也很簡單網上有代碼。 然就是蛇對象 食物 移動 控制方向 吃到食物 吃到自己 基本功能大概就是這樣。可能還不算完美,後面有時間繼續優化一下! ...
  • 撰文為何 身為一個前端開發者,ECMAScript(以下簡稱ES)早已廣泛應用在我們的工作當中。瞭解ECMA機構流程的人應該知道,標準委員會會在每年的6月份正式發佈一次規範的修訂,而這次的發佈也將作為當年的正式版本。以後的改動,都會基於上一版本進行修改。所以,我們這次就基於ES6的版本對ES7、ES ...
  • 前幾天看到一張圖片,倔強的嚮日葵。(BGM,《倔強》) 看著挺有感觸,就想用CSS做一個嚮日葵。 最終效果圖如下: 演示地址: http://suohb.com/work/sunflower.html 主要的難點就在花瓣的處理上,css暫時沒有做到這樣的尖角圓弧。 我想到的做法是用兩個橢圓的部分弧度 ...
  • <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <style> #pbox{ width: 100%; height:100%; } #box{ width: 200px; heigh ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...