<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>輪播圖</title>
<style media="screen">
* {
margin: 0;
padding: 0;
}
#sliderWrap {
position: relative;
margin: 0 auto;
width: 730px;
height: 454px;
margin-top: 200px;
overflow: hidden;
}
#sliderContent {
position: absolute;
height: 100%;
left: -730px;
}
#sliderContent a {
float: left;
display: inline-block;
height: 100%;
}
#sliderNumber {
position: absolute;
top: 420px;
left: 290px;
}
#sliderNumber ul {
display: flex;
width: 150px;
justify-content: space-between;
list-style-type: none;
cursor: pointer;
}
#sliderNumber ul li {
width: 20px;
height: 20px;
border-radius: 50%;
background: rgb(62, 62, 62);
color: white;
text-align: center;
line-height: 20px;
}
.button {
position: absolute;
top: 200px;
width: 30px;
height: 60px;
line-height: 60px;
text-align: center;
background: rgba(0, 0, 0, 0.2);
color: white;
font-size: 32px;
cursor: pointer;
display: none;
}
#sliderBtnRight {
left: 700px;
}
</style>
</head>
<body>
<div class="slider_wrap" id="sliderWrap">
<div class="slider_content" id="sliderContent">
<a href="#" target="_blank"><img src="images/006.jpg" alt="" /></a>
<a href="#" target="_blank"><img src="images/001.jpg" alt="" class="show"/></a>
<a href="#" target="_blank"><img src="images/002.jpg" alt="" class="show"/></a>
<a href="#" target="_blank"><img src="images/003.jpg" alt="" class="show"/></a>
<a href="#" target="_blank"><img src="images/004.jpg" alt="" class="show"/></a>
<a href="#" target="_blank"><img src="images/005.jpg" alt="" class="show"/></a>
<a href="#" target="_blank"><img src="images/006.jpg" alt="" class="show"/></a>
<a href="#" target="_blank"><img src="images/001.jpg" alt="" /></a>
</div>
<div id="sliderNumber">
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
</ul>
</div>
<div class="button" id="sliderBtnLeft">
<
</div>
<div class="button" id="sliderBtnRight">
>
</div>
</div>
</body>
<script src="tween.js" charset="utf-8"></script>
<script type="text/javascript">
var sliderWrap = document.getElementById('sliderWrap');
var sliderContent = document.getElementById('sliderContent');
var sliderBtnLeft = document.getElementById('sliderBtnLeft');
var sliderBtnRight = document.getElementById('sliderBtnRight');
var aTags = document.getElementsByTagName('a');
// querySelector和querySelectorAll是經過css選擇器來選取對應的標籤或者符合條件的標籤
var lis = document.querySelectorAll('#sliderNumber li'); //獲取li數組
var imgs = document.querySelectorAll('.show');//獲取除了第一張和最後一張以外的圖片
// 一、根據圖片的數量從新定義content的寬度
sliderContent.style.width = aTags[0].offsetWidth * aTags.length + 'px';
// 二、對slierWrpt進行鼠標移入移出事件添加 ;鼠標移入left、right按鈕顯示,移出隱藏
sliderWrap.onmouseenter = function() {
sliderBtnLeft.style.display = 'block';
sliderBtnRight.style.display = 'block';
}
sliderWrap.onmouseleave = function() {
sliderBtnLeft.style.display = 'none';
sliderBtnRight.style.display = 'none';
}
/* 三、對鼠標移入,移出left、right按鈕添加事件;鼠標移入到sliderBtnLeft,sliderBtnRight時
自動播放中止;鼠標移出時自動播放開始 */
sliderBtnLeft.onmouseenter = function() {
clearInterval(timerOutter);
}
sliderBtnLeft.onmouseleave = function() {
timerOutter = setInterval('animateMove(lastIndex + 1, 1 ,true)',2000);
}
sliderBtnRight.onmouseenter = function() {
clearInterval(timerOutter);
}
sliderBtnRight.onmouseleave = function() {
timerOutter = setInterval('animateMove(lastIndex + 1, 1 ,true)',2000);
}
/* 四、對鼠標點擊left、right按鈕添加點擊事件;點擊sliderBtnLeft時,中止自動播放,圖片向右移動,
點擊sliderBtnRight時,中止自動播放,圖片向左移動*/
sliderBtnLeft.onclick = function() {
clearInterval(timerOutter);
animateMove(lastIndex - 1, -1, false);
lastIndex--;
}
sliderBtnRight.onclick = function() {
clearInterval(timerOutter);
lastIndex = animateMove(lastIndex + 1, 1, false);
lastIndex++;
}
// 其次定義輪播圖必備的變量
var t = 0;// current times, 當前執行動畫的次數
var b = 0; // begin value, 起始值
var c = -730; //change in value, 變化值
var d = 70; // duration,持續時間
var timer; // 自動輪播定時器
var timerOutter; //定時器
var lastIndex = 0; //上一個顯示的圖片在數組中的下標
/*五、對鼠標放入數組lis中添加事件;鼠標放入lis中中止自動播放,左右按鈕隱藏,且顯示當前圖片
鼠標移開lis中先清理定時器,左右按鈕顯示,恢復自動播放*/
for (var i = 0; i < lis.length; i++) {
// 給每一個li標籤設定自定義屬性index,記錄其在數組中的下標
lis[i].index = i;
lis[i].onmouseenter = function() {
clearInterval(timerOutter);
sliderBtnLeft.style.display = 'none';
sliderBtnRight.style.display = 'none';
animateMove(event.target.index, event.target.index - lastIndex, false);
}
lis[i].onmouseleave = function() {
clearInterval(timerOutter);
sliderBtnLeft.style.display = 'block';
sliderBtnLeft.style.display = 'block';
lastIndex = event.target.index;
timerOutter = setInterval('animateMove(lastIndex + 1, 1, true)', 2000)
}
}
/*六、對lis數字標籤顏色處理,顯示當前圖片時背景變爲紅色,其餘的爲灰色
*/
function showCurrentNumberTag(index) {
for (var i = 0; i < lis.length; i++) {
lis[i].style.background = 'rgb(62,62,62)';
}
lis[index].style.background = 'rgb(180,30,30)'; // 根據傳入的下標更改當前數字標籤顏色
}
// 調用函數,初始爲index爲0;
showCurrentNumberTag(0);
/*
七、 定義位移動畫函數
currentIndex:當前須要執行位移動畫的圖片的下標
count:一共有多少張圖片須要一次執行位移動畫
isAuto:是不是自動輪播,即定時器調用仍是手動點擊
*/
function animateMove(currentIndex,count,isAuto) {
// 爲了確保不出錯,每次位移動畫時先清除定時器
clearInterval(timer);
b = -730 * (lastIndex + 1);
c = -730 * count;
function move() {
t++;
sliderContent.style.left = Tween.Linear(t,b,c,d) + 'px';
if (t == d) {
clearInterval(timer);
t = 0; //復位
}
}
timer = setInterval(move,1); // 啓動定時器timer
/*判斷圖片移動到最左邊和最右邊時修改,
當圖片移動到最左邊時,修改數字標籤顏色,把左邊的圖片移動到右邊上一張圖片爲最後一張,即lastIndex = [5];
當圖片移動到最右邊時,修改數字標籤顏色,把右邊的圖片移動到左邊上一張圖片爲最後一張,即lastIndex = [0];
其餘狀況圖片展現爲當前index;
*/
if (currentIndex == -1) {
showCurrentNumberTag(imgs.length - 1);
sliderContent.style.left = -730 * imgs.length + 'px';
lastIndex = imgs.length;
} else if (currentIndex == imgs.length) {
showCurrentNumberTag(0);
sliderContent.style.left = -730 + 'px';
lastIndex = isAuto ? 0 : -1;
} else {
showCurrentNumberTag(currentIndex);
if (isAuto) {
lastIndex++;
}
}
return lastIndex;
}
// 啓動定時器
timerOutter = setInterval('animateMove(lastIndex + 1, 1 ,true)',1000);
</script>
</html>