问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

为什么jQuery用了放大镜我的放大镜跟鼠标不在一起的,放大镜也不会只出现在小图片上面,如图大神帮帮忙

发布网友 发布时间:2022-04-22 21:54

我来回答

3个回答

懂视网 时间:2022-04-23 02:16

本篇文章给大家详细分析了用jquery实现放大镜效果的方法,以及代码分享,有兴趣的学习下。

jquery写的两种放大镜效果,没有使用到插件。调理和思路清晰。不是使用面向对象方式写的,初学者较容易看懂。废话不多说,看代码。图片这里就不上传了,大家自己找下。最好是找到比例的,这样效果比较好。

<body> 
 <p id="father"> 
 <p id="container"> 
 <img src="img/400_1.jpg" style="display: block;"> 
 <img src="img/400_2.jpg" > 
 <p class="shade"></p> 
 </p> 
 <p class="small first"><img src="img/50_1.jpg"></p> 
 <p class="small second"><img src="img/50_2.jpg"></p> 
 </p> 
 
 <p class="big"> 
 <img src="img/800_1.jpg" style="display: block;"> 
 <img src="img/800_2.jpg"> 
 </p> 
</body>

css代码

*{padding: 0; margin: 0;} 
 #father .small{width: 50px; height: 50px; border: 2px solid #ccc; bottom: 0; position: absolute;} 
 #father .second{left: 70px;} 
 .third{left: 140px;} 
 #father{position: relative; top: 100px; left: 50px; height: 460px;} 
 #container{position: absolute; width: 400px; height: 400px;} 
 #container img{position: absolute; display: none;} 
 
 .shade{width: 200px; height: 200px; position: absolute; background: #000; opacity: 0.4; top: 0; 
 left: 0; display: none;} 
 .big{width: 400px; height: 400px; position: absolute; top: 100px; overflow: hidden; left: 500px; display: none;} 
 .big img{width: 800px; height: 800px; position: absolute; display: none;}

js代码

<script type="text/javascript" src='js/jquery-1.12.4.min.js'></script> 
 <script type="text/javascript"> 
 $(function () { 
 
 changePic('.first',0); 
 changePic('.second',1); 
 
 var shadeWidth = $('.shade').width(),//阴影的宽度 
 shadeHeight = $('.shade').height(),//阴影的高度 
 middleWidth = $('#container').width(),//容器的宽度 
 middleHeight = $('#container').height(),//容器的高度 
 bigWidth = $('.big').width(),//放大图片盒子的宽度 
 bigHeight = $('.big').height(),//放大图片盒子的高度 
 rateX = bigWidth / shadeWidth,//放大区和遮罩层的宽度比例 
 rateY = bigHeight / shadeHeight;//放大区和遮罩层的高度比例 
 
 //当鼠标移入与移出时阴影与放大去显现/消失 
 $('#container').hover(function() { 
 $('.shade').show(); 
 $('.big').show(); 
 }, function() { 
 $('.shade').hide(); 
 $('.big').hide(); 
 }).mousemove(function(e) {//当鼠标移动时,阴影和放大区图片进行移动 
 
 //记录下光标距离页面的距离 
 var x = e.pageX, 
  y = e.pageY; 
 
 //设置遮罩层的位置 
 $('.shade').offset({ 
  top: y-shadeHeight/2, 
  left: x-shadeWidth/2 
 }); 
 
 //获取遮罩层相对父元素的位置 
 var cur = $('.shade').position(), 
  _top = cur.top, 
  _left = cur.left, 
  hdiffer = middleHeight - shadeHeight, 
  wdiffer = middleWidth - shadeWidth; 
 
 if (_top < 0) _top = 0; 
 else if (_top > hdiffer) _top = hdiffer; 
 if (_left < 0) _left = 0; 
 else if (_left > wdiffer) _left =wdiffer; 
 
 //判断完成后设置遮罩层的范围 
 $('.shade').css({ 
  top: _top, 
  left: _left 
 }); 
 
 //设置放大区图片移动 
 $('.big img').css({ 
  top: - rateY*_top, 
  left: - rateX*_left 
 }); 
 
 });; 
 
 //封装的改变图片显示的函数 
 function changePic (element,index) { 
 $(element).click(function() { 
  $('#container img').eq(index).css('display', 'block').siblings().css('display', 'none'); 
  $('.big img').eq(index).css('display', 'block').siblings().css('display', 'none'); 
 }); 
 } 
 
 });

