zoukankan      html  css  js  c++  java
  • 发布一款仿天猫产品放大镜JQuery插件

    效果如下图:

      1、原图

    2、放大镜效果:

    插件源码如下:

    /*
    *
    * JQUERY 简洁无极放大镜插件-zoomer
    * Author:盛世游侠
    * QQ:418873053
    * Date:2013-11-22
    *
    */
    (function($) {
    $.fn.zoomer = function(o){
        o = $.extend({
            pic:null,//原图img的容器
            leftImg:null,//原图img本身
            drag:null,//原图img选看区
            bigpic:null,//大图img的容器
            box:null,//大图img本身
            //img_zoom参数是指放大的倍数,取值范围从1到无穷大,可以取小数。
            //img_zoom参数决定了大图长和宽,以及大图显示区域的长和宽。该参数可以自己设置,也可以默认,如果大图与原图不是同一张图,建议默认。
            img_zoom:o.box.innerWidth()/o.leftImg.innerWidth()  
        }, o || {});
    
        o.pic.mouseout(function(){
            o.drag.hide();
            o.bigpic.hide();
        });
        //重置大图宽和高,使其与原图成一定比例
        o.box.width(o.leftImg.width()*o.img_zoom);
        o.box.height(o.leftImg.height()*o.img_zoom);
        //原图选看区移动事件函数
        o.pic.mousemove(function(e){
            o.drag.show();
            o.bigpic.show();
            
            //重置大图显示区长和宽与原图的选看区长和宽成一定比例
            o.bigpic.width(o.drag.width()*o.img_zoom);
            o.bigpic.height(o.drag.height()*o.img_zoom);
            
            //原图选看区的实时位置(原图选看区在HTML文档中的实时left和实时top)
            var drag_x=e.pageX - o.pic.offset().left-o.drag.innerWidth()/2;
            var drag_y=e.pageY -o.pic.offset().top-o.drag.innerHeight()/2;
            
            //使原图选看区的实时位置不超出原图的边界
            if (drag_x<0){drag_x=0;}
            if (drag_x>o.pic.width()-o.drag.width()) {drag_x=o.pic.width()-o.drag.width()};
            if (drag_y<0){drag_y=0;}
            if (drag_y>o.pic.height()-o.drag.height()) {drag_y=o.pic.height()-o.drag.height()};
            
            //实时设置原图选看区在原图中的位置,这里将jQuery对象转换为了Dom对象然后赋值,所以需要注意drag.style.left要有‘px’单位。
            o.drag.get(0).style.left=drag_x+'px';
            o.drag.get(0).style.top=drag_y+'px';
            
            //实时设置大图在大图显示区域中的卷动值scrollLeft和scrollTop
            o.bigpic.scrollLeft(drag_x*o.img_zoom);
            o.bigpic.scrollTop(drag_y*o.img_zoom);    
        });
    };
    })(jQuery);

    配套的html代码如下:

        <div class="showimg">
            <div id="bigimg" class="bigimg">
                <a href="images/upload/p2_01.gif"><img src="images/upload/p2_01.gif" id="leftImg" title="bigimg" /></a>
                <div id="drag"><!--放大镜图标--></div>
            </div>
        
            <div class="bigpic" id="bigpic"><img id='box'src="images/upload/p2_01.gif"></div>
            
            <div class="litimg">
            <a class="hover_a" href="#"><span><b></b></span><img src="images/upload/p2_01.gif" /><u></u></a>
            <a href="#"><span><b></b></span><img src="images/upload/p19_04.gif" /><u></u></a>
            <a href="#"><span><b></b></span><img src="images/upload/index_17.jpg" /><u></u></a>
            </div>
        </div>

    配套的插件调用代码:

    <script type="text/javascript">
    /*初始化插件*/
    $().zoomer({
                pic:$('#bigimg'),
                bigpic:$('#bigpic'),
                box:$('#box'),
                drag:$('#drag'),
                leftImg:$('#leftImg')
    });    
    </script>

    然后我们给它加上一个点击小图切换对应大图的功能:

    <script type="text/javascript">
    
    /*点击小图片切换大图片*/
    $(function(){
        $('.litimg a').click(function(){
            var litsrc = $(this).children('img').attr('src');
            $('.showimg #bigimg #leftImg').attr('src',litsrc);
            $('.showimg .bigpic #box').attr('src',litsrc);
        });
    });
    </script>
  • 相关阅读:
    使用dom4j 解析xml
    xml schema 建立xml文档
    xml dtd 约束建立xml文档
    DBCP 连接池的使用
    c++面向过程和面向对象-C++编译器是如何管理类和对象的
    c++读取文本文件
    一个范围的两个数进行数位的累加,实现对两个数num1和num2的数位和相加
    C++批量注释代码段取消注释代码段快捷键
    利用MATLAB截取一张复杂图片中想要的区域
    python学习之路系列
  • 原文地址:https://www.cnblogs.com/macliu/p/3608303.html
Copyright © 2011-2022 走看看