基于jQuery仿淘宝产品图片放大镜特效


Posted in Javascript onOctober 19, 2020

在开发商城的时候,往往会用到图片的放大功能,这里把自己在近期项目中使用的放大镜特效做一下总结(非插件)。

放大镜效果 常用的js组件jquery.imagezoom,jquery.jqzoom,jquery.zoom等 这些组件大同小异。 大家感兴趣的话可以去百度一下。

本文主要是使用非组件方法来做放大镜效果。

每一张图片都要生成三种尺寸,否则放大镜的效果不会太明显,这里是 54X54  320X320  800X800。

首先看效果:鼠标经过小图时,大图随之切换。

基于jQuery仿淘宝产品图片放大镜特效

首先是html

<div class="infoimg">
 <div class="mainImg" id="largePicDiv">
  <img id="largePic" src="FileUpload/20160120/20160120103334758_w.jpg" alt="" />
  <div class="zoom_pup" id="move"></div>
  <div id="detailPic" class="big_pic">
   <img alt="和朋友们一起想办法(第二辑):全8册" src="FileUpload/20160120/20160120103334758_b.jpg" />
  </div>
 </div>
 <div class="allImg">
   <img src="FileUpload/20160120/20160120103334758_x.jpg" alt="和朋友们一起想办法(第二辑):全8册"/>
   <img src="FileUpload/20160120/20160120103334918_x.jpg" alt="和朋友们一起想办法(第二辑):全8册"/>
   <img src="FileUpload/20160120/20160120103335031_x.jpg" alt="和朋友们一起想办法(第二辑):全8册"/>
   <img src="FileUpload/20160120/20160120103335127_x.jpg" alt="和朋友们一起想办法(第二辑):全8册"/>
   <img src="FileUpload/20160120/20160120103335209_x.jpg" alt="和朋友们一起想办法(第二辑):全8册"/>

 </div>
    
</div>

这里id为move的div是放大镜的手柄 id为detailPic的div是右侧放大镜

 css

.infoimg { float: left; padding: 0 20px 30px 0; position: relative; width: 320px; }

.infoimg img { display: block; height: 320px; width: 320px; }

.allImg { height: 58px; margin: 15px 0 0 10px; overflow: hidden; width: 310px; }

.allImg img { cursor: pointer; float: left; height: 54px; margin-right: 3px; padding: 2px; width: 54px; }

