2012-01-05 72 views
0

我正在建造我自己的圖像庫,像fancyboxjquery gallery like fancybox

參見:http://snabbdesign.com/stack/stack.html

我有淡出,並在#gallery一些問題。有時背景(#gallery)會在圖像之前淡出。

也有些時候.gallery_image不會被集中,因爲它應該。

請幫忙!

<!DOCTYPE html> 
<html> 
<head> 
<meta charset="utf-8" /> 
<title>Untitled Document</title> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
<style type="text/css"> 
body{ 
margin:0; 
} 
#gallery{ 
width:100%; 
height:100%; 
position:fixed; 
left:0; 
top:0; 
background:#000; 
opacity:0.95; 
display:none; 
} 
.gallery_image{ 
width:auto; 
height:auto; 
position:fixed; 
left:0; 
top:0; 
} 
#gallery_left,#gallery_right{ 
position:fixed; 
height:100px; 
width:100px; 
top:50%; 
margin-top:-50px; 
background:#f00; 
cursor:pointer; 
display:none; 
} 
#gallery_left{ 
left:0; 
} 
#gallery_right{ 
right:0; 
} 
</style> 
</head> 
<body> 
<div id="ji"> 
<img src="1.png"> 
<img src="2.png"> 
</div> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.min.js"></script> 
<script> 
$(document).ready(function() { 
    var $gallery_loaded = false, 
     height_of_window = $(window).height(), 
     width_of_window = $(window).width(), 
     max_height = height_of_window - 100, 
     max_width = width_of_window - 100, 
     $ji_img = $('#ji img'); 
    $ji_img.css('cursor', 'pointer'); 
    $ji_img.click(function() { 
     var position_of_image = $(this).index(); 
     if (!$gallery_loaded) { 
     $gallery_loaded = true; 
     $('body').append('<div id="gallery"></div>'); 
     $ji_img.each(function() { 
      var big_src = $(this).attr("src").match(/[^\.]+/) + "-big.png"; 
      $('body').append('<img style="display:none" class="gallery_image" src="' + big_src + '" />'); 
     }); // end each 
     $('.gallery_image').each(function() { 
      var $this = $(this); 
      height_of_gallery_image = $this.height(); 
      width_of_gallery_image = $this.width(); 
      if (width_of_gallery_image >= max_width) { 
       $this.css({ 
        'max-width': max_width + 'px' 
       }) 
      } 
      if (height_of_gallery_image >= max_height) { 
       $this.css({ 
        'max-height': max_height + 'px' 
       }) 
      } 
      margin_top = (height_of_window - $this.height())/2; 
      margin_left = (width_of_window - $this.width())/2; 
      $this.css({ 
       'margin-top': margin_top + 'px', 
       'margin-left': margin_left + 'px' 
      }) 
     }); // end each 
     $('body').append('<div id="gallery_left"></div><div id="gallery_right"></div>'); 
     } //end if gallery_loaded 
     $('#gallery').fadeIn(500); 
     $('#gallery_left,#gallery_right').delay(1000).fadeIn(500); 
     $('.gallery_image').eq(position_of_image).delay(500).fadeIn(500) 
     $('#gallery').click(function() { 
     $('.gallery_image').fadeOut(500) 
     $('#gallery_left,#gallery_right').fadeOut(500); 
     $('#gallery').delay(500).fadeOut(500); 
     }); 
    }); // end click function 
}); // end document redy 
</script> 
</body> 
</html> 
+0

嘗試複製點擊圖像。然後點擊正常幾次... – Hakan 2012-01-05 09:22:19

回答

0

1)不會發生這種情況對我來說,但如果這樣做,我建議你看看

2)使用.outerHeight()和.outerWidth()代替.height( )和.width()

+0

謝謝redmoon7777,爲什麼使用outerHeight()? – Hakan 2012-01-05 09:50:54

+0

,因爲它會返回包括邊距,填充,邊框在內的「右」高度。您可以在這裏閱讀更多關於它的信息。 http://api.jquery.com/outerHeight/ – redmoon7777 2012-01-05 17:50:42

+0

所以它做的伎倆? – redmoon7777 2012-01-05 17:51:30