博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

超COOL的图片展示:jQuery实例

Posted on 2008-05-04 11:55  linFen  阅读(353)  评论(0编辑  收藏  举报
HTML 代码K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
引用:
<div id="photoShow">K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
    <div class="photo">K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
        <img src="p1.jpg" />K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
        <span>张娜拉,韩国的</span>K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
    </div>K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
    <div class="photo">K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
        <img src="p2.jpg" />K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
        <span>My Digital Story</span>K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
    </div>K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
    <div class="photo">K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
        <img src="p3.jpg" />K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
        <span>不知道是什么图来的</span>K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
    </div>K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
    <div class="photo">K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
        <img src="p4.jpg" />K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
        <span>我的Logo,Studio拼错了都不知道,汗一个。</span>K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
    </div>K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
    <div class="photo">K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
        <img src="p5.jpg" />K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
        <span>四季图吧这是,但我分不清夏和秋</span>K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
    </div>K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
    </div>K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
</div>
K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
然后我们写一个CSS来控制一下这个HTML的样式,CSS比较菜,将就吧,达到效果就好:K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
CSSK3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
引用:
#photoShow{}{K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
    border: solid 1px #C5E88E;K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
    overflow: hidden; /**//*图片超出DIV的部分不显示*/K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
    width: 580px;K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
    height: 169px;K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
    background: #C5E88E;K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
    position: absolute;K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
}K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
.photo{}{K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
    position: absolute;K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
    top: 0px;K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
    width: 490px;K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
    height: 169px;K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
}K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
.photo img{}{K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
    width: 490px;K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
    height: 169px;K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
}K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
.photo span{}{K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
    padding: 5px 0px 0px 5px;K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
    width: 490px;K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
    height: 30px;K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
    position: absolute;K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
    left: 0px;K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
    bottom: -32px; /**//*介绍内容开始的时候不显示*/K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
    background: black;K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
    filter: alpha(opacity=50); /**//*IE透明*/K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
    opacity: 0.5; /**//*FF透明*/K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
    color: #FFFFFF;K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
}
K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
完成上面的准备工作后,我们下面开始jQuery代码。K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
首先就是做一些初始化的工作:K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
引用:
$(document).ready(function(){K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
        var imgDivs = $("#photoShow>div");K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
        var imgNums = imgDivs.length; //图片数量K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
        var divWidth = parseInt($("#photoShow").css("width")); //显示宽度K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
        var imgWidth = parseInt($(".photo>img").css("width")); //图片宽度K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
        var minWidth = (divWidth - imgWidth)/(imgNums-1); //显示其中一张图片时其他图片的显示宽度K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
        var spanHeight = parseInt($("#photoShow>.photoirst>span").css("height")); //图片介绍信息的高度K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
        imgDivs.each(function(i){K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
                $(imgDivs).css({"z-index": i, "left": i*(divWidth/imgNums)});K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
                $(imgDivs).hover(function(){K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
                        //处理鼠标进入的时候K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
                },function(){K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
                        //处理鼠标离开的时候K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
                });K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
        });K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
});K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
首先我们定义了一些变量,方便我们后面使用。K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
然后就是使用了一个 each() 的函数在每一个匹配的元素进行事件处理。这里是每一个<div class="photo"> 元素分别进行事件的处理。K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
然后看一下下面这一句:K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
$(imgDivs).css({"z-index": i, "left": i*(divWidth/imgNums), "top":"0px"});K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
这句是通过CSS来控制每一个图片的层次和显示位置。K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
然后就是用一个 hover() 函数来处理鼠标的hover事件。K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
首先看一下鼠标进入图片的时候该怎么处理:K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
引用:
$(imgDivs).hover(function(){K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
        //$(this).find("img").css("opacity","1");K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
        $(this).find("span").stop().animate({bottom: 0}, "slow");K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
        imgDivs.each(function(j){K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
                if(j<=i){K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
                        $(imgDivs[j]).stop().animate({left: j*minWidth}, "slow");K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
                }else{K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
                        $(imgDivs[j]).stop().animate({left: (j-1)*minWidth+imgWidth}, "slow");K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
                }K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
        });K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
},function(){K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
        //处理鼠标离开时候的事件K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
});K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
在这里所有的动画效果都是通过 animate() 函数修改CSS来控制元素的显示位置来实现的。K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
这里注意一下就是在调用 animate() 函数前都调用了 stop() 函数。stop() 函数是用来停止当前元素的所有执行中的事件。K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
j<=i 的判断就是判断鼠标hover的当前图片和该图片前面的图片与该图片后面的图片的分割线。K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
鼠标离开的处理也差不多,下面之完整的代码:K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
引用:
$(document).ready(function(){K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
        var imgDivs = $("#photoShow>div");K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
        var imgNums = imgDivs.length; //图片数量K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
        var divWidth = parseInt($("#photoShow").css("width")); //显示宽度K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
        var imgWidth = parseInt($(".photo>img").css("width")); //图片宽度K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
        var minWidth = (divWidth - imgWidth)/(imgNums-1); //显示其中一张图片时其他图片的显示宽度K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
        var spanHeight = parseInt($("#photoShow>.photoirst>span").css("height")); //图片介绍信息的高度K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
        imgDivs.each(function(i){K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
                $(imgDivs).css({"z-index": i, "left": i*(divWidth/imgNums)});K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
                $(imgDivs).hover(function(){K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
                        //$(this).find("img").css("opacity","1");K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
                        $(this).find("span").stop().animate({bottom: 0}, "slow");K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
                        imgDivs.each(function(j){K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
                                if(j<=i){K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
                                        $(imgDivs[j]).stop().animate({left: j*minWidth}, "slow");K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
                                }else{K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
                                        $(imgDivs[j]).stop().animate({left: (j-1)*minWidth+imgWidth}, "slow");K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
                                }K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
                        });K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
                },function(){K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
                        imgDivs.each(function(k){K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
                                //$(this).find("img").css("opacity","0.7");K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
                                $(this).find("span").stop().animate({bottom: -spanHeight}, "slow");K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
                                $(imgDivs[k]).stop().animate({left: k*(divWidth/imgNums)}, "slow");K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
                        });K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
                });K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
        });K3·ß~·J¡@Ýwww.pin5i.com>Á³7ø4O
});