原生js实现放大镜特效

本文介绍了一种网页中实现图片放大镜效果的方法。通过HTML、CSS及JavaScript代码展示了如何为图片添加交互式的放大功能,包括鼠标悬停显示、跟随鼠标移动的透明框以及对应放大的图片区域。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

废话不多说,上代码

图片自备哈

 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <meta charset="UTF-8">
 5         <title>放大镜特效</title>
 6         <style>
 7             a,address,b,big,blockquote,body,center,cite,code,dd,del,div,dl,dt,em,fieldset,font,form,h1,h2,h3,h4,h5,h6,html,i,iframe,img,ins,label,legend,li,ol,p,pre,small,span,strong,u,ul{margin:0;padding:0}
 8             body{background: #ccc;}
 9         
10             #img1{position: relative;width: 450px; height: 450px; overflow: hidden;margin: 20px;}
11         
12             #img1 span{display: none;display: block; top: 0;left: 0;position: absolute;width:200px;height: 200px; opacity: .5;filter: alpha(opacity=50);
13             background: #FFFF00;cursor: move;}
14             #two{display: none; width: 600px;height: 600px;overflow: hidden;position: absolute;top:0;left: 550px;}
15             #two img{position: absolute;top:0;left: 0;}
16         </style>
17     </head>
18     <body>
19         
20             <div id="img1">
21                 <img  src="img/bg1.jpg"/>
22                 <span></span>
23             </div>
24         
25         <div id="two">
26                 <img  src="img/bg2.jpg"/>
27         </div>
28     </body>
29     <script>
30         var Domimg1 = getDom('img1');
31         var spanDom = Domimg1.getElementsByTagName('span')[0];
32         var Dom2=getDom('two');
33         var imgDom2=Dom2.children[0]
34         Domimg1.onmouseover=function(){
35             spanDom.style.display='block';
36             Dom2.style.display='block';
37         }
38         Domimg1.onmouseout=function(){
39             spanDom.style.display='none';
40             Dom2.style.display='none';
41         }
42         Domimg1.onmousemove=function(e){
43             e = e || window.event;
44             
45             var x = e.clientX-this.offsetLeft-spanDom.offsetWidth/2;
46             var y = e.clientY-this.offsetTop-spanDom.offsetHeight/2;
47             if(x<0){x=0;}
48             if(y<0){y=0;}
49             if(x>this.offsetWidth-spanDom.offsetWidth){x=this.offsetWidth-spanDom.offsetWidth}
50             if(y>this.offsetHeight-spanDom.offsetHeight){y=this.offsetHeight-spanDom.offsetHeight}
51             spanDom.style.left= x+'px';
52             spanDom.style.top= y+'px';
53         
54             var xpersent=x/(this.offsetWidth-spanDom.offsetWidth);
55             var ypersent=y/(this.offsetHeight-spanDom.offsetHeight);
56             var nwidth=xpersent*(imgDom2.width-Dom2.offsetWidth);
57             var nHeight=ypersent*(imgDom2.height-Dom2.offsetHeight);
58             imgDom2.style.left = -nwidth+'px';
59             imgDom2.style.top = -nHeight+'px';
60         }
61         
62         function getDom(id){
63             return document.getElementById(id);
64         }
65     </script>
66 </html>

 效果图:点击这里

转载于:https://www.cnblogs.com/gaoxuerong123/p/7787977.html

资源下载链接为: https://pan.quark.cn/s/1bfadf00ae14 华为移动服务(Huawei Mobile Services,简称 HMS)是一个全面开放的移动服务生态系统,为企业和开发者提供了丰富的工具和 API,助力他们构建、运营和推广应用。其中,HMS Scankit 是华为推出的一款扫描服务 SDK,支持快速集成到安卓应用中,能够提供高效且稳定的二维码和条形码扫描功能,适用于商品扫码、支付验证、信息获取等多种场景。 集成 HMS Scankit SDK 主要包括以下步骤:首先,在项目的 build.gradle 文件中添加 HMS Core 库和 Scankit 依赖;其次,在 AndroidManifest.xml 文件中添加相机访问和互联网访问权限;然后,在应用程序的 onCreate 方法中调用 HmsClient 进行初始化;接着,可以选择自定义扫描界面或使用 Scankit 提供的默认扫描界面;最后,实现 ScanCallback 接口以处理扫描成功和失败的回调。 HMS Scankit 内部集成了开源的 Zxing(Zebra Crossing)库,这是一个功能强大的条码和二维码处理库,提供了解码、生成、解析等多种功能,既可以单独使用,也可以与其他扫描框架结合使用。在 HMS Scankit 中,Zxing 经过优化,以更好地适应华为设备,从而提升扫描性能。 通常,ScanKitDemoGuide 包含了集成 HMS Scankit 的示例代码,涵盖扫描界面的布局、扫描操作的启动和停止以及扫描结果的处理等内容。开发者可以参考这些代码,快速掌握在自己的应用中实现扫码功能的方法。例如,启动扫描的方法如下: 处理扫描结果的回调如下: HMS Scankit 支持所有安卓手机,但在华为设备上能够提供最佳性能和体验,因为它针对华为硬件进行了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值