网站上经常见到焦点图动画,焦点图的动画有多种,如:淡入淡出型、上下滑动型、左右滑动型、左右滑动无缝型,对比用户体验的话,无缝轮播方式是最好的,因为在播放多张图片的情况下不会出现间断感。
核心概念
- JavaScript 函数
- setInterval 定时器
- jQuery 的 animate 动画
- jQuery 的 mouseover 及 click 事件
- 无缝概念的理解
代码
html
<div class="banner">
<ul class="img">
<li><a href="#"><img src="images/1.jpg" alt=""></a></li>
<li><a href="#"><img src="images/2.jpg" alt=""></a></li>
<li><a href="#"><img src="images/3.jpg" alt=""></a></li>
<li><a href="#"><img src="images/4.jpg" alt=""></a></li>
</ul>
<ul class="num"></ul>
<div class="btn btn_l"><</div>
<div class="btn btn_r">></div>
</div>
js
$(function () {
var i = 0;
var clone = $(".banner .img li").first().clone();
$(".banner .img").append(clone);
var size = $(".banner .img li").size();
for (var j = 0; j < size - 1; j++) {
$(".banner .num").append("<li></li>");
}
$(".banner .num li").first().addClass("on");
/* 鼠标划入圆点 */
$(".banner .num li").hover(function () {
var index = $(this).index();
i = index;
$(".banner .img").stop().animate({left: -index * 550}, 500)
$(this).addClass('on').siblings().removeClass('on');
})
/* 自动轮播 */
var t = setInterval(function () {
i++;
move()
}, 2000);
/* 对banner定时器的操作 */
$(".banner").hover(function () {
clearInterval(t);
}, function () {
t = setInterval(function () {
i++;
move();
}, 2000);
})
/* 向左的按钮 */
$(".banner .btn_l").click(function () {
i++;
move();
})
/* 向右的按钮 */
$(".banner .btn_r").click(function () {
i--;
move();
})
function move() {
if (i == size) {
$(".banner .img").css({left: 0});
i = 1;
}
if (i == -1) {
$(".banner .img").css({left: -(size - 1) * 550});
i = size - 2; // size - 1 易错
}
$(".banner .img").stop().animate({left: -550 * i}, 500);
if (i == size - 1) {
$(".banner .num li").eq(0).addClass('on').siblings().removeClass('on');
} else {
$(".banner .num li").eq(i).addClass('on').siblings().removeClass('on');
}
}
})
css
* {
padding: 0;
margin: 0;
list-style-type: none;
}
.banner {
margin: 100px auto;
border: 5px solid #000;
width: 550px;
height: 300px;
overflow: hidden;
position: relative;
}
.banner .img {
width: 5000px;
position: absolute;
top: 0;
left: 0;
}
.banner .img li {
float: left;
}
.banner .num {
position: absolute;
width: 100%;
bottom: 10px;
left: 0;
text-align: center;
font-size: 0;
}
.banner .num li {
width: 10px;
height: 10px;
background: #888;
-webkit-border-radius: 50%;
-moz-border-radius: 50%;
border-radius: 50%;
display: inline-block;
margin: 0 3px;
cursor: pointer;
}
.banner .num li.on {
background: #F60;
}
.banner .btn {
width: 30px;
height: 50px;
background: rgba(0, 0, 0, 0.5);
position: absolute;
top: 50%;
margin-top: -25px;
cursor: pointer;
text-align: center;
line-height: 50px;
color: #fff;
font-size: 40px;
font-family:"宋体"; /* 设置箭头样式: FireFox默认黑体;Chrome默认宋体;*/
display: none;
}
.banner:hover .btn {
display: block;
}
.banner .btn_l {
left: 0;
}
.banner .btn_r {
right: 0;
}