網(wǎng)站上經(jīng)常見(jiàn)到焦點(diǎn)圖動(dòng)畫(huà),焦點(diǎn)圖的動(dòng)畫(huà)有多種,如:淡入淡出型、上下滑動(dòng)型、左右滑動(dòng)型、左右滑動(dòng)無(wú)縫型,對(duì)比用戶體驗(yàn)的話,無(wú)縫輪播方式是最好的,因?yàn)樵诓シ哦鄰垐D片的情況下不會(huì)出現(xiàn)間斷感。
核心概念
- JavaScript 函數(shù)
- setInterval 定時(shí)器
- jQuery 的 animate 動(dòng)畫(huà)
- jQuery 的 mouseover 及 click 事件
- 無(wú)縫概念的理解
代碼
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");
/* 鼠標(biāo)劃入圓點(diǎn) */
$(".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');
})
/* 自動(dòng)輪播 */
var t = setInterval(function () {
i++;
move()
}, 2000);
/* 對(duì)banner定時(shí)器的操作 */
$(".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 易錯(cuò)
}
$(".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:"宋體"; /* 設(shè)置箭頭樣式: FireFox默認(rèn)黑體;Chrome默認(rèn)宋體;*/
display: none;
}
.banner:hover .btn {
display: block;
}
.banner .btn_l {
left: 0;
}
.banner .btn_r {
right: 0;
}