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

简介:

 插件我就不多介绍了,在我整理的《常用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下载地址吧:点击下载





    本文转自胡尐睿丶博客园博客,原文链接:http://www.cnblogs.com/hooray/archive/2011/11/28/2265714.html,如需转载请自行联系原作者

相关文章
|
存储 网络协议 关系型数据库
计算机之服务器的分类?
计算机之服务器的分类?
|
12月前
|
弹性计算 监控 Serverless
云端问道9期方案教学
本文介绍了Serverless的发展历程及SAE(Serverless Application Engine)产品。首先,回顾了云计算从物理机、虚拟机到容器化再到Serverless的演进过程,并解释了Serverless的核心特点:无需管理底层资源、自动弹性伸缩、聚焦业务价值。接着,详细介绍了SAE的功能与优势,包括简化部署流程、支持多种弹性策略和提供丰富的运维工具。SAE的收费模式主要基于CPU和内存使用量,辅以请求数和流量计费,用户可以选择按量付费或预付费资源包。最后,通过极氪汽车、南瓜电影、视野数科和SKG等实际案例,展示了SAE在不同行业的应用效果。
300 44
|
12月前
|
人工智能 自然语言处理 Java
《Java 与 OpenAI 协同:开启智能编程新范式》
本文探讨了如何通过Java API调用OpenAI模型,结合两者优势开拓智能化应用。Java具备跨平台性、稳定性和丰富类库,而OpenAI的GPT等模型拥有强大的语言处理能力。文章详细介绍了准备工作、请求构建与响应解析、优化调用及错误处理,并展示了智能客服、内容生成和数据分析等领域的实际应用案例,展望了未来更多拓展方向,如智能家居和金融科技。这一结合为开发者带来无限创新可能。
291 12
|
12月前
|
人工智能 安全 前端开发
《主动式智能导购 AI 助手构建》解决方案评测
在部署《主动式智能导购 AI 助手构建》解决方案时,需关注以下四方面: 1. **引导与文档支持**:官方应提供细致、易懂的引导步骤,涵盖环境搭建、模块配置及常见问题解答。遇到错误及时截图反馈。 2. **原理与架构理解**:深入探究智能导购的工作原理和系统架构,从前端到后端各层运作机制,明确模块职责与扩展性。 3. **关键技术洞察**:理解百炼大模型和函数计算的应用,确保其适配场景并高效运行,通过截图反馈技术难题。 4. **生产环境评估**:评估方案在实际业务中的适用性,如安全防护和数据接入指导,确保高并发下的稳定性和全面性。 认真评测这些要点,助力方案持续优化。
193 11
|
12月前
|
数据可视化 Python
Seaborn 教程
Seaborn 教程
189 5
|
12月前
|
运维 监控 持续交付
自动化运维在现代数据中心的应用与实践####
本文探讨了自动化运维技术在现代数据中心中的应用现状与实践案例,分析了其如何提升运维效率、降低成本并增强系统稳定性。通过具体实例,展示了自动化工具如Ansible、Puppet及Docker在环境配置、软件部署、故障恢复等方面的实际应用效果,为读者提供了一套可参考的实施框架。 ####
|
12月前
|
JSON 前端开发 JavaScript
Highcharts 配置选项详细说明
Highcharts 配置选项详细说明
148 2
|
JSON API 数据格式
Amazon商品详情API,json数据格式示例参考
亚马逊商品详情API接口返回的JSON数据格式通常包含丰富的商品信息,以下是一个简化的JSON数据格式示例参考
|
机器学习/深度学习 算法 5G
基于MIMO系统的SDR-AltMin混合预编码算法matlab性能仿真
基于MIMO系统的SDR-AltMin混合预编码算法通过结合半定松弛和交替最小化技术,优化大规模MIMO系统的预编码矩阵,提高信号质量。Matlab 2022a仿真结果显示,该算法能有效提升系统性能并降低计算复杂度。核心程序包括预编码和接收矩阵的设计,以及不同信噪比下的性能评估。
290 3
|
监控 安全 搜索推荐
新手指南:Google邮箱注册全过程步骤教学
对于从事外贸、需要与外国客户或朋友沟通的小伙伴来说,拥有一个Google账号(也就是Gmail账号,下文统一用Google邮箱来表述)至关重要!