基于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 相关文章推荐
Jquery中&quot;$(document).ready(function(){ })&quot;函数的使用详解
Dec 30 Javascript
js去除输入框中所有的空格和禁止输入空格的方法
Jun 09 Javascript
Blocksit插件实现瀑布流数据无限( 异步)加载
Jun 20 Javascript
JavaScript中的6种运算符总结
Oct 16 Javascript
jQuery找出网页上最高元素的方法
Mar 20 Javascript
AngularJS 服务详细讲解及示例代码
Aug 17 Javascript
javascript常用的设计模式
Feb 09 Javascript
javascript  数组排序与对象排序的实例
Jul 17 Javascript
微信小程序实现两个页面传值的方法分析
Dec 11 Javascript
微信小程序实现类似微信点击语音播放效果
Mar 30 Javascript
Vue+ElementUI 中级联选择器Bug问题的解决
Jul 31 Javascript
Vue OpenLayer测距功能的实现
Apr 20 Vue.js
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(5) 类和对象
2010/02/16 PHP
php从右向左/从左向右截取字符串的实现方法
2011/11/28 PHP
php简单统计在线人数的方法
2016/05/10 PHP
完美解决phpdoc导出文档中@package的warning及Error的错误
2016/05/17 PHP
JavaScript获取网页中第一个链接ID的方法
2015/04/03 Javascript
浅谈javascript中基本包装类型
2015/06/03 Javascript
JS表格组件神器bootstrap table详解(强化版)
2016/05/26 Javascript
vue.js移动端app实战1:初始配置详解
2017/07/24 Javascript
VUE-Table上绑定Input通过render实现双向绑定数据的示例
2018/08/27 Javascript
在mpvue框架中使用Vant WeappUI组件库的注意事项【推进】
2019/06/09 Javascript
微信小程序 弹窗输入组件的实现解析
2019/08/12 Javascript
[03:34]2014DOTA2西雅图国际邀请赛 淘汰赛7月15日TOPPLAY
2014/07/15 DOTA
python实现探测socket和web服务示例
2014/03/28 Python
Python爬取读者并制作成PDF
2015/03/10 Python
python字典键值对的添加和遍历方法
2016/09/11 Python
最近Python有点火? 给你7个学习它的理由!
2017/06/26 Python
pip命令无法使用的解决方法
2018/06/12 Python
使用pip发布Python程序的方法步骤
2018/10/11 Python
Python爬虫文件下载图文教程
2018/12/23 Python
python pcm音频添加头转成Wav格式文件的方法
2019/01/09 Python
django-rest-framework解析请求参数过程详解
2019/07/18 Python
Python配置文件处理的方法教程
2019/08/29 Python
Python操作Excel工作簿的示例代码(\*.xlsx)
2020/03/23 Python
澳大利亚工具仓库:Tools Warehouse
2018/10/15 全球购物
碧欧泉Biotherm加拿大官方网站:法国高端护肤品牌
2019/10/18 全球购物
德国购买门票网站:ADticket.de
2019/10/31 全球购物
zooplus德国:便宜地订购动物用品、动物饲料、动物食品
2020/05/06 全球购物
怎么写好自荐信
2013/10/30 职场文书
项目经理的岗位职责
2013/11/23 职场文书
青年创业培训欢迎词
2014/01/08 职场文书
小学毕业典礼演讲稿
2014/09/09 职场文书
反对四风问题自我剖析材料
2014/09/29 职场文书
涉外离婚协议书怎么写
2014/11/20 职场文书
观看建国大业观后感
2015/06/01 职场文书
解决xampp安装后Apache无法启动
2022/03/21 Servers
Go web入门Go pongo2模板引擎
2022/05/20 Golang