基于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 相关文章推荐
几个高效,简洁的字符处理函数
Apr 12 Javascript
js 数组克隆方法 小结
Mar 20 Javascript
jquery 操作DOM的基本用法分享
Apr 05 Javascript
js 去掉空格实例 Trim() LTrim() RTrim()
Jan 07 Javascript
jquery实现表单输入时提示文字滑动向上效果
Aug 10 Javascript
简单谈谈javascript中的变量、作用域和内存问题
Aug 30 Javascript
jQuery  ready方法实现原理详解
Oct 19 Javascript
Vue学习之路之登录注册实例代码
Jul 06 Javascript
js单页hash路由原理与应用实战详解
Aug 14 Javascript
React-Native中禁用Navigator手势返回的示例代码
Sep 09 Javascript
基于Web Audio API实现音频可视化效果
Jun 12 Javascript
vue配置型表格基于el-table拓展之table-plus组件
Apr 12 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中Date()时间日期函数的使用方法小结
2011/04/20 PHP
CodeIgniter使用phpcms模板引擎
2013/11/12 PHP
百度工程师讲PHP函数的实现原理及性能分析(三)
2015/05/13 PHP
详解thinkphp中的volist标签
2018/01/15 PHP
Javascript学习笔记2 函数
2010/01/11 Javascript
利用CSS、JavaScript及Ajax实现高效的图片预加载
2013/10/16 Javascript
jQuery自定义添加&quot;$&quot;与解决&quot;$&quot;冲突的方法
2015/01/19 Javascript
使用SVG基本操作API的实例讲解
2017/09/14 Javascript
JavaScript中如何判断一个值的类型
2017/09/15 Javascript
vue-cli 3.0 版本与3.0以下版本在搭建项目时的区别详解
2018/12/11 Javascript
微信小程序textarea层级过高的解决方法
2019/03/04 Javascript
vue基于better-scroll仿京东分类列表
2020/06/30 Javascript
vue 遮罩层阻止默认滚动事件操作
2020/07/28 Javascript
vue项目,代码提交至码云,iconfont的用法说明
2020/07/30 Javascript
微信小程序反编译的实现
2020/12/10 Javascript
详解Python中dict与set的使用
2015/08/10 Python
python psutil库安装教程
2018/03/19 Python
Python numpy实现二维数组和一维数组拼接的方法
2018/06/05 Python
Python使用pymysql从MySQL数据库中读出数据的方法
2018/07/25 Python
Python面向对象之类的内置attr属性示例
2018/12/14 Python
Python进阶之@property动态属性的实现
2019/04/01 Python
Python3.x+迅雷x 自动下载高分电影的实现方法
2020/01/12 Python
解决tensorflow打印tensor有省略号的问题
2020/02/04 Python
Django正则URL匹配实现流程解析
2020/11/13 Python
Python实现列表索引批量删除的5种方法
2020/11/16 Python
css3中background新增的4个新的相关属性用法介绍
2013/09/26 HTML / CSS
html5 初试 indexedDB(推荐)
2016/07/21 HTML / CSS
STUBHUB日本:购买和出售全球活动门票
2018/07/01 全球购物
蔻驰意大利官网:COACH意大利
2019/01/16 全球购物
玛蒂尔达简服装:Matilda Jane Clothing
2019/02/13 全球购物
信用社竞聘演讲稿
2014/05/16 职场文书
招标授权委托书样本
2014/09/23 职场文书
中国文明网向国旗敬礼寄语大全
2014/09/27 职场文书
无锡灵山大佛导游词
2015/02/09 职场文书
毕业晚宴祝酒词
2015/08/11 职场文书
Canvas绘制像素风图片的示例代码
2021/09/25 HTML / CSS