这个功能时很常见的功能,也很简单!

首先我们来看一看这个效果如下图:

功能分析:

①作为商城的放大镜, 我们需要注意的是, 准备的是两张图片.

一张图片是商品图[左图], 另一张图片是大图[其实就是被放大后暂时的图片];

②镜片, 在商品图上, 当鼠标放上去出现的"小镜片", 如图中的绿色透明部分.

我们需要知道, 且必须知道, 我们要解决的问题是:

1. 放在商品上, 小镜片出现, 鼠标移动, 小镜片跟随移动.[且不超过商品区域]

2. 右侧出现大图, 且大图移动.

3. 保证小镜片和右侧的展示区域框大小有一定关系.

设计思路:

首先要准备两张图片(一个是小的预览图,一个是很大的高清图)
然后写一个DIV,里面放一个IMG和一个DIV

然后给img绑定mousemove事件,在事件内写下如下实现的代码

首先计算出鼠标在这个img标签上的相对坐标,如果是在img的最左上边。坐标则为0,0
然后吧这个DIV内部的小DIV固定为100*100大小,然后再就是计算它的比例。
然后再把这个DIV的背景设置成那个大图,然后再用背景的绝对定位进行移动即可.

代码如下[没有精简的代码]:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"><title>商城放大镜特效</title><style>*{padding:0;margin:0;}img {border:none;outline: none;display: block;margin:auto;}.big,.small{width:340px;height:255px;border:1px solid black;float:left;position: relative;}.big{/*大图,超出部分溢出隐藏*/width:200px;height:200px;overflow: hidden;display: none;margin-left: 5px;}.small .move{/*小镜片*/width:120px;height:120px;background-color: green;opacity:0.4;filter:alpha(opacity=40);position: absolute;z-index: 1;top:0;left:0;display: none;}.box{border:1px solid red;height:400px;width:800px;margin:auto;padding-top: 45px;padding-left: 45px;}.big img{width:800px;height:600px;position: absolute;top:0;left:0;}</style>
</head>
<body><div class="box"><div class="small"><img src="data:images/s.jpg" width="340" height="255" alt="" /><i class="move"></i></div><div class="big"><img src="data:images/b.jpg" width="800" height="600" alt="" /></div></div><script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script><script>$(function () {//1. 放在图片上出现小镜片//鼠标距离浏览器左边的距离//small距离浏览器左边的距离//小镜片的距离100/2var move = $(".move");var small = $(".small");var jw = move.width();//小镜片的宽度var jh = move.height();//小镜片的高度var sW = small.width();//展示框的宽var sH = small.height();//展示框的高var sL = small.offset().left;//small距离里浏览器左侧距离var sT = small.offset().top;//small距离浏览器顶部的距离var big = $(".big");var showImg = big.find('img');var bW = showImg.width();var bH = showImg.height();var mW = (bW/sW)*jw;var mH = (bH/sH)*jh;
            big.css({"width":mW,"height":mH});var multiple = (bW/sW);//右侧区域和小镜片的关系
            $(".small").bind("mousemove",function (e){move.show();big.show();var mL = e.pageX;//鼠标距离浏览器左侧距离var mT = e.pageY;//鼠标距离浏览器顶部的距离var left = mL-sL - (jw/2);var top = mT - sT - (jh/2);
                left = left<= 0 ? 0 : left;left = left>= (sW-jw) ? (sW-jw) : left;top = top <= 0 ? 0 : top;top = top >= (sH-jh) ? (sH-jh) : top;// console.log("left: "+left + "// top: "+top);
                move.css({"left":left,"top":top});showImg.css({"left":-left*multiple,"top":-top*multiple});//大图}).bind("mouseout",function () {move = $(".move").hide();big.hide();});});</script>
</body>
</html>

特别提示:

大图和小图之间的关系是倍数关系, 这样可以方便计算. 所以如果和前端配合时, 这一点有时容易被忽略掉.

转载于:https://www.cnblogs.com/Zell-Dinch/articles/4470653.html

jQuery(非插件)制作商城放大镜效果相关推荐

  1. 【jQuery】前端项目实践案例6——制作产品放大镜效果(仿京东淘宝图片效果)

    使用jQuery制作产品放大镜效果实现效果: 使用jQuery制作产品放大镜效果实现原理: 通过设置图像的 CSS 属性( left 和 top ),来实现图像的移动. 使用jQuery制作产品放大镜 ...

  2. 基于jQuery日历插件制作日历

    这篇文章主要介绍了基于jQuery日历插件制作日历的相关资料,需要的朋友可以参考下 来看下最终效果图吧: 是长得丑了一点,不要吐槽我-.- 首先来说说这个日历主要的制作逻辑吧: ·一个月份最多有31天 ...

  3. jQuery和CSS制作霓虹灯文字效果

    原文:jQuery和CSS制作霓虹灯文字效果 源代码下载地址:http://www.zuidaima.com/share/1607121521200128.htm

  4. 仿淘宝商品放大展示效果制作(放大镜效果)

    如果您觉得这篇文章有用,欢迎点赞收藏或有什么建议请在评论区留言,我看到后会第一时间回复的,谢谢! (分享时刻) mac上取色比较好用的小工具:啜色: 好用的截屏小工具:Snipaste (常用的一个功 ...

  5. 如何使用myFocus插件制作焦点图效果

    焦点图分有:flash焦点图  js焦点图  css焦点图  jQ焦点图(其中jQ焦点图以代码量少,实现功能成为首选): myFocus是一款专注于焦点图制作的js插件: 使用步骤:点击下载--Dem ...

  6. 【看完想不会都难系列教程】 - (1)使用CSS3+JQuery easing 插件制作绚丽菜单

    在本教程中,我们将创建一个独特的滑动框导航.这样做可以让有菜单的盒子滑出,并且弹出缩略图.在某些菜单项中我们还包含着有进一步链接的子菜单.取决于我们鼠标在菜单项上的停悬,子菜单将向左或向右滑动. 我们 ...

  7. unity17——布料插件制作旗子飘动效果

    1找到插件,按照上图调整后,选择edit constraints 点选后会出现下图界面 2.按照上图中文翻译,调整画笔,刷选你需要的点.动点与不动点.最后点击播放运行查看效果.

  8. jQuery SuperSlide插件制作72个种常用的网页特效

    SuperSlide2.1 超级滑动门72个扩展效果 我¥19买的,分享给大家希望大家学会感恩 "什么?20个基础效果+72个扩展效果,做到狗一 样,才19?!太不值了,大爷我给你99!&q ...

  9. 非插件实现回复可见效果

    介绍: 这个教程网上很多的,包括我也是从网上搬来的,但是网上的涉及文件太多,这里给大家推荐我修改的方法,希望能帮助到大家. 首先我们进入 / 网站根目录 /usr/themes/{主题名} ,然后按照 ...

  10. 13款jQuery图片放大镜效果代码

    jQuery商城网站商品放大镜查看效果代码 jquery图片放大镜效果制作变焦镜头图片放大查看代码 jQuery鼠标滑过图片放大镜效果_淘宝图片放大镜代码 jquery jqzoom仿京东商城商品详细 ...

最新文章

  1. Plotly可视化输出数据表格(table):简单表格、添加链接的表格
  2. Android N在通知栏上实现直接回复消息
  3. python3 AES 加解密
  4. 显卡测试软件3d mark,显卡评测工具3DMark跑分结果变了:可以直接PK同等配置
  5. SpringDataJpa备忘录
  6. Python numpy函数hstack() vstack() stack() dstack() vsplit() concatenate()
  7. 技术干货 | C++20 四大特性之一:Module 特性详解
  8. Linux应用服务导致系统负载过高问题排查
  9. 如何设置python的编码格式为utf-8
  10. A 子类继承父类,子类的构造函数会覆盖父类的构造函数
  11. nlp自然语言处理_不要被NLP Research淹没
  12. 两个结构体ifconf和ifreq
  13. java ==和=_Java ==和equals()的区别
  14. OpenCV中基本数据结构(4)_Rect
  15. ROS防止外网DDOS的最有效方法
  16. NGN学习笔记4——软交换中的协议2—Megaco/H.248
  17. Ajax Loading进度条gif在线生成网站Preloaders.net
  18. 湖仓一体在金融科技行业的实践
  19. hive中reduce类函数说明
  20. ssm+Vue计算机毕业设计学科竞赛管理(程序+LW文档)

热门文章

  1. TF-tf.keras.layers.Conv1D
  2. 【论文笔记】基于2-channel network的图片相似度判别-CVPR 2015
  3. 基于 snowNLP的微博评论数据情感分析
  4. java求解LeetCode题目,实现求解数组中的majority element
  5. JavaScrip内置对象
  6. HyperLeger Composer 重启 | 进入play ground | 进入 couchdb
  7. thinkphp判断本地环境是否为SAE
  8. php下载大文件不稳定,window_Apache2+PHP在Windows2000下不稳定解决方案,1  制作一个bat文件在计划 - phpStudy...
  9. PAT1104 Sum of Number Segments精度问题
  10. [Errno 256] No more mirrors to try.