【jQuery Demo】图片切换效果整理

时间:2022-11-30 12:01:06

图片的切换效果有很多,比较常见的有水平滚动、垂直滚动、淡入淡出等。我们接下来一一实现这些效果。

 

1.水平滚动

1) 我们先来实现HTML页面,代码很简单:

<div id="container">
<ul class="slider">
<li><img src="../imgs/Girls/04.png"/></li>
<li><img src="../imgs/Girls/05.jpg"/></li>
<li><img src="../imgs/Girls/14.jpg"/></li>
<li><img src="../imgs/Girls/17.jpg"/></li>
<li><img src="../imgs/Girls/20.jpg"/></li>
</ul>
<ul class="thumb">
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
</ul>
</div>

2)然后我们设置下CSS:

/**   CSS Reset  **/
body, h1, h2, h3, h4, h5, h6, hr, p, blockquote, dl, dt, dd, ul, ol, li, pre, form, fieldset, legend, button, input, textarea, th, td
{ margin: 0; padding: 0; }
body, button, input, select, textarea
{ font: 12px/1.5 tahoma, arial, \5b8b\4f53; }
h1, h2, h3, h4, h5, h6
{ font-size: 100%; }
address, cite, dfn, em, var
{ font-style: normal; }
code, kbd, pre, samp
{ font-family: couriernew, courier, monospace; }
small
{ font-size: 12px; }
ul, ol
{ list-style: none; }
a
{ text-decoration: none; }
a:hover
{ text-decoration: underline; }
sup
{ vertical-align: text-top; }
sub
{ vertical-align: text-bottom; }
legend
{ color: #000; }
fieldset, img
{ border: 0; }
button, input, select, textarea
{ font-size: 100%; }
table
{ border-collapse: collapse; border-spacing: 0; }
/* container */
#container
{ width: 320px; height: 456px; overflow: hidden; position: relative; margin: 20px auto; }
.slider
{ position: absolute; }
.slider img
{ width: 320px; display: block; }
.thumb
{ position: absolute; bottom: 5px; right: 5px; }
.thumb li
{ float: left; color: #FF7300; text-align: center; line-height: 16px; width: 16px; height: 16px; font-size: 12px; font-family: Arial; margin: 3px 1px; border: 1px solid #FF7300; background: #fff; cursor: pointer; }
.thumb li:hover,.thumb li.selected
{ color: #fff; line-height: 16px; width: 16px; height: 16px; font-size: 16px; background: #EF7300; font-weight: bold; }

目前的显示效果如下:

【jQuery Demo】图片切换效果整理

3)接下来,我们需要点击实现图片的切换,下面是实现水平滚动效果的jQuery插件:

;(function ($) {
$.fn.extend({
scrollHorizontal:
function () {
var imgCount = $(".slider li").length;
var imgWidth = $(".slider li").eq(0).width();
$(
".thumb li").eq(0).addClass("selected");
for (var i=0;i<imgCount;i++){
$(
".slider li").eq(i).css({
"left":i*imgWidth+"px",
"position":"absolute"
});
}
// 初始化
$(".thumb li").click(function () {
var theIndex = $(this).index();
var nowIndex = $(".selected").index();
var leftWidth = imgWidth*(nowIndex-theIndex);
$(
".thumb li").removeClass("selected");
$(
".thumb li").eq(theIndex).addClass("selected");
$(
".slider li").animate({left:"+="+leftWidth });
});
}
});
})(jQuery);

4)最后,我们在HTML页面调用这个插件:

<script>
$(document).ready(
function () {
$(
"#container").scrollHorizontal();
})
</script>

5)这样效果就出来了:

【jQuery Demo】图片切换效果整理

 

2.垂直滚动

上面实现了水平滚动,那垂直滚动就简单了。通过获取图片的高度,然后控制 top 的值就可以了。新建的jQuery插件如下:

;(function ($) {
$.fn.extend({
scrollVertical:
function () {
var imgCount = $(".slider li").length;
var imgHeight = $(".slider li").eq(0).height();
$(
".thumb li").eq(0).addClass("selected");
for (var i=0;i<imgCount;i++){
$(
".slider li").eq(i).css({
"top":i*imgHeight+"px",
"position":"absolute"
});
}
// 初始化
$(".thumb li").click(function () {
var theIndex = $(this).index();
var nowIndex = $(".selected").index();
var topHeight = imgHeight*(nowIndex-theIndex);
$(
".thumb li").removeClass("selected");
$(
".thumb li").eq(theIndex).addClass("selected");
$(
".slider li").animate({top:"+="+topHeight });
});
}
});
})(jQuery);

然后调用这个插件就可以了:

<script>
$(document).ready(
function () {
$(
"#container").scrollVertical();
})
</script>

效果如下:

【jQuery Demo】图片切换效果整理

 

3.淡入淡出

同样淡入淡出也就很好实现了:

;(function ($) {
$.fn.extend({
fadeInOut:
function () {
var imgCount = $(".slider li").length;
var imgHeight = $(".slider li").eq(0).height();
$(
".thumb li").eq(0).addClass("selected");
for (var i=1;i<imgCount;i++){
$(
".slider li").eq(i).css({
"display":"none"
});
}
$(
".thumb li").click(function () {
var theIndex = $(this).index();
var nowIndex = $(".selected").index();
$(
".thumb li").removeClass("selected");
$(
".thumb li").eq(theIndex).addClass("selected");
$(
".slider li").eq(nowIndex).fadeOut();
$(
".slider li").eq(theIndex).fadeIn();
});
}
});
})(jQuery);

效果如下:

【jQuery Demo】图片切换效果整理