JS實現(xiàn)淘寶幻燈片效果的實現(xiàn)方法
實現(xiàn)思路:
1、for循環(huán)給數(shù)字按鈕加上點擊事件。
2.for循環(huán)先把按鈕的樣式清空,再把當前樣式設(shè)置樣式。
3、給每個按鈕添加自定義屬性index aBtn[i].index=i aBtn[2]=2 第二個按鈕和第二張圖片想對應,用運動框架把大圖的UL每次移動-150px,因為圖片高度是150px。如果移動到第n張圖片就是-150*n。
4、定義變量now,用來自動播放用的。把當前圖片賦值給now now=this.index。
5、定義自動播放函數(shù)。now++ 下一張,if判斷,到最后一張圖片的時候就把now設(shè)置為0,就是第一張。 if(now==aBtn.length)
6、定義定時器,每2秒就調(diào)用一次自動播放函數(shù)。
7、鼠標指向圖片時就清除定時器。
8、鼠標離開圖片時就開啟定時器。
<script>
window.onload=function()
{
var oDiv=document.getElementById('play');
var aBtn=oDiv.getElementsByTagName('ol')[0].getElementsByTagName('li');
var oUl=oDiv.getElementsByTagName('ul')[0];
var now=0;
for(var i=0;i<aBtn.length;i++)
{
aBtn[i].index=i;
aBtn[i].onmouseover=function()
{
now=this.index; //當前值賦給now
tab();
}
};
function tab()
{
for(var i=0;i<aBtn.length;i++)
{
aBtn[i].className=''; //把所有按鈕的樣式清空
};
aBtn[now].className='active'; //當前按鈕樣式設(shè)置
startMove(oUl,{top:-150*now}); //用運動框架把UL的TOP設(shè)置為當前個數(shù)*-150,第三張圖片就是2*-150
};
function next()
{
now++; //切換圖片
if(now==aBtn.length) //如果到了最后一張圖片
{
now=0; // 把圖片拉回第一張
}
tab(); //把圖片拉回第一張后繼續(xù)運動
};
var timer=setInterval(next,2000); //2秒自動切換圖片
oDiv.onmouseover=function()
{
clearInterval(timer); //清除定時器
};
oDiv.onmouseout=function()
{
timer=setInterval(next,2000); //開啟定時器
};
};
</script>
完整代碼:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>淘寶幻燈片上下滑動效果 —— www.zhinengshe.com —— 智能課堂</title>
<link href="css.css" rel="stylesheet" type="text/css" />
<script src="baseCommon.js"></script>
<script>
window.onload=function()
{
var oDiv=document.getElementById('play');
var aBtn=oDiv.getElementsByTagName('ol')[0].getElementsByTagName('li');
var oUl=oDiv.getElementsByTagName('ul')[0];
var now=0;
for(var i=0;i<aBtn.length;i++)
{
aBtn[i].index=i;
aBtn[i].onmouseover=function()
{
now=this.index; //當前值賦給now
tab();
}
};
function tab()
{
for(var i=0;i<aBtn.length;i++)
{
aBtn[i].className=''; //把所有按鈕的樣式清空
};
aBtn[now].className='active'; //當前按鈕樣式設(shè)置
startMove(oUl,{top:-150*now}); //用運動框架把UL的TOP設(shè)置為當前個數(shù)*-150,第三張圖片就是2*-150
};
function next()
{
now++; //切換圖片
if(now==aBtn.length) //如果到了最后一張圖片
{
now=0; // 把圖片拉回第一張
}
tab(); //把圖片拉回第一張后繼續(xù)運動
};
var timer=setInterval(next,2000); //2秒自動切換圖片
oDiv.onmouseover=function()
{
clearInterval(timer); //清除定時器
};
oDiv.onmouseout=function()
{
timer=setInterval(next,2000); //開啟定時器
};
};
</script>
</head>
<body>
<div class="play" id="play">
<ol>
<li class="active">1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
</ol>
<ul>
<li><a ><img src="images/1.jpg" alt="廣告一" /></a></li>
<li><a ><img src="images/2.jpg" alt="廣告二" /></a></li>
<li><a ><img src="images/3.jpg" alt="廣告三" /></a></li>
<li><a ><img src="images/4.jpg" alt="廣告四" /></a></li>
<li><a ><img src="images/5.jpg" alt="廣告五" /></a></li>
</ul>
</div>
</body>
</html>
相關(guān)文章
javascript中兼容主流瀏覽器的動態(tài)生成iframe方法
這篇文章主要介紹了javascript中兼容主流瀏覽器的動態(tài)生成iframe方法,需要的朋友可以參考下2014-05-05如何使用50行javaScript代碼實現(xiàn)簡單版的call,apply,bind
這篇文章主要介紹了50行javaScript代碼實現(xiàn)簡單版的call,apply,bind過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2019-08-08