插件我就不多介绍了,在我整理的《常用JQuery插件整理》里介绍,也有示例。但在实际运用中,我发现一个插件无法达到的效果,语言比较难描述,看图说话吧

  发现什么问题没有,我做了个demo,虽然已经达到放大镜的效果了,但是大图的显示位置不是我想要的效果,我想要的效果就是,大图的位置和左边图的外框平行,并且始终保持在那个位置。可能有人会说,插件不是提供了xy轴偏移的设置么。是,但是如果图片切换了,尺寸和原先的不一样,xy轴的偏移量要怎么重新设置?最终可能就会出现这样的效果

  所以,为了实现我的需求,我就要对插件进行修改,好在插件提供了未压缩的代码,而且中文注释完整,所以我大致看了下源码,就修改出我需要的效果了,下面我细细说来:

  首先,通过观察,发现插件大图显示的位置是和小图平行的,就是小图显示在什么位置,大图就是与其平行,出现在它的右侧,所以第一步就是固定小图宽度,当然我们不能直接把小图宽高定死,这样会拉伸图片造成失真,所以只能从插件里动手脚。

  至于宽度要定多少,我打算是和小图外边那个框同宽,并且再长一点,达到这样的效果

  打开插件,找到这句代码:

var siw = outerWidth();//图片的输出宽度

  我们把它改为我们需要的值,因为我的外框是383px,再加上一点空隙,算10px,也就是393px,这样代码就修改成了:

var siw = 393;//图片的输出宽度

  这么一来,我们已经解决了大图x轴固定的效果了,那么如何让y轴也固定呢,那我们就需要调整y轴。因为我们图片默认是在右侧显示,所以就找到了这段代码:

case 'right':xPos += siw; // + opts.adjustX;
break;

  我们发现,在默认情况下,插件是不设置y轴的偏移的,也就是默认和小图持平。所以,我在这里做了点修改:

case 'right':xPos += siw; // + opts.adjustX;yPos = -(383-sImg.outerHeight())/2;
break;

  我想这个总不用我多解释了,就是实时计算出大图需要偏移的数值,外框高度减去图片高度除以2,就是大图需要向上的偏移量。

  修改完以上2个地方,已经能达到我要的效果了,当然为了小图在外框中始终处于居中的位置,我也是通过插件来控制的,先看下底下三张小图切换的代码:

<a href='304327508.jpg' class='cloud-zoom-gallery' rel="useZoom:'zoom',smallImage:'s_304327508.jpg',marginTop:84,marginLeft:0"> <img src="s_304327508.jpg" width="50" />
</a><a href='1234567890.jpg' class='cloud-zoom-gallery' rel="useZoom:'zoom',smallImage:'s_1234567890.jpg',marginTop:0,marginLeft:22"> <img src="s_1234567890.jpg" height="50" />
</a><a href='123.jpg' class='cloud-zoom-gallery' rel="useZoom:'zoom',smallImage:'s_123.jpg',marginLeft:148,marginTop:137"> <img src="s_123.jpg" height="50" />
</a>

  看下rel参数里,我增加了marginLeft和marginTop,这两个数值的目的就是让小图在外框内居中,当然插件里我们也要对其进行点修改,增加了一句:

$(this).bind('click', $(this), function (event) {......$('#' + data.useZoom).css({'marginTop':event.data.data('relOpts').marginTop,'marginLeft':event.data.data('relOpts').marginLeft});......
});

  至此,插件已经全部修改完,注意点有二:一、小图的尺寸不能超过外框,也就是在处理图片的时候必须按比例缩放。因为我们公司自己制作的图片上传插件有这功能,所以我只需设置下缩略图的宽高就行;二、marginLeft和marginTop必须手动计算,这个虽然不难,就是麻烦点,计算方式和计算y轴偏移量同理。

  最后给个demo下载地址吧:点击下载

转载于:https://www.cnblogs.com/hooray/archive/2011/11/28/2265714.html

