基于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源码]超长文章自动分页(客户端版)
Jan 09 Javascript
在IE,Firefox,Safari,Chrome,Opera浏览器上调试javascript
Dec 02 Javascript
JavaScript实现从数组中选出和等于固定值的n个数
Sep 03 Javascript
JavaScript设计模式之工厂模式和构造器模式
Feb 11 Javascript
用JavaScript实现对话框的教程
Jun 04 Javascript
数据分析软件之FineReport教程:[5]参数界面JS(全)
Aug 13 Javascript
举例讲解JavaScript中关于对象操作的相关知识
Nov 16 Javascript
JS HTML5实现拖拽移动列表效果
Aug 27 Javascript
node.js express安装及示例网站搭建方法(分享)
Aug 22 Javascript
AngularJS 支付倒计时功能实现思路
Jun 05 Javascript
微信小程序(订阅消息)功能
Oct 25 Javascript
VueCli生产环境打包部署跨域失败的解决
Nov 13 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
构建简单的Webmail系统
2006/10/09 PHP
PHP 获取远程文件内容的函数代码
2010/03/24 PHP
php对csv文件的读取,写入,输出下载操作详解
2013/08/10 PHP
PHP实现图片旋转效果实例代码
2014/10/01 PHP
PHP用反撇号执行外部命令
2015/04/14 PHP
PHP判断是手机端还是PC端 PHP判断是否是微信浏览器
2017/03/15 PHP
PHP实现的简单对称加密与解密方法实例小结
2017/08/28 PHP
PHP实现提高SESSION响应速度的几种方法详解
2019/08/09 PHP
PHP的Trait机制原理与用法分析
2019/10/18 PHP
IE Firefox 使用自定义标签的区别
2009/10/15 Javascript
解决表单中第一个非隐藏的元素获得焦点的一个方案
2009/10/26 Javascript
JS打印gridview实现原理及代码
2013/02/05 Javascript
jQuery性能优化28条建议你值得借鉴
2013/02/16 Javascript
JavaScript中判断整数的多种方法总结
2014/11/08 Javascript
js超时调用setTimeout和间歇调用setInterval实例分析
2015/01/28 Javascript
Jquery 垂直多级手风琴菜单附源码下载
2015/11/17 Javascript
jquery+json实现数据二级联动的方法
2015/11/28 Javascript
原生JS实现旋转木马式图片轮播插件
2016/04/25 Javascript
JavaScript从0开始构思表情插件
2016/07/26 Javascript
javascript解析ajax返回的xml和json格式数据实例详解
2017/01/05 Javascript
vue组件三大核心概念图文详解
2019/05/30 Javascript
react MPA 多页配置详解
2019/10/18 Javascript
pyqt4教程之messagebox使用示例分享
2014/03/07 Python
学习Python selenium自动化网页抓取器
2018/01/20 Python
Python 查找list中的某个元素的所有的下标方法
2018/06/27 Python
Django logging配置及使用详解
2019/07/23 Python
PPP协议组成及简述协议协商的基本过程
2015/05/28 面试题
客房主管岗位职责
2013/12/09 职场文书
教学实习自我评价
2014/01/28 职场文书
个人股份转让协议书范本
2015/01/28 职场文书
三峡大坝导游词
2015/01/31 职场文书
2015教师节师德演讲稿
2015/03/19 职场文书
MySQL 5.7常见数据类型
2021/07/15 MySQL
MySQL基础快速入门知识总结(附思维导图)
2021/09/25 MySQL
Python中的tkinter库简单案例详解
2022/01/22 Python
Windows server 2012搭建FTP服务器
2022/04/29 Servers