以上是常用的,下面这个是在原图基础上放大的

htm

<body> 
 <p id="father"> 
 <p id="container"> 
 <img src="img/400_1.jpg" style="display: block;"> 
 <img src="img/400_2.jpg" > 
 <img src="img/400_3.jpg" > 
 <p class="shade"> 
 <img src="img/800_1.jpg" style="display: block;"> 
 <img src="img/800_2.jpg"> 
 <img src="img/800_3.jpg"> 
 </p> 
 </p> 
 <p class="small first"><img src="img/50_1.jpg"></p> 
 <p class="small second"><img src="img/50_2.jpg"></p> 
 <p class="small third"><img src="img/50_3.jpg"></p> 
 </p> 
</body>

css代码

*{padding: 0; margin: 0;} 
 #father .small{width: 50px; height: 50px; border: 2px solid #ccc; bottom: 0; position: absolute;} 
 #father .second{left: 70px;} 
 .third{left: 140px;} 
 #father{position: relative; top: 100px; left: 50px; height: 460px;} 
 #container{position: absolute; width: 400px; height: 400px;} 
 #container img{position: absolute; display: none;} 
 .shade{width: 200px; height: 200px; position: absolute; top: 0;left: 0; display: none; border-radius: 50%; overflow: hidden; background: #000;} 
 .shade img{display: none; width: 800px; height: 800px; position: absolute;}

js代码

<span style="white-space:pre"> </span><script type="text/javascript" src='js/jquery-1.12.4.min.js'></script> 
 <script type="text/javascript"> 
 $(function () { 
 
 changePic('.first',0); 
 changePic('.second',1); 
 changePic('.third',2); 
 
 var shadeWidth = $('.shade').width(),//阴影的宽度 
 shadeHeight = $('.shade').height(),//阴影的高度 
 middleWidth = $('#container').width(),//容器的宽度 
 middleHeight = $('#container').height(),//容器的高度 
 bigImgWidth = $('.shade img').width(),//放大图片盒子的宽度 
 bigImgHeight = $('.shade img').height(),//放大图片盒子的高度 
 rateX = bigImgWidth / middleWidth,//放大区和遮罩层的宽度比例2 
 rateY = bigImgHeight / middleHeight;//放大区和遮罩层的高度比例2 
 
 //当鼠标移入与移出时阴影与放大去显现/消失 
 $('#container').hover(function() { 
 $('.shade').show(); 
 $('.big').show(); 
 }, function() { 
 $('.shade').hide(); 
 $('.big').hide(); 
 }).mousemove(function(e) {//当鼠标移动时,阴影和放大区图片进行移动 
  
 
 //记录下光标距离页面的距离 
 var x = e.pageX, 
  y = e.pageY; 
 
 //设置遮罩层的位置 
 $('.shade').offset({ 
  top: y-shadeHeight/2, 
  left: x-shadeWidth/2 
 }); 
 
 //获取遮罩层相对父元素的位置 
 var cur = $('.shade').position(), 
  _top = cur.top, 
  _left = cur.left, 
  hdiffer = middleHeight - shadeHeight, 
  wdiffer = middleWidth - shadeWidth; 
 
 if (_top < 0) _top = 0; 
 else if (_top > hdiffer) _top = hdiffer; 
 if (_left < 0) _left = 0; 
 else if (_left > wdiffer) _left =wdiffer; 
 
 //判断完成后设置遮罩层的范围 
 $('.shade').css({ 
  top: _top, 
  left: _left 
 }); 
 
  
 //设置放大区图片移动 
 $('.shade img').css({ 
  top: - _top*rateY*3/2, 
  left: - _left*rateX*3/2 
 }); 
 
 });; 
 
 //封装的改变图片显示的函数 
 function changePic (element,index) { 
 $(element).click(function() { 
  $('#container img').eq(index).css('display', 'block').siblings().css('display', 'none'); 
  $('.shade img').eq(index).css('display', 'block').siblings().css('display', 'none'); 
 }); 
 } 
 
 }); 
<span style="white-space:pre"> </span></script>

上面是我整理给大家的,希望今后会对大家有帮助。

相关文章:

在vue中如何实现自定义全局方法

在vue组件中如何实现全局注册和局部注册

通过vue-cli+webpack项目如何实现修改项目名称

热心网友 时间:2022-04-22 23:24

不是拼接的。基本原理是用一个(big.jpg )或两个图(small.jpg ,big.jpg)实现。一个图的方式:img控件直接加载大图,用width,height控制缩小显示,mouseover时根据设置比例,放大的范围,在另一个img中显示原图的相应部分(需控制css:overflow:hidden),两个图的差不多,小图是大图的缩略图片,这样做的好处是不用直接加载大图,提高网页显示速度,只有发生了鼠标滑动放大事件时才动态加载大图。p.s. 多看看“js 放大镜”的源码,就能知道具体怎样实现的了

热心网友 时间:2022-04-23 00:42

把代码贴上来看看撒。。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
临沂比较有名的男装品牌 呼伦贝尔市悦动网络科技有限公司怎么样? 呼伦贝尔中汇实业有限公司怎么样? 呼伦贝尔油玉不绝电子商务有限公司怎么样? 如何避免wps卡顿? 属鼠的男人找对象是属什么,属鼠的人和什么属相合 96年鼠的姻缘在哪年 属相相合年份运势提升 2024属鼠找对象属什么最佳 黑客攻击网站能报案吗 黑客攻击报案有用吗 如何做好医保监管工作 医院医保由哪个上级部门监管? 我新买的荣耀9x,手机电量上面显示用了3天多,是不是原来用过? 荣耀9X充满电关机两个月后还能使用吗? 为什么我的荣耀9x没有百度上讲的电量那么好?92%的电,只能用7个小时。我... 梦见喝白米粥里面有菜叶有点苦? 香港卫视有网络电视直播吗? 杨国强的个人简历 求《翻过那座山》的作文素材,不要太大众化的,符合初中生经历的事,是写记叙文用的,急急急急!!! 中国最有钱的三个女人是谁 翻过那座山新颖立意是什么? 求一篇750字的语文作文《翻过那座山》 翻过那座山八百字作文 揭露中国最年轻女首富杨惠妍长相之谜? 工作信息应该怎么写? 杨惠妍是杨国强的第几个女儿啊? 就业信息按内容区分可以分成哪四个部分 MES系统价值有哪些? MES系统在生产企业中的作用? 教学内容设定的课程语言知识学习目标是什么在教材体系中,前后顺序如何 还有一点火星然后一吹就可以点火这叫什么纸 有什么可以造纸的机器?我说的是像打印机一样的小型机器有吗? 玩具左轮手*的火药纸是用什么机器装的吗,还是人工点进去的,就是一个塑料圆盘那种火药 客所思FX5、客所思FX5S、客所思FX5青春版都有哪些区别? 玫瑰花酒 冰玫瑰酒 PMQ7,播吧2代,SO8,客所思FX5s哪个好? 客所思fx5声卡快捷音效和快捷音乐有时不起作用是怎么回事 客所思fx5声卡怎么用 客所思FX5青春版和FX5有很大区别吗? 广州哪里车喷漆便宜? 客所思fx5声卡好不好用? 北海汽车喷漆哪里最便宜 广州哪里车喷漆便宜 鸣沙客栈红豆沙食谱怎么获得 一个手机号怎么申请第二个? 客所思FX5青春版的内置麦怎么样? 客所思FX5青春版的降噪功能怎么样? 深圳全车喷漆哪里便宜 我喜欢的女生(她不知道)看到我跟她的闺蜜一起* 然后她的闺蜜把那张*做成微信头像 客所思FX5青春版声卡好不好用?适合用来做户外直播吗?