ページに特定のサイズで表示したアイキャッチ画像をクリックすると、 Lightbox のようなモーダルウィンドウで拡大画像を表示する方法のメモ。
<?php if(has_post_thumbnail()): ?> <?php $thumbnail_id = get_post_thumbnail_id($post->ID); $src_info = wp_get_attachment_image_src($thumbnail_id, 'full'); $src = $src_info[0]; $width = $src_info[1]; $height = $src_info[2]; ?> <p class="thumbnail_photo"><a href="<?php echo $src; ?>"><?php the_post_thumbnail('m_size'); ?></a></p> <p class="full_size_link_width"><?php echo $width; ?></p> <p class="full_size_link_height"><?php echo $height; ?></p> <?php endif; ?> <div id="bg_layer"> <!--半透明のモーダルウィンドウの背景を表示する領域--> <!--/#bg_layer--></div> <div id="over_layer"> <!--拡大画像と「閉じる」ボタンを表示する領域--> <img class="lightboxlike" src="#" alt="" /><!--拡大画像--> <p class="close_button"><img src="<?php echo get_template_directory_uri(); ?>/images/close-trans.png" /></p> <!--/#over_layer--></div>
CSS の設定。
html, body { margin: 0; padding: 0; height: 100%; } #bg_layer { display: none; position: fixed; top: 0; left: 0; height: 100%; width: 100%; background: #000; opacity: 0.60; filter: alpha(opacity=60); z-index: 10; } #over_layer { display: none; position: fixed; top: 50%; left: 50%; z-index: 15; } /*---IE6 対策---*/ * html #bg_layer { position: absolute; } /*---IE6 対策---*/ * html #over_layer { position: absolute; } p.close_button { display: none; position: absolute; top: -10px; right: -10px; cursor: pointer; z-index: 20; } p.close_overLayer { z-index: 20; font-size: 11px; font-size: 1.1rem; color: #FFF; cursor: pointer; } p.full_size_link_width, p.full_size_link_height, { display: none; }
jQuery を使って以下を記述する。
$(‘p.thumbnail_photo a’).click(function() {
if($(‘#over_layer’).css(‘display’) == ‘none’) {
var full_size_link_width = $(‘p.full_size_link_width’).text();
var full_size_link_height = $(‘p.full_size_link_height’).text();
$(‘#bg_layer’).show();
$(‘#over_layer’).css({
marginTop: ‘-‘ + full_size_link_height/2 + ‘px’,
marginLeft: ‘-‘ + full_size_link_width/2 + ‘px’
});
$(‘img.lightboxlike’).attr(‘src’, $(this).attr(‘href’));
$(‘#over_layer, p.close_button’).show();
}
return false;
});
//IE6 対策
if($.browser.msie && $.browser.version<7) {
$(window).scroll(function() {
$('#bg_layer').get(0).style.setExpression('top', "$(document).scrollTop()+'px'");
$('#over_layer').get(0).style.setExpression('top',"($(document).scrollTop()+$(window).height()/2)+'px'");
});
}
//非表示にする(閉じる)処理
$('#bg_layer, p.close_button').click(function() {
$('#over_layer,#bg_layer ').hide();
});
[/code]