.allImg img.current { border: 1px solid #f1f1f1; padding: 1px; }

.mainImg { position: relative; }

.mainImg .zoom_pup { background: url("../images/zoom_pup.png") repeat 0 0; cursor: move; height: 175px; left: 0px; position: absolute; top: 160px; width: 175px; display: none; }

.big_pic { background-color:#fff; border: 1px solid #f5f5f5; height: 400px; left: 320px; overflow: hidden; position: absolute; text-align: center; top: 0; width: 400px; display: none; }
.big_pic img{ width: 800px; height: 800px;}

JS代码

//切换图片
 $(".allImg img").mouseover(function() {
  $(".allImg img").removeClass("current");
  $(this).addClass("current");
  var src = $(this).attr("src");
  $("#largePic").attr("src", src.replace("_x", "_w"));
  $("#detailPic img").attr("src", src.replace("_x", "_b"));

 });
 
 //放大镜效果
 $("#largePicDiv").bind("mousemove",
  function(e) {
   var ev = e || event;
   var mouseX = ev.pageX;
   var mouseY = ev.pageY;
   var picLeft = $("#largePic").offset().left;
   var picTop = $("#largePic").offset().top;
   var picWidth = $("#largePic").width();
   var picHeight = $("#largePic").height();
   var xLength = mouseX - picLeft;
   var yLength = mouseY - picTop;
   var qWidth = picWidth / 4;
   var lastQWidth = picWidth - picWidth / 4;
   var qHeight = picHeight / 4;
   var lastQHeight = picHeight - picHeight / 4;
   if (xLength < qWidth) {
    $("#move").css("left","0px");
   } else {
    if (xLength > lastQWidth) {
     $("#move").css("left", (lastQWidth - qWidth) + "px");
    } else {
     $("#move").css("left", (xLength - qWidth) + "px");
    }
   }
   if (yLength < qHeight) {
    $("#move").css("top", "0px");
   } else {
    if (yLength > lastQHeight) {
     $("#move").css("top", (lastQHeight - qHeight) + "px");
    } else {
     $("#move").css("top", (yLength - qHeight) + "px");
    }
   }
   $("#detailPic > img").css("left", parseInt($("#move").css("left")) * (-800 / picWidth) + "px").css("top", parseInt($("#move").css("top")) * (-800 / picWidth) + "px").css("position", "absolute");
  });

当然这里最下面一排小图片 还缺少一个功能,就是当图片大于5张的时候可以左右滚动图片,这样可以容纳大于5张的图片。这里项目中使用的图片一般都小于5张,因此这个功能没有,大家可以参考一下当当或京东。

以上就是jQuery实现图片放大镜效果的代码,希望对大家的学习有所帮助。

Javascript 相关文章推荐
日期 时间js控件
May 07 Javascript
js png图片(有含有透明)在IE6中为什么不透明了
Feb 07 Javascript
js ondocumentready onmouseover onclick onmouseout 样式
Jul 22 Javascript
Jquery实现弹出层分享微博插件具备动画效果
Apr 03 Javascript
node.js中的url.resolve方法使用说明
Dec 10 Javascript
Jquery ajax请求导出Excel表格的实现代码
Jun 08 Javascript
深入理解requestAnimationFrame的动画循环
Sep 20 Javascript
微信小程序 swiper组件详解及实例代码
Oct 25 Javascript
js实现百度地图定位于地址逆解析,显示自己当前的地理位置
Dec 08 Javascript
纯JS实现弹性导航条效果
Mar 06 Javascript
JavaScript学习总结之正则的元字符和一些简单的应用
Jun 30 Javascript
JavaScript实现tab栏切换效果
Mar 16 Javascript
jQuery图片旋转插件jQueryRotate.js用法实例(附demo下载)
Jan 21 #Javascript
jQuery validate插件submitHandler提交导致死循环解决方法
Jan 21 #Javascript
jQuery prototype冲突的2种解决方法(附demo示例下载)
Jan 21 #Javascript
jquery mobile开发常见问题分析
Jan 21 #Javascript
json格式数据的添加,删除及排序方法
Jan 21 #Javascript
jquery及js实现动态加载js文件的方法
Jan 21 #Javascript
js console.log打印对像与数组用法详解
Jan 21 #Javascript
You might like
php简单封装了一些常用JS操作
2007/02/25 PHP
最新的php 文件上传模型,支持多文件上传
2009/08/13 PHP
php 删除一个数组中的某个值.兼容多维数组!
2012/02/18 PHP
PHP实现变色验证码实例
2014/01/06 PHP
php获取系统变量方法小结
2015/05/29 PHP
PHP函数checkdnsrr用法详解(Windows平台用法)
2016/03/21 PHP
php中final关键字用法分析
2016/12/07 PHP
Aster vs Newbee BO5 第三场2.19
2021/03/10 DOTA
js移除事件 js绑定事件实例应用
2012/11/28 Javascript
JavaScript中的style.cssText使用教程
2014/11/06 Javascript
JavaScript中常见获取元素的方法汇总
2015/03/04 Javascript
AngularJS教程之MVC体系结构详解
2016/08/16 Javascript
JS基于对象的特性实现去除数组中重复项功能详解
2017/11/17 Javascript
Vue中的slot使用插槽分发内容的方法
2018/03/01 Javascript
如何编写一个d.ts文件的步骤详解
2018/04/13 Javascript
JQuery样式操作、click事件以及索引值-选项卡应用示例
2019/05/14 jQuery
js中调用微信的扫描二维码功能的实现代码
2020/04/11 Javascript
[01:13]2014DOTA2西雅图邀请赛 舌尖上的TI4
2014/07/08 DOTA
Python列表解析配合if else的方法
2018/06/23 Python
将Dataframe数据转化为ndarry数据的方法
2018/06/28 Python
Python使用爬虫抓取美女图片并保存到本地的方法【测试可用】
2018/08/30 Python
Python3模拟登录操作实例分析
2019/03/12 Python
Python 操作 ElasticSearch的完整代码
2019/08/04 Python
linux下python中文乱码解决方案详解
2019/08/28 Python
Tensorflow设置显存自适应,显存比例的操作
2020/02/03 Python
150行Python代码实现带界面的数独游戏
2020/04/04 Python
python实现学生信息管理系统(精简版)
2020/11/27 Python
房地产开发计划书
2014/01/10 职场文书
创业计划书撰写原则
2014/01/25 职场文书
知识竞赛活动方案
2014/02/18 职场文书
会走路的树教学反思
2014/02/20 职场文书
出纳员岗位职责
2014/03/13 职场文书
群众路线个人对照检查材料
2014/09/23 职场文书
用python画城市轮播地图
2021/05/28 Python
怎么禁用Windows 11快照布局? win11不使用快照布局的技巧
2021/11/21 数码科技
Mysql多层子查询示例代码(收藏夹案例)
2022/03/31 MySQL