本文实例为大家分享了js放大镜效果展示的具体代码,供大家参考,具体内容如下

具体代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
body,div,img{
margin:0;
padding:0;
}
img{
display:block;
border:none;
}
#box{
position:absolute;
top:20px;
left:20px;
width:350px;
height:350px;
box-shadow:3px 3px 10px 0 #111111;
}
#box img{
width:100%;
height:100%;
}
#mark{
display:none;
position:absolute;
top:0;
left:0;
width:175px;
height:175px;
background:#000;
opacity: 0.5;
filter:alpha(opacity=50);
cursor:move;
}
#boxRight{
display:none;
position:absolute;
top:20px;
left:380px;
width:350px;
height:350px;
overflow:hidden;
}
/*我们右侧的图片的大小是需要严格计算的:
mark的width是box的width的一半,那么我们的大图宽度也应该是小图的二倍
*/
#boxRight img{
position:absolute;
top:0;
left:0;
width:200%;
height:200%;
}
</style>
</head>
<body>
<div id='box'>
<img src="img/iphone.jpg" alt="">
<div id='mark'></div>
</div>
<div id='boxRight'>
<img src="img/iphone_big.jpg" alt="">
</div>
<script>
//放大镜的原理: 我们的mark横向是box的一半,纵向也是box的一半,那么右侧的大图横向(纵向)应该是左侧小图的2倍
var box = document.getElementById('box');
var mark = document.getElementById('mark');
var boxRight = document.getElementById('boxRight');
//设置mark这个盒子
function setPosition(e){
var top = e.clientY - box.offsetTop - (mark.offsetHeight/2);
var left = e.clientX - box.offsetLeft - (mark.offsetWidth/2);
//边界判断
var tempL = 0,tempT = 0;
var minL = 0,minT = 0,maxL = box.offsetWidth - mark.offsetWidth,maxT = box.offsetHeight - mark.offsetHeight ;
if(left<minL){
mark.style.left = minL + "px";
tempL = minL;
}else if(left>maxL){
mark.style.left = maxL + "px";
tempL = maxL;
}else{
mark.style.left = left + "px";
tempL = left;
}
if(top<minT){
mark.style.top = minT + "px";
tempT = minT;
}else if(top>maxT){
mark.style.top = maxT + "px";
tempT = maxT;
}else{
mark.style.top = top + "px";
tempT = top;
}
//右侧图片跟着运动:左侧移动多少,右侧跟着移动他的2倍即可
var oImg = boxRight.getElementsByTagName("img")[0];
oImg.style.left = -tempL*2 + "px";
oImg.style.top = -tempT*2 + "px";
}
box.onmouseenter = function(e){
e = e || window.event;
mark.style.display = "block";
setPosition(e);
boxRight.style.display = "block";
}
box.onmousemove = function(e){
e = e || window.event;
setPosition(e);
}
box.onmouseleave = function(e){
e = e || window.event;
mark.style.display = "none";
boxRight.style.display = "none";
}
</script>
</body>
</html>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# js
# 放大镜
# js实现点击图片在屏幕中间弹出放大效果
# JavaScript实现图片放大镜效果
# 原生js实现淘宝放大镜效果
# JS与CSS3实现图片响应鼠标移动放大效果示例
# hammer.js实现图片手势放大效果
# JS点击缩略图整屏居中放大图片效果
# JavaScript实现放大镜效果代码示例
# 小图
# 大家分享
# 也应
# 具体内容
# 大家多多
# 应该是
# position
# box
# absolute
# top
# padding
# px
# display
# border
# block
# height
# shadow
# mark
# width
# left
相关文章:
建站主机选虚拟主机还是云服务器更好?
如何快速生成高效建站系统源代码?
网站制作中优化长尾关键字挖掘的技巧,建一个视频网站需要多少钱?
专业公司网站制作公司,用什么语言做企业网站比较好?
广东专业制作网站有哪些,广东省能源集团有限公司官网?
南阳网站制作公司推荐,小学电子版试卷去哪里找资源好?
Bpmn 2.0的XML文件怎么画流程图
建站之星×万网:智能建站系统+自助建站平台一键生成
湖州网站制作公司有哪些,浙江中蓝新能源公司官网?
如何将凡科建站内容保存为本地文件?
宝塔建站无法访问?如何排查配置与端口问题?
广德云建站网站建设方案与建站流程优化指南
如何在万网开始建站?分步指南解析
深圳 网站制作,深圳招聘网站哪个比较好一点啊?
如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?
大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?
如何零基础开发自助建站系统?完整教程解析
如何破解联通资金短缺导致的基站建设难题?
如何确保西部建站助手FTP传输的安全性?
实例解析angularjs的filter过滤器
C++中引用和指针有什么区别?(代码说明)
常州企业建站如何选择最佳模板?
宝塔新建站点为何无法访问?如何排查?
建站主机类型有哪些?如何正确选型
如何在Golang中引入测试模块_Golang测试包导入与使用实践
专业网站建设制作报价,网页设计制作要考什么证?
c++怎么使用类型萃取type_traits_c++ 模板元编程类型判断【方法】
平台云上自主建站:模板化设计与智能工具打造高效网站
南京网站制作费用,南京远驱官方网站?
网站专业制作公司有哪些,做一个公司网站要多少钱?
建站主机默认首页配置指南:核心功能与访问路径优化
建站主机选哪家性价比最高?
Dapper的Execute方法的返回值是什么意思 Dapper Execute返回值详解
c++如何打印函数堆栈信息_c++ backtrace函数与符号名解析【方法】
如何快速搭建响应式可视化网站?
制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?
制作网页的网站有哪些,电脑上怎么做网页?
上海网站制作网站建设公司,建筑电工证网上查询系统入口?
建站之星如何快速解决建站难题?
如何用搬瓦工VPS快速搭建个人网站?
如何在橙子建站中快速调整背景颜色?
广州顶尖建站服务:企业官网建设与SEO优化一体化方案
制作销售网站教学视频,销售网站有哪些?
如何基于云服务器快速搭建个人网站?
建站之星如何取消后台验证码生成?
详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)
如何获取上海专业网站定制建站电话?
建站之星安装后界面空白如何解决?
北京企业网站设计制作公司,北京铁路集团官方网站?
详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)
*请认真填写需求信息,我们会在24小时内与您取得联系。