基于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 相关文章推荐
Javascript计算时间差的函数分享
Jul 04 Javascript
通过百度地图获取公交线路的站点坐标的js代码
May 11 Javascript
jQuery点击tr实现checkbox选中的方法
Mar 19 Javascript
jquery 倒计时效果实现秒杀思路
Sep 11 Javascript
21个JavaScript事件(Events)属性汇总
Dec 02 Javascript
AngularJS实现textarea记录只能输入规定数量的字符并显示
Apr 26 Javascript
AngularJS入门教程之更多模板详解
Aug 19 Javascript
JavaScript制作颜色反转小游戏
Sep 25 Javascript
jQuery旋转插件jqueryrotate用法详解
Oct 13 Javascript
解决layer弹层遮罩挡住窗体的问题
Aug 17 Javascript
关于引入vue.js 文件的知识点总结
Jan 28 Javascript
Vue 禁用浏览器的前进后退操作
Sep 04 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
第二节--PHP5 的对象模型
2006/11/16 PHP
mysql5详细安装教程
2007/01/15 PHP
详解PHP内置访问资源的超时时间 time_out file_get_contents read_file
2013/06/03 PHP
php更新修改excel中的内容实例代码
2014/02/26 PHP
PHP正则判断一个变量是否为正整数的方法
2019/02/27 PHP
jQuery图片轮播的具体实现
2013/09/11 Javascript
javascript学习笔记之10个原生技巧
2014/05/21 Javascript
jquery实现一个简单好用的弹出框
2014/09/26 Javascript
Jquery树插件zTree用法入门教程
2015/02/17 Javascript
jQuery实现仿腾讯视频列表分页效果的方法
2015/08/07 Javascript
Sublime Text 3常用插件及安装方法
2015/12/16 Javascript
详解AngularJS如何实现跨域请求
2016/08/22 Javascript
微信公众号 客服接口的开发实例详解
2016/09/28 Javascript
如何在Angular.JS中接收并下载PDF
2016/11/26 Javascript
xmlplus组件设计系列之图标(ICON)(1)
2017/05/05 Javascript
Vue.js实现一个todo-list的上移下移删除功能
2017/06/26 Javascript
javaScript和jQuery自动加载简单代码实现方法
2017/11/24 jQuery
vue单页应用加百度统计代码(亲测有效)
2018/01/31 Javascript
JS常用排序方法实例代码解析
2020/03/03 Javascript
Python内置函数reversed()用法分析
2018/03/20 Python
解决pycharm下os.system执行命令返回有中文乱码的问题
2019/07/07 Python
基于python3监控服务器状态进行邮件报警
2019/10/19 Python
python自动生成model文件过程详解
2019/11/02 Python
python super函数使用方法详解
2020/02/14 Python
python修改微信和支付宝步数的示例代码
2020/10/12 Python
HTML5 CSS3给网站设计带来出色效果
2009/07/16 HTML / CSS
文体活动实施方案
2014/03/27 职场文书
毕业典礼演讲稿
2014/05/13 职场文书
刑事辩护授权委托书格式
2014/10/13 职场文书
2014高三学生考试作弊检讨书
2014/12/14 职场文书
2015年办公室主任工作总结
2015/04/09 职场文书
邮政营业员岗位职责
2015/04/14 职场文书
捐款仪式主持词
2015/07/04 职场文书
2016年优秀党员教师先进事迹材料
2016/02/29 职场文书
详解Node.js如何处理ES6模块
2021/05/15 Javascript
Python selenium模拟网页点击爬虫交管12123违章数据
2021/05/26 Python