js放大鏡特效

来源:https://www.cnblogs.com/sqbm1769294925/archive/2019/09/25/11587250.html
-Advertisement-
Play Games

在平時網上商城購物時,我們能夠通過放大鏡效果來使我們看圖片能夠更加的清楚,今天我就來給大家分享一下我學習的放大鏡特效 下圖是原圖的樣子 下圖是滑鼠放上去的效果 接下來我們就看一看放大鏡效果是如何實現的 1.首先我們還是先把div佈局寫出來 2.其次是css部分 3.最後是js部分代碼 ...


  在平時網上商城購物時,我們能夠通過放大鏡效果來使我們看圖片能夠更加的清楚,今天我就來給大家分享一下我學習的放大鏡特效

  下圖是原圖的樣子                                                              下圖是滑鼠放上去的效果

                  

 

 

  接下來我們就看一看放大鏡效果是如何實現的

  1.首先我們還是先把div佈局寫出來

<div class="bfdj">
    <div id="box">
        <div id="bug1">
            <img src="../img/b2.jpg" alt="" id="bug">
            <div id="ball"></div>
            <div id="mask"></div>
        </div>

        <div id="bug2">
            <img src="../img/b2.jpg" id="pic">
        </div>
    </div>
    <!--小圖片五張-->
    <div id="bimg">
        <div id="imgs">
            <img src="../img/b2.jpg" alt="" id="img1">
            <img src="../img/bbbb.jpg" alt="" id="img2">
            <img src="../img/bbbb1.jpg" alt="" id="img3">
            <img src="../img/bbbb2.jpg" alt="" id="img4">
            <img src="../img/bbbb3.jpg" alt="" id="img5">
        </div>
    </div>
</div>
<script src="../js/bf.js"></script>

  2.其次是css部分

/*放大鏡*/
*{
margin: 0;
padding: 0;
}
.bfdj{
width: 100%;
height: 570px;
/**/
}
#box{
width: 375px;
height: 350px;
position: relative;
margin-left: 300px;
top:100px;
/*right: ;*/
/**/
}
#bug1{
width: 376px;
height: 350px;
border: 1px solid gainsboro;
position: relative;
display: inline-block;
/*margin-left: 200px;*/
/**/
}
/*.box-right{*/
/*position: absolute;*/
/*float: right;*/
/**/
/*margin-left: 680px;*/
/*margin-top: -250px;*/
/*width: 600px;*/
/*height: 425px;*/
/*font-size: 16px;*/
/*font-family: 微軟雅黑;*/
/*border: 1px solid lightgrey;*/
/*background-image: url("../img/bhh.jpg");*/
/*}*/
#bug1 img{
width: 100%;
height: 100%;
display: block;
}
#ball{
width: 150px;
height: 150px;
position: absolute;
top:0;
left: 0;
background-color: navajowhite;
opacity: 0.3;
/*display: none;*/
}
#mask{
width:100%;
height: 100%;
position: absolute;
top:0;
left: 0;
z-index: 5;
cursor: pointer;
}
#bimg{
position: relative;
margin-left: 300px;
margin-top: 100px;
}
#imgs img{
width: 70px;
height: 70px;
float: left;
border: 2px solid transparent;
margin-left: 2px;
margin-top: 2px;
position: relative;
/*margin-left: 400px;*/

}
#imgs img:first-child{
margin-left: 0;
}
#imgs img:hover{
border: 2px solid gray;
}