用cloud-zoom做一个仿淘宝的宝贝放大镜查看功能相关推荐

  1. 【每日一练】原生js仿淘宝主图放大镜功能,附学习源码

    在我们的项目中,经常会遇到各种功能效果的实现,对于每一项功能的实现方式,都有很多种,这些实现方式没有好坏之分,只有适合与否,但是我个人建议,如果项目急就选择自己擅长的方式实现,比较完成工作更加重要嘛. ...

  2. js仿淘宝主图放大镜功能

    js仿淘宝主图放大镜功能 演示地址 下载地址

  3. 淘气网(一个仿淘宝的购物网站)

    主页: 登录界面: 商品详情: 商家主页: JQ+Bootstrap+纯手打 github : https://github.com/yotcap/taoqiNet-imitationTaobao

  4. 使用react 写一个 仿淘宝 图片放大镜效果

    效果图 人狠话不多,先上效果图,看看是不是各位想要的再往下看 使用方法 import React, { Component } from "react"; import Image ...

  5. Android仿淘宝详情页面viewPager滑动到最后一张图片跳转的功能

    需要做一个仿淘宝客户端ViewPager滑动到最后一页,再拖动的时候跳到详情的功能,刚开始我也迷糊了,通过查阅相关资料发现有好多种实现方法,下面小编给大家分享实例代码,感兴趣的朋友一起看看吧 需要做一 ...

  6. PHP仿淘宝网站程序设计

    PHP仿淘宝网站程序设计 在学习了PHP相关知识后利用其完成了一个仿淘宝网站界面,以下是相应的屏幕截图 (详细代码请联系我QQ:2186527424) 首先,进入登陆界面,在没有账户的情况下,点击右下 ...

  7. Android仿淘宝、京东Banner滑动查看图文详情

    文章目录 写在前面 效果图 原理分析 核心代码 源码地址 写在前面 本文基于 ViewPager2 实现的 Banner 效果,进而实现了仿淘宝.京东Banner滑动至最后一页时继续滑动来查看图文详情 ...

  8. java B2B2C 仿淘宝电子商城系统-Spring Cloud Eureka参数配置项详解

    Eureka涉及到的参数配置项数量众多,它的很多功能都是通过参数配置来实现的,了解这些参数的含义有助于我们更好的应用Eureka的各种功能,下面对Eureka的配置项做具体介绍,供大家参考. 需要JA ...

  9. java B2B2C Springcloud仿淘宝电子商城系统-spring cloud 框架原理

    我们从整体来看一下Spring Cloud主要的组件,以及它的访问流程 需要JAVA Spring Cloud大型企业分布式微服务云构建的B2B2C电子商务平台源码 一零三八七七四六二六 1.外部或者 ...

最新文章

  1. 让Dev-C++运行C++程序的控制台窗口等待查看运行结果
  2. 如何在Pycham中安装插件,以及Pycham中常用的插件
  3. 团队nabcd(校园大事件)
  4. (3)-JSONObject的过滤设置
  5. Python编程基础:第一节 变量Variables
  6. 重磅!6.7亿美元!F5喜提开源服务器Nginx
  7. c4d打开没反应_掌握这3种C4D技巧,线框渲染效果图也就几秒的事
  8. Spark 1.2 Standalone Mode 单机安装
  9. LeetCode 2008. 出租车的最大盈利(DP)
  10. Fastlane-iOS(调研篇)
  11. JNA调用DLL函数遇到的几个问题
  12. java ajax框架_ajax框架之 zk -demo1
  13. php简化URL路径,thinkphp框架实现路由重定义简化url访问地址的方法分析
  14. Spring源码阅读 —— 一文看懂AOP的流程
  15. 如何彻底卸载Mysql数据库软件
  16. ArcCatalog不能预览地图服务
  17. cad断点快捷键_cad打断快捷键(cad十字路口路口怎么画)
  18. 12306抢票软件实现(二)
  19. PyTorch深度学习(B站刘二大爷)第九讲 多分类问题
  20. CocosCreator播放spine动画

热门文章

  1. keras学习笔记-黑白照片自动着色的神经网络-Beta版
  2. clion windows安装
  3. Matlab线性/非线性规划优化算法(5)
  4. hikari数据源配置类_SpringBoot多数据源配置详解
  5. 图像处理-空间域锐化滤波
  6. jQuery中each的用法之退出循环和结束本次循环
  7. 用Python操作MySQL(pymysql)
  8. luogu_1495【题解】中国剩余定理
  9. UE4使用自定义字体
  10. JavaHelp 开发系统帮助(二)