前端放大鏡的實現效果

来源:http://www.cnblogs.com/cxy520/archive/2017/11/06/7794384.html
-Advertisement-
Play Games

這是一個將滑鼠移入圖片,顯示圖片該區域的放大效果。 該效果中,使用透明遮罩的span標簽觸發滑鼠的移入移出以及ommousemove事件並且將圖片放大。 利用百分比實現放大效果。 ...


這是一個將滑鼠移入圖片,顯示圖片該區域的放大效果。

該效果中,使用透明遮罩的span標簽觸發滑鼠的移入移出以及ommousemove事件並且將圖片放大。

利用百分比實現放大效果。

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
<style>
#div1{border:1px solid black;padding:5px;width:200px;height:200px;position:relative;}
.small_pic{width:200px;height:200px;position: relative;top:0px; left:0px;}
.small_pic .mark{position: absolute;width:100%;height:100%;top:0px; left:0px;filter:alpha(opacity=0);opacity:0;z-index: 2;}
.small_pic .float_pic{position: absolute;width:50px;height: 50px;filter:alpha(opacity=20);opacity:0.2;border:1px solid black;top:10px;left:10px;background: blue;display: none}
.big_pic {width:250px;height:250px; position: absolute;left: 210px;top:0px;border:1px solid black;overflow: hidden;display: none}
.big_pic img{position: absolute;top:10px;left:0;}
img{vertical-align: top}
</style>
<script type="text/javascript">
window.onload=function (){
	var oDiv1=document.getElementById("div1");
	var oMark=document.querySelector(".mark");
	var oSmall=document.querySelector(".small_pic");
	var oFloat=document.querySelector(".float_pic");
	var oBig=document.querySelector(".big_pic");
	var oImg=document.querySelector(".big_img");

	oMark.onmouseover=function ()
	{
		oFloat.style.display='block';
		oBig.style.display='block';
	};
	oMark.onmouseout=function (){
		oFloat.style.display="none";
		oBig.style.display="none";
	};
	oMark.onmousemove=function (ev){
		var oEvent=ev||window.event;
		var lt=oEvent.clientX-oDiv1.offsetLeft-oSmall.offsetLeft-oFloat.offsetWidth/2;
		var tp=oEvent.clientY-oDiv1.offsetTop-oSmall.offsetTop-oFloat.offsetHeight/2;
		// console.log(lt+"+"+tp);
		if(lt<0){
			lt=0;
		}
		else if(lt>oSmall.offsetWidth-oFloat.offsetWidth){
			lt=oSmall.offsetWidth-oFloat.offsetWidth;
		}
		if(tp<0){
			tp=0;
		}
		else if(tp>oSmall.offsetHeight-oFloat.offsetHeight){
			tp=oSmall.offsetHeight-oFloat.offsetHeight;
		}
		oFloat.style.left=lt+'px';
		oFloat.style.top=tp+"px";
		var degLeft=lt/(oSmall.offsetWidth-oFloat.offsetWidth);
		var degTop=tp/(oSmall.offsetHeight-oFloat.offsetHeight);
		oImg.style.left=-(oImg.offsetWidth-oBig.offsetWidth)*degLeft+"px";
		oImg.style.top=-(oImg.offsetHeight-oBig.offsetHeight)*degTop+"px";
	};


}
</script>
</head>
<body>
<div id="div1">
	<div class="small_pic">
		<span class="mark"></span>
		<span class="float_pic"></span>
		<img src="images/small.png"/>
	</div>
	<div class="big_pic"><img class="big_img" src="images/big.png" /></div>
</div>
</body>
</html>

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

-Advertisement-
Play Games
更多相關文章
  • 引言 在 "angular start" 項目中啟用了 功能,關於如何在 啟用 ,請查看 "HRM配置" 那 是個什麼東西呢? 是`webpack angular cli`使用了它,它會在應用程式運行過程中替換、添加或刪除模塊,而無需重新載入整個頁面。主要是通過以下幾種方式,來顯著加快開發速度: 保 ...
  • 要寫一個點擊彈窗任意地方,關閉彈窗。點擊事件寫標簽在元素上 onclick = closepop(this),這時候很容易搞不清楚怎麼去獲取當前元素 function closepop(e){ var $this =$(e); $this.fadeOut(); } // this其實是一個Html ...
  • Bootstrap,來自 Twitter,是目前最受歡迎的前段框架。Bootstrap是基於HTML、CSS、JAVASCRIPT的,它簡潔靈活,使得Web開發更加快捷Bootstrap特點:優雅,靈活,可擴展為什麼使用Bootstrap:1.移動設備優先 :自從Bootstrap3起,框架包含了貫 ...
  • 起因 使用HTML5開發Android應用時,少不了調試WebView。做前端的還是習慣Chrome的開發者工具,以前都是輸入Chrome://inspect就可以調試WebView了,太方便了。 最近老是出現空白頁面,各種搜索,最後還是Fan牆解決了。好在翻一次能用一段時間,鬱悶的是當你需要調試的 ...
  • json本身是字元串,即 json字元串 js使用 要把 json字元串 轉為 javascript對象 json字元串轉為js對象的方法:jquery的parseJSON var str='[{"name":"cxh","sex":"man"},{"name":"cxh1","sex":"man1 ...
  • 1、vue 路由 如果傳遞 params 定義路由的時候是 獲取的時候 最後形如 傳參的時候 2、如果傳遞query ?id=str.... 定義路由的時候直接是 獲取的時候 傳參的時候 ...
  • <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>for與each性能比較</title> </head> <body><div id="test"></div> <input type="button" value="for" o ...
  • 比如在做下拉刷新的時候,切記在下拉刷新的函數中要加 這行代碼,否則下拉載入之後一直顯示載入中,而不會載入完成。 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...