#bug2{
/**/
width: 376px;
height: 350px;
position: relative;
top:-355px;
left: 1px;
overflow: hidden;
display: none;
z-index: 4;
}
#bug2 img{
width: 400%;
height: 400%;
display: block;
border: none;
position: absolute;
z-index: 2;
}

  3.最後是js部分代碼

        //放大鏡
        var bug = document.getElementById("bug");
        var img1= document.getElementById("img1")
        var img2= document.getElementById("img2")
        var img3= document.getElementById("img3")
        var img4= document.getElementById("img4")
        var img5= document.getElementById("img5")

        img1.addEventListener("mousemove",function () {
            bug.src="../img/b2.jpg"
        })
        img2.addEventListener("mousemove",function () {
            bug.src="../img/bbbb.jpg"
        })
        img3.addEventListener("mousemove",function () {
            bug.src="../img/bbbb1.jpg"
        })
        img4.addEventListener("mousemove",function () {
            bug.src="../img/bbbb2.jpg"
        })
        img5.addEventListener("mousemove",function () {
            bug.src="../img/bbbb3.jpg"
        })

        var bug1 = document.getElementById("bug1");
        var ball = document.getElementById("ball");
        var bug2= document.getElementById("bug2");
        var rightImg = document.getElementById("pic");

        img1.addEventListener("mousemove",function () {
            rightImg.src="../img/b2.jpg"
        })
        img2.addEventListener("mousemove",function () {
            rightImg.src="../img/bbbb.jpg"
        })
        img3.addEventListener("mousemove",function () {
            rightImg.src="../img/bbbb1.jpg"
        })
        img4.addEventListener("mousemove",function () {
            rightImg.src="../img/bbbb2.jpg"
        })
        img5.addEventListener("mousemove",function () {
            rightImg.src="../img/bbbb3.jpg"
        })
        bug1.onmousemove =function (event) {
                var e = event || window.event; //獲取滑鼠對象
                ball.style.display="block";
                bug2.style.display="block";
                //滑鼠居中
                var x = (e.offsetX || e.layerX) - ball.offsetWidth/2//offsetWidth獲取 ball的寬度
                var y = (e.offsetY || e.layerY) - ball.offsetHeight/2
                if(x<=0){
                    x=0;
                }else if(x>box.clientWidth-ball.offsetWidth){
                    x=box.clientWidth-ball.offsetWidth
                }
                if(y<=0){
                    y=0;
                }else if(y>box.clientHeight-ball.offsetHeight){
                    y=box.clientHeight-ball.offsetHeight
                }
                ball.style.left=x+"px";
                ball.style.top=y+"px";
        //四倍大小
                rightImg.style.left= x*-4 +"px"
                rightImg.style.top= y*-4 +"px";


                this.onmouseout =function () {
                    ball.style.display="none";
                    bug2.style.display="none";
                }
            }

 


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

-Advertisement-
Play Games
更多相關文章
  • // Method Swizzling 的最佳實踐 // 下麵我們就以替換 viewWillAppear 方法為例談談 Method Swizzling 的最佳實踐,話不多說,直接上代碼: 下麵我們就一起來分析下這三個為什麼到底是為了什麼? 第 1 個為什麼:看過我前面文章《Objective-C ...
  • 推薦Android入門書籍:第一行代碼(郭霖) google官方文檔地址:https://developer.android.google.cn/guide/components/activities CoordinatingActivities Activity ================= ...
  • super performSelector: 解決調用父類私有方法的問題 ...
  • 先來說微信小程式原生的請求介面方式吧,如官網文檔,在頁面中請求直接調用 在這裡感謝接的是提供的免費介面https://blog.csdn.net/c__chao/article/details/78573737 好了,不如正題說一下Flyio,依葫蘆畫瓢寫了一下 1.首先安裝flyio 2.引入fl ...
  • 前言 經常會在一些網站或博客看到“深克隆”,“淺克隆”這兩個名詞,其實這個很好理解,今天我們就在這裡分析一下 。 淺拷貝 我們先以一個例子來說明js淺拷貝: 上面顯然 的值會變為 12,這就是js淺拷貝。 淺拷貝只是拷貝的指向對象的指針,本質上還是指向同一個對象。 深拷貝 同樣我們還是以一個例子來說 ...
  • 一、 在預設佈局的垂直方向上,預設情況下外邊距是是不會疊加的,會出現合併現象,誰的外邊距較大,就聽誰的;但是在水平方向就不會出現這種狀況,我們舉個例子 二、盒子模型 1.什麼是盒子模型 答:CSS盒子模型僅僅一個比較形象地比喻,HTML中所有的標簽都是盒子,我們現實生活中的物品大多都是有位置區域劃分 ...
  • 本文轉自https://www.cnblogs.com/songdongdong/p/6340373.html 在jQuery中,attr()函數和prop()函數都用於設置或獲取指定的屬性,它們的參數和用法也幾乎完全相同。 但不得不說的是,這兩個函數的用處卻並不相同。下麵我們來詳細介紹這兩個函數之 ...
  • 廢話不多說,之前寫小程式碰到了一個問題,如何在 wxml 頁面中截取數據? 1、wxs 取數據想必大家都會,不就是 substring 嗎?但是這種方法在 wxml 頁面中是無效的。 那還有 css 啊,不一樣可以做到嗎?但是個人覺得 css 復用性太差,暫不考慮。 實在不行就用 js 唄,在獲取到 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...