from
http://www.queness.com/post/152/simple-jquery-image-slide-show-with-semi-transparent-caption
1. HTML
My ultimate objective is - to keep the html as simple as possible.
So, the final product is as following. The first image has a class
called "show". Class show has higher z-index, so image with this class
will display on top, thus image with this class will always display on
top of the rest. The second thing you need to know is the DIV with
"caption" class. It has the highest z-index. That DIV will be used to
display the caption. The caption is retrieve from the REL attribute in
the img element. You can put html element in the REL attribute. Be
aware of extra padding and margin of the html elements you used. (eg
h1, p).
Have a look at the html code:
- <div id="gallery">
-
- <a href="#" class="show">
- <img src="images/flowing-rock.jpg" alt="Flowing Rock" alt="" title="" width="580" height="360" rel="<h3>Flowing Rock</h3>You can put html element
- inside the REL attribute."/></a>
- </a>
-
- <a href="#">
- <img src="images/grass-blades.jpg" alt="Grass Blades" alt="" title="" width="580" height="360" rel="<h3>Grass Blades</h3>description"/>
- </a>
-
- ......
- ......
- ......
-
- <div class="caption"><div class="content"></div></div>
- </div>
- <div class="clear"></div>
2
CSS
In this section, I declared a container #gallery for this image
slide show. The CSS for this tutorial is pretty straight foward, the
most importance thing is the z-index. You have to make sure the "show"
class z-index is lower than the "caption" z-index.
- body{
- font-family:arial
- }
-
- .clear {
- clear:both
- }
-
- #gallery {
- position:relative;
- height:360px
- }
- #gallery a {
- float:left;
- position:absolute;
- }
-
- #gallery a img {
- border:none;
- }
-
- #gallery a.show {
- z-index:500
- }
-
- #gallery .caption {
- z-index:600;
- background-color:#000;
- color:#ffffff;
- height:100px;
- width:100%;
- position:absolute;
- bottom:0;
- }
-
- #gallery .caption .content {
- margin:5px
- }
-
- #gallery .caption .content h3 {
- margin:0;
- padding:0;
- color:#1DCCEF;
- }
-
3. Javascript
Finally, the Javascript code. I have added comments in each line to explain what it does. My concept for this image slide show:
- Hide all the images
- Display the first image and caption
- Find the image with "show" class, and grab the next image using next() method
- Add "show" class to next image
- Animate the image (fadeout the current image, fadein next image)
- And, it repeats above steps over and over again
- $(document).ready(function() {
-
-
- slideShow();
-
- });
-
- function slideShow() {
-
-
- $('#gallery a').css({opacity: 0.0});
-
-
- $('#gallery a:first').css({opacity: 1.0});
-
-
- $('#gallery .caption').css({opacity: 0.7});
-
-
- $('#gallery .caption').css({width: $('#gallery a').find('img').css('width')});
-
-
- $('#gallery .content').html($('#gallery a:first').find('img').attr('rel'))
- .animate({opacity: 0.7}, 400);
-
-
- setInterval('gallery()',6000);
-
- }
-
- function gallery() {
-
-
- var current = ($('#gallery a.show')? $('#gallery a.show') : $('#gallery a:first'));
-
-
- var next = ((current.next().length) ? ((current.next().hasClass('caption'))? $('#gallery a:first') :current.next()) : $('#gallery a:first'));
-
-
- var caption = next.find('img').attr('rel');
-
-
- next.css({opacity: 0.0})
- .addClass('show')
- .animate({opacity: 1.0}, 1000);
-
-
- current.animate({opacity: 0.0}, 1000)
- .removeClass('show');
-
-
- $('#gallery .caption').animate({opacity: 0.0}, { queue:false, duration:0 }).animate({height: '1px'}, { queue:true, duration:300 });
-
-
- $('#gallery .caption').animate({opacity: 0.7},100 ).animate({height: '100px'},500 );
-
-
- $('#gallery .content').html(caption);
-
posted on 2009-08-21 10:08
桂湖山 阅读(578)
评论(0) 编辑 收藏 引用 所属分类:
jsp页面技术