放大缩小到多张照片

时间:2011-10-07 10:48:06

标签: javascript jquery html css

我想点击原始照片时进行照片缩放。
我已使用下面的代码。
当我点击照片时,我很好,然后出现缩放图像 但是作为我的程序要求,我的网页上有多张照片 所以当我点击第一张照片时,这张照片会变大 然后我需要再次点击这张照片,以使这张照片变得正常 这是我的程序代码流。

让我们说用户忘记点击当前放大照片,使其再次变为正常尺寸 让我们说它还在扩大 然后用户单击另一张照片进行缩放 此时,用户想要放大的照片不会变大 因为第一张照片仍在放大。

这是我的问题。

所以

1)当用户点击另一张照片进行缩放时,我怎能知道其中一张照片仍然放大 2)如果jquery代码可以知道这种情况,请告诉我 3)然后,如果jquery可以知道这种情况,我怎么能删除用户忘记点击的当前放大照片,以便再次正常尺寸。
4)我应该将哪些代码添加到我当前的jquery代码中,请让我知道。

<script type="text/javascript" src="jquery-1.6.4.js"></script>
<script type="text/javascript" src="jquery.easing.1.3.js"></script>
<script type="text/javascript" src="jquery.quickZoom.1.0.js"></script>
<script tyle="text/javascript">     
        $(document).ready(function() {          
            $('.OrignialImage').quickZoom({
                zoom: 4,
                speedIn: 500,
                speedOut: 200,
                easeIn:'easeOutBack',
                titleInSpeed: 200       
            });             

        });
</script>

..................

.OrignialImage{width:150px; height:150px;}
.HtmlTableHeight{width: 160px; height: 160px;}
.quickZoom-hoverShadow {-moz-box-shadow:0 0 10px 0 #000;
-webkit-box-shadow:0 0 10px 0 #000;
box-shadow:0 0 10px 0 #000;}

..................

<table border="1" height="1000px" cellpadding="0" cellspacing="0">
        <tr class="HtmlTableHeight" ><td><img src="images/C003.jpg" alt="title" class="OrignialImage" /></td></tr> 
        <tr class="HtmlTableHeight" ><td><img src="images/C003_2.jpg" alt="title" class="OrignialImage" /></td></tr> 
        <tr class="HtmlTableHeight" ><td><img src="images/C003_3.jpg" alt="title" class="OrignialImage" /></td></tr> 
        <tr class="HtmlTableHeight" ><td><img src="images/C003_4.jpg" alt="title" class="OrignialImage" /></td></tr> 
        <tr class="HtmlTableHeight" ><td><img src="images/C003.jpg" alt="title" class="OrignialImage" /></td></tr> 
        <tr class="HtmlTableHeight" ><td><img src="images/C003_3.jpg" alt="title" class="OrignialImage" /></td></tr> 
    </table>

..................

/*
 * quickZoom 0.1.0 - JavaScript Image viewer
 * Copyright (c) 2011 Louis Sawtell, contact@louis-sawtell.com, http://louis-sawtell.com
 *
 * I make modify his coding as my requirement.
*/

(function($) {
$.fn.quickZoom = function(options) {
    var thumbX, thumbY;
    var IsFinishedFirstClick = false;

    // define default values
    var defaults = {            
        shadow: true
    };
    // merge the defaults with given parameters
    var e = $.extend(defaults, options);
    // set $(this) to var to speed up code
    var myThis = $(this);

    var OriginalPictureTop = 0;
    var OriginalPictureLeft = 0;
    myThis.click(function(){

        if(IsFinishedFirstClick != true)
        {
            // this code for first time click to image.                             
            // assign vars to avoid overusing $(this)
            var target = $(this);

            OriginalPictureTop = target.offset().top;
            OriginalPictureLeft = target.offset().left;

            // get thumbnail dimensions
            thumbX = target.width();
            thumbY = target.height();

            // get zoomed dimensions
            var zoomX = thumbX*e.zoom;
            var zoomY = thumbY*e.zoom;

            // If the thumbnail doesn't represent the image aspect ratio..
            if (e.sqThumb) {
                // create img var to gather full size dimensions
                var img = new Image();
                img.src = target.attr("src");

                // get aspect ratio
                var ratio = img.height/img.width;
                // apply ratio
                zoomY = zoomY*ratio;
            }

            // this is the offset for the title
            var marginX = (zoomX-thumbX)/2;
            var marginY = (zoomY-thumbY)/2;

            // add z-index and optional shadow
            if (e.shadow) {target.addClass('quickZoom-hoverShadow');}
            target.css({'z-index':10});

            target.css({
                position: "fixed",
                top:10+"px",
                left:200+"px",                  
            })                      
            target.stop(true, false).animate({              
                width:zoomX+'px',
                height:zoomY+'px',              
            }, { 
                // This place for even which fire after animate.                    
            });
            IsFinishedFirstClick = true;
        }
        else
        {
            //this code for second click.                               
            var target = $(this);

            target.css({    
                position:"absolute",
                top:OriginalPictureTop+"px",
                left:OriginalPictureLeft+"px",                  
            })
            target.stop(true, false).animate({                  
                width: thumbX+'px',
                height: thumbY+'px',                    
            }, {
                duration: e.speedOut,
                easing: e.easeOut,
                complete: function() {
                    target.css({'z-index':1});
                }
            });

            target.removeClass('quickZoom-hoverShadow');
            target.css({'z-index':2});

            IsFinishedFirstClick = false;
            OriginalPictureTop = 0;
            OriginalPictureLeft = 0;                
        }
    });     
    }
})(jQuery);

1 个答案:

答案 0 :(得分:1)

声明在运行缩放功能时设置的全局变量,然后在用户手动缩小缩放时清除。这样,您可以在用户单击缩放时进行检查,以查看用户是否无法手动缩小。

道歉,因为我没有机会检查这个(目前在我的午餐时间),但希望你能得到我所说的要点。

var zoomState; // Outside of the function to declare globally.

    $(document).ready(function() {          
        $('.OrignialImage').click(function() {

         if (zoomState != null) {
             // Auto decrease zoom.

         } else {

            $('.OriginalImage').quickZoom({
            zoom: 4,
            speedIn: 500,
            speedOut: 200,
            easeIn:'easeOutBack',
            titleInSpeed: 200       
        });   

           zoomState = $(this);  // Set zoomState.
        } // end if    
       });     

    });