JQuery : Light Box

เมื่อกดที่ (pic) จะแสดงรูปภาพแบบค่อย ๆ แสดงและสีจะเนียนเป็นสีดำ  และเมื่อกดที่ภาพ ภาพก็จะปิดแบบเนียน ๆ ดังภาพด้านล่างสุด

script.js

$(document).ready(function(){
$('a.lightbox').click(function(e) {
$('body').css('overflow-y', 'hidden'); // hide scrollbars!

$('<div id="overlay"></div>')
.css('top', $(document).scrollTop())
.css('opacity', '0')
.animate({'opacity': '0.5'}, 'slow')
.appendTo('body');

$('<div id="lightbox"></div>')
.hide()
.appendTo('body');

$('<img>')
.attr('src', $(this).attr('href'))
.load(function() {
positionLightboxImage();
})
.click(function() {
removeLightbox();
})
.appendTo('#lightbox');

return false;
});
});

function positionLightboxImage() {
var top = ($(window).height() - $('#lightbox').height()) / 2;
var left = ($(window).width() - $('#lightbox').width()) / 2;
$('#lightbox')
.css({
'top': top + $(document).scrollTop(),
'left': left
})
.fadeIn();
}

function removeLightbox() {
$('#overlay, #lightbox')
.fadeOut('slow', function() {
$(this).remove();
$('body').css('overflow-y', 'auto'); // show scrollbars!
});
}

lightbox.css

#overlay {
position: fixed;
top: 0;
left: 0;
height: 100%;
width: 100%;
background: black url(../../css/images/spinner.gif) no-repeat scroll center center;
}

#lightbox {
position: fixed;
}

----------------------

index.html

<!doctype html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>StarTrackr!</title>

<link rel="stylesheet" href="../../css/base.css" type="text/css" media="screen" charset="utf-8" />
<link rel="stylesheet" href="lightbox.css" type="text/css" media="screen" charset="utf-8" />

<script src="../../lib/jquery-1.7.1.min.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<div id="container">
<div id="header">
<h1>StarTrackr!</h1>
</div>
<div id="content">
<h2>
Welcome!
</h2>
<div id="navigation">
<ul>
<li><a href="#">Home</a></li>
<li><a href="#">Buy Now!</a></li>
<li><a href="#">About Us</a></li>
<li><a href="#">Gift Ideas</a></li>
</ul>
</div>
<p id="intro">
Welcome to <strong>StarTrackr!</strong> the planet's premier celebrity tracking and monitoring service. Need to know where in the world the best bands, musicians or producers are within 2.2 square meters? You've come to the right place. We have a very special special on B-grade celebs this week, so hurry in!
</p>
<p id="disclaimer">
Disclaimer! This service is not intended for the those with criminal intent. Celebrities are kind of like people so their privacy should be respected.
</p>
<div id="news">
<h2>Latest News</h2>
<p>
Which member of the seminal calypso/lectro band <em>C&amp;C Music Sweatshop</em> was spotted last night at <em>Dirt</em>, the trendy New York restaurant that serves only food caught and retrieved by the chef's own hands?
<span class="spoiler">Yes! It's the ever-effervescent, <em>Glendatronix</em>!</span>
</p>
<p>Who lost their recording contract today? <span class="spoiler">The Zaxntines!</span></p>
</div>
<div id="celebs">
<h2 class="heading">Our Celebrities</h2>
<p class="info">
We have an ever changing roster of newly chipped celebrities. But it can take as little as a week for the little critters to realise they've been tagged - so you have to be fast!
</p>
<table class="data">
<thead>
<tr>
<th>ID</th>
<th>Name</th>
<th>Occupation</th>
<th>Approx. Location</th>
<th>Price</th>
</tr>
</thead>
<tbody>
<tr>
<td>203A</td>
<td>Johny Stardust (<a href="../../images/johnny_400.jpg" class="lightbox">pic</a>)</td>
<td>Front-man</td>
<td>Los Angeles</td>
<td>$39.95</td>
</tr>
<tr>
<td>141B</td>
<td>Beau Dandy (<a href="../../images/beau_400.jpg" class="lightbox">pic</a>)</td>
<td>Singer</td>
<td>New York</td>
<td>$39.95</td>
</tr>
<tr>
<td>2031</td>
<td>Mo' Fat (<a href="../../images/mofat_400.jpg" class="lightbox">pic</a>)</td>
<td>Producer</td>
<td>New York</td>
<td>$19.95</td>
</tr>
<tr>
<td>007F</td>
<td>Kellie Kelly (<a href="../../images/kellie_400.jpg" class="lightbox">pic</a>)</td>
<td>Singer</td>
<td>Omaha</td>
<td>$11.95</td>
</tr>
<tr>
<td>8A05</td>
<td>Darth Fader (<a href="../../images/fader_400.jpg" class="lightbox">pic</a>)</td>
<td>DJ</td>
<td>London</td>
<td>$19.95</td>
</tr>
<tr>
<td>6636</td>
<td>Glendatronix (<a href="../../images/glenda_400.jpg" class="lightbox">pic</a>)</td>
<td>Keytarist</td>
<td>London</td>
<td>$39.95</td>
</tr>
</tbody>
</table>
</div>

<div id="comment">
<h2>Leave a comment</h2>
name:<br />
<input type="text" /><br/>
comment:<br/>
<textarea rows="5" cols="30" name="comment"></textarea>
</div>

<h2>Fine Print</h2>
<p id="fine_print">
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
</p>
</div>

<div id="footer">
<p>
&copy; Copyright 2010 CelebriTracker Productions
</p>
</div>
</div>
</body>
</html>