javascript - 放大缩小到多张照片

标签 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);

最佳答案

声明一个全局变量,该变量在您运行缩放功能时设置,然后在用户手动缩小缩放时清除。这样您就可以在用户点击缩放时进行检查,以查看用户是否未能手动缩小。

抱歉,我没有机会检查这个(目前正在吃午饭),但希望你能理解我所说的要点。

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    
       });     

    });

关于javascript - 放大缩小到多张照片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7686212/

相关文章:

javascript - 从单元格内更改innerHTML

javascript - 如何使用 jQuery/JavaScript 复制和插入表行

jquery - 在页面的 ajax 加载部分上对 Video.js 播放器进行多次初始化

html - 将 Logo 向左移动几像素

javascript - JS 或 jQuery 更改表单对象的值时出现问题

javascript - 查找特定文本并添加 css

javascript - XMLHttpRequest.upload 进度事件仅适用于 IE

javascript - 如何在不刷新的情况下显示php传递的结果给ajax

html - Bootstrap 3 下拉导航 100% 宽度

html - 我的电子邮件中未显示 Google 字体