分享购物网站中常用的一款放大镜效果(产品细节展示)

发现程序猿写博客前都喜欢吐槽一下,也难怪,平时交流少了,内心积累了不少的骚气,是应该适当发泄一下。

哥要发泄了:目前在广州蜂众网效力,这是一家刚创立不久的公司,哥喜欢接触一些新公司,活力充足,发展机会也大。当然有机会去一些知名的大公司(腾讯,百度等),也是非常向往的,这样的镀金公司进去走一趟也学到不少东西。

公司目前做前端的就只有两个鸟人,而我就是其中一个,所以任务也挺多的。这也倒是其次,最主要的是在别人留下的烂摊子搅合,真有点心力交瘁。欣慰的是,在这大半年确实进步了不少,代码质量提高不少。

 

===============================================吐槽完毕分割线===================================================

 

今天要分享的是购物网站中常用的一款放大镜效果,效果图如下:

查看效果 源码下载

其实这些插件网上也很多,不过毕竟是自己做的插件,拿出来显摆显摆一下而已,这也是我继续从事IT事业的动力之一。

插件名: jQuery.imgzoom
兼容情况: IE6+ chrome Firefox (公司已放弃IE,这是一个明智的决定)
参数说明:
复制代码
var opts = {
    lensAuto: true,                    // 镜头高宽比例跟图片一致
    lensWidth: 120,                    // 镜头宽
    lensHeight: 120,                   // 镜头高
    scale: 4,                          // 放大几倍
    loading: 'images/loading.gif'      // 大图loading图
}
$('...').imgzoom(opts);
复制代码
功能说明:

1、图片宽高自适应

2、设置lensAuto参数,可使镜头和放大图的高宽比例与图片一致

3、对不符合要求放大图片的一些完善处理(如大图跟展示图一样大等情况)

 

功能不多,却花了我一天的时间,因为要做成插件,多考虑了一些兼容情况及优化了一下代码。在这过程中,以下几个点是花了不少时间思考的:

1、css:图片垂直居中,自己之前总结了网上的几种方案,却漏了最简单的那种(行高等于容器高度),项目中的代码如下:

div.sg_pbox{width:328px;height:328px;text-align: center;line-height: 328px;font-size: 0;}
div.sg_pbox img{max-width: 328px;max-height: 328px;vertical-align: middle;}

因为IE6不理解max-width,max-height,所以主要是这里不兼容IE6

2、JS:计算镜头和大图的移动,以及镜头和大图宽高比例与展示图一致,自问高中数学不错,没想到在这纠结了。

复制代码
calculate = function(dImg){ /*相关参数的计算*/
    var $img = $(dImg);
    imgL = $img.offset().left;
    imgT = $img.offset().top;
    imgW = dImg.offsetWidth;
    imgH = dImg.offsetHeight;

    if(lensAuto){
        if(imgW > imgH)    {
            lensW = opts.lensWidth;
            lensH = Math.ceil(imgH * lensW / imgW);
        }else{
            lensH = opts.lensHeight;
            lensW = Math.ceil(imgW * lensH / imgH);
        }    
    }

    viewerW = lensW * scale;
    viewerH = lensH * scale;
    maxW = imgW - lensW;
    maxH = imgH - lensH;
    halfW = lensW / 2;
    halfH = lensH / 2;
};
复制代码

插件不难,但涉及的一些js基础知识还是挺多的,非常适合新手练习。感兴趣者可以加群讨论(前端开发交流群:75701468)

插件基于公司的需求做成的,如有需求或发现BUG欢迎留言。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值