2012-01-05 10 views
0

自分のイメージギャラリーを構築しています。fancyboxのように。fancyboxのようなJquery gallery

参照: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

答えて

0

1)これは私のために発生しませんが、それは私がお勧めしない場合は、

2)を見て.outerHeight()と.outerWidthを(使用)の代わりに.height( )と.width()

+0

ありがとうredmoon7777、なぜouterHeight()を使用しますか? – Hakan

+0

は、余白、パディング、ボーダーなどの「正しい」高さを返すため、ここで詳しく読むことができます。 http://api.jquery.com/outerHeight/ – redmoon7777

+0

だからトリックをしましたか? – redmoon7777