javascript實現(xiàn)圖片輪換動作方法
圖片輪換是一種相當(dāng)復(fù)雜的技術(shù),早些年基本用flash實現(xiàn)。這里有一個鏈接,教大家如何用flash實現(xiàn)它的。之所以用flash,是因為flash是基于幀的,這與圖片輪換的原理相當(dāng)接近。為了模擬幀的效果,我們要用到overflow把多余的部分遮罩掉,也就是flash中常說的遮罩層。在Flash中,連時間軸都是可視的,而我們則全憑想象力與數(shù)學(xué)來計算現(xiàn)在是到了哪一張圖。加之,flash有Robert Penner大神的緩動公式,那實在太耀眼,直到script.aculo.us類庫搞出自己的緩動公式,才扭轉(zhuǎn)局面。
我們來看一看圖片輪換的結(jié)構(gòu)層。它應(yīng)該包含框體,圖片展示區(qū),圖片滑動層與分頁欄。原諒我制造這么多詞匯,因為沒有個名詞講解就難以為繼了,前人也沒有做這樣的總結(jié),個個都不愿意分享一下??蝮w就是一個div元素,作用有兩個:提供相冊的邊框與作為分頁欄的包含塊。如果不清楚什么叫包含塊(containing block)的話,自己查閱CSS權(quán)威指南吧。接著下來圖片展示區(qū)與圖片滑動層,也就是我實現(xiàn)新式無縫滾動的那一種結(jié)構(gòu),一個很干凈的無序列表,所有難點都轉(zhuǎn)移到設(shè)置它的CSS上。至于圖片展示區(qū)就是ul元素,大小為一張圖片的大??;圖片滑動層就是那個li元素,也只有一個li元素而已,利用CSS強(qiáng)制把它里面的圖片不換行向左浮動,并設(shè)置li元素一個很大很大的寬度,好讓它一行容納所有圖片。分頁欄就是一個包含許多鏈接的span元素,和普通的水平菜單差不多,只不過要用絕對定位它安置到框體的右下角。
<div id="album"> <ul> <li> <a rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" id="index1"> <img alt="月光下的花瓣" src="http://images.cnblogs.com/cnblogs_com/rubylouvre/199042/o_s001.jpg" /> </a> <a rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" id="index2"> <img alt="清澈的湖水" src="http://images.cnblogs.com/cnblogs_com/rubylouvre/199042/o_s002.jpg" /> </a> <a rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" id="index3"> <img alt="荒漠上的植物" src="http://images.cnblogs.com/cnblogs_com/rubylouvre/199042/o_s003.jpg" /> </a> <a rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" id="index4"> <img alt="末日霓虹" src="http://images.cnblogs.com/cnblogs_com/rubylouvre/199042/o_s004.jpg" /> </a> <a rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" id="index5"> <img alt="綠·生意" src="http://images.cnblogs.com/cnblogs_com/rubylouvre/199042/o_s005.jpg" /> </a> <a rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" id="index6"> <img alt="又是收獲的季節(jié)" src="http://images.cnblogs.com/cnblogs_com/rubylouvre/199042/o_s006.jpg" /> </a> </li> </ul> <span> <a href="#index1" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >1</a> <a href="#index2" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >2</a> <a href="#index3" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >3</a> <a href="#index4" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >4</a> <a href="#index5" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >5</a> <a href="#index6" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >6</a> </span> </div>
#album { position:relative;/*為分頁欄準(zhǔn)備的*/ width:400px;/*必須設(shè)置,為分頁欄準(zhǔn)備*/ height:300px;/*必須設(shè)置,為分頁欄準(zhǔn)備*/ border:10px solid #8080C0; } #album ul ,#album li {/*消除默認(rèn)樣式*/ padding:0; margin:0; list-style:none; } #album ul{ position:relative; /*為圖片滑動區(qū)*/ height:300px;/*必須設(shè)置,用于隱藏圖片滑動區(qū)多余的部分*/ width:400px;/*必須設(shè)置,用于隱藏圖片滑動區(qū)多余的部分*/ overflow:hidden; background:transparent url(http://images.cnblogs.com/cnblogs_com/rubylouvre/199042/o_s001.jpg) no-repeat 0 0; } #album li { /*圖片滑動區(qū)*/ position:absolute; width:1000%;/*讓里面的所有圖片并列顯示*/ } #album a { float:left; } #album img { display:block; border:0; } #album span {/*分頁欄*/ position:absolute; right:0; bottom:10px; } #album span a{ display:block;/*讓其擁有盒子模型*/ margin-right:10px;/*錯開格子*/ width:15px;/*呈正方形*/ height:15px; line-height:15px; text-align:center;/*居中顯示*/ text-decoration:none;/*消除下劃線*/ color:#808080; background:transparent url(http://images.cnblogs.com/cnblogs_com/rubylouvre/199042/o_button.gif) no-repeat -15px 0; } #album span a:hover ,#album span a.hover{ color:#F8F8F8; background-position:0 0; }
<!doctype html> <title>javascript圖片輪換 by 司徒正美</title> <meta charset="utf-8"/> <meta name="keywords" content="javascript圖片輪換 by 司徒正美" /> <meta name="description" content="javascript圖片輪換 by 司徒正美" /> <style type="text/css"> #album { position:relative;/*為分頁欄準(zhǔn)備的*/ width:400px;/*必須設(shè)置,為分頁欄準(zhǔn)備*/ height:300px;/*必須設(shè)置,為分頁欄準(zhǔn)備*/ border:10px solid #8080C0; } #album ul ,#album li {/*消除默認(rèn)樣式*/ padding:0; margin:0; list-style:none; } #album ul{ position:relative; /*為圖片滑動區(qū)*/ height:300px;/*必須設(shè)置,用于隱藏圖片滑動區(qū)多余的部分*/ width:400px;/*必須設(shè)置,用于隱藏圖片滑動區(qū)多余的部分*/ overflow:hidden; background:transparent url(http://images.cnblogs.com/cnblogs_com/rubylouvre/199042/o_s001.jpg) no-repeat 0 0; } #album li { /*圖片滑動區(qū)*/ position:absolute; width:1000%;/*讓里面的所有圖片并列顯示*/ } #album a { float:left; } #album img { display:block; border:0; } #album span {/*分頁欄*/ position:absolute; right:0; bottom:10px; } #album span a{ display:block;/*讓其擁有盒子模型*/ margin-right:10px;/*錯開格子*/ width:15px;/*呈正方形*/ height:15px; line-height:15px; text-align:center;/*居中顯示*/ text-decoration:none;/*消除下劃線*/ color:#808080; background:transparent url(http://images.cnblogs.com/cnblogs_com/rubylouvre/199042/o_button.gif) no-repeat -15px 0; } #album span a:hover ,#album span a.hover{ color:#F8F8F8; background-position:0 0; } </style> <h4>javascript圖片輪換 by 司徒正美</h4> <div id="album"> <ul> <li> <a rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" id="index1"> <img alt="月光下的花瓣" src="http://images.cnblogs.com/cnblogs_com/rubylouvre/199042/o_s001.jpg" /> </a> <a rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" id="index2"> <img alt="清澈的湖水" src="http://images.cnblogs.com/cnblogs_com/rubylouvre/199042/o_s002.jpg" /> </a> <a rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" id="index3"> <img alt="荒漠上的植物" src="http://images.cnblogs.com/cnblogs_com/rubylouvre/199042/o_s003.jpg" /> </a> <a rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" id="index4"> <img alt="末日霓虹" src="http://images.cnblogs.com/cnblogs_com/rubylouvre/199042/o_s004.jpg" /> </a> <a rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" id="index5"> <img alt="綠·生意" src="http://images.cnblogs.com/cnblogs_com/rubylouvre/199042/o_s005.jpg" /> </a> <a rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" id="index6"> <img alt="又是收獲的季節(jié)" src="http://images.cnblogs.com/cnblogs_com/rubylouvre/199042/o_s006.jpg" /> </a> </li> </ul> <span> <a href="#index1" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >1</a> <a href="#index2" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >2</a> <a href="#index3" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >3</a> <a href="#index4" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >4</a> <a href="#index5" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >5</a> <a href="#index6" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >6</a> </span> </div>
這個和我以前的系列一樣,不用JS也可以點擊實現(xiàn)切換。不過以前是用錨點來改變scrollTop的值,現(xiàn)在是改變scrollLeft的值。
如果不使用緩動效果,很簡單。
var Rotate = function(id){ try{document.execCommand("BackgroundImageCache", false, true);}catch(e){}; var container = document.getElementById(id), slide = container.getElementsByTagName("li")[0]; slide.innerHTML += slide.innerHTML; var item = slide.getElementsByTagName("a"), critical = item[item.length/2].offsetLeft,//臨界值 distance = critical/(item.length/2), delta = - distance; (function(){//實現(xiàn)自動輪換圖片 setTimeout(function(){ delta = delta - distance; if(delta < -critical){ delta = - distance; } slide.style.left = delta + "px";//★★★★★★★★ setTimeout(arguments.callee,1500) },1500) })() }
要使用緩動,就要動用我的緩動公式與transition函數(shù),在星號的位置中調(diào)用。
<!doctype html> <title>javascript圖片輪換 by 司徒正美</title> <meta charset="utf-8"/> <meta name="keywords" content="javascript圖片輪換 by 司徒正美" /> <meta name="description" content="javascript圖片輪換 by 司徒正美" /> <style type="text/css"> #album { position:relative; width:400px; height:300px; border:10px solid #8080C0; } #album ul,#album li { list-style:none; margin:0; padding:0; } #album ul { position:relative; height:300px; width:400px; overflow:hidden; background:transparent url(http://images.cnblogs.com/cnblogs_com/rubylouvre/199042/o_s001.jpg) no-repeat 0 0; } #album li { position:absolute; width:1000%; } #album a { float:left; } #album img { display:block; border:0; } #album span { position:absolute; right:0; bottom:10px; } #album span a { display:block; margin-right:10px; width:15px; height:15px; line-height:15px; text-align:center; text-decoration:none; color:gray; background:transparent url(http://images.cnblogs.com/cnblogs_com/rubylouvre/199042/o_button.gif) no-repeat -15px 0; } #album span a:hover,#album span a.hover { color:#F8F8F8; background-position:0 0; } </style> <script type="text/javascript"> var spring= function(pos) { return 1 - (Math.cos(pos * 4.5 * Math.PI) * Math.exp(-pos * 6)); } var transition = function(el){ var options = arguments[1] || {}, begin = options.begin,//開始位置 change = options.change,//變化量 duration = options.duration || 500,//緩動效果持續(xù)時間 ftp = options.ftp || 50, onEnd = options.onEnd || function(){}, ease = options.ease,//要使用的緩動公式 end = begin + change,//結(jié)束位置 startTime = new Date().getTime();//開始執(zhí)行的時間 (function(){ setTimeout(function(){ var newTime = new Date().getTime(),//當(dāng)前幀開始的時間 timestamp = newTime - startTime,//逝去時間 delta = ease(timestamp / duration); el.style.left = Math.ceil(begin + delta * change) + "px" if(duration <= timestamp){ el.style.left = end + "px"; onEnd(); }else{ setTimeout(arguments.callee,1000/ftp); } },1000/ftp) })() } var Rotate = function(id){ try{document.execCommand("BackgroundImageCache", false, true);}catch(e){}; var container = document.getElementById(id), slide = container.getElementsByTagName("li")[0], paginater = container.getElementsByTagName("span")[0], links = paginater.getElementsByTagName("a"), length = links.length, aBefore = length, aIndex; slide.innerHTML += slide.innerHTML; var item = slide.getElementsByTagName("a"), critical = item[length].offsetLeft,//臨界值 distance = critical/length, delta = - distance; (function(){//實現(xiàn)自動輪換圖片 setTimeout(function(){ delta = delta - distance; if(delta < -critical){ delta = - distance; } aIndex = - delta/distance; links[aBefore-1].className = ""; links[aIndex-1].className = "hover"; aBefore = aIndex; transition(slide,{begin:delta,change:distance,ease:spring}) setTimeout(arguments.callee,1500) },1500) })() } window.onload = function(){ Rotate("album"); } </script> <h4>javascript圖片輪換 by 司徒正美</h4> <div id="album"> <ul> <li> <a rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" id="index1"> <img alt="月光下的花瓣" src="http://images.cnblogs.com/cnblogs_com/rubylouvre/199042/o_s001.jpg" /> </a> <a rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" id="index2"> <img alt="清澈的湖水" src="http://images.cnblogs.com/cnblogs_com/rubylouvre/199042/o_s002.jpg" /> </a> <a rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" id="index3"> <img alt="荒漠上的植物" src="http://images.cnblogs.com/cnblogs_com/rubylouvre/199042/o_s003.jpg" /> </a> <a rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" id="index4"> <img alt="末日霓虹" src="http://images.cnblogs.com/cnblogs_com/rubylouvre/199042/o_s004.jpg" /> </a> <a rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" id="index5"> <img alt="綠·生意" src="http://images.cnblogs.com/cnblogs_com/rubylouvre/199042/o_s005.jpg" /> </a> <a rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" id="index6"> <img alt="又是收獲的季節(jié)" src="http://images.cnblogs.com/cnblogs_com/rubylouvre/199042/o_s006.jpg" /> </a> </li> </ul> <span> <a href="#index1" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >1</a> <a href="#index2" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >2</a> <a href="#index3" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >3</a> <a href="#index4" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >4</a> <a href="#index5" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >5</a> <a href="#index6" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >6</a> </span> </div>
我們也可以像第一部分那樣加入一個信息欄,這樣程序就擁有三個定時器了,看起來讓人有點頭暈,現(xiàn)實中不提倡這樣做,這里只是試范一下如何使用transition的回調(diào)函數(shù)罷了。
//動態(tài)生成li元素并把它插入到DOM樹中。 var tip = document.createElement("li");//信息欄 tip.style.cssText = "position:absolute;bottom:0;width:400px;height:40px;line-height:40px;text-indent:2em;"; slide.parentNode.appendChild(tip); if(!+"\v1"){ tip.style.cssText += "color:#369;background:#fff;filter:alpha(opacity=50)"; }else{ tip.style.cssText += "color:#fff;background: rgba(164, 173, 183, .65);"; }
<!doctype html> <title>javascript圖片輪換 by 司徒正美</title> <meta charset="utf-8"/> <meta name="keywords" content="javascript圖片輪換 by 司徒正美" /> <meta name="description" content="javascript圖片輪換 by 司徒正美" /> <style type="text/css"> #album { position:relative; width:400px; height:300px; border:10px solid #8080C0; } #album ul,#album li { list-style:none; margin:0; padding:0; } #album ul { position:relative; height:300px; width:400px; overflow:hidden; background:transparent url(http://images.cnblogs.com/cnblogs_com/rubylouvre/199042/o_s001.jpg) no-repeat 0 0; } #album li { position:absolute; width:1000%; } #album a { float:left; } #album img { display:block; border:0; } #album span { position:absolute; right:0; bottom:10px; } #album span a { display:block; margin-right:10px; width:15px; height:15px; line-height:15px; text-align:center; text-decoration:none; color:gray; background:transparent url(http://images.cnblogs.com/cnblogs_com/rubylouvre/199042/o_button.gif) no-repeat -15px 0; } #album span a:hover,#album span a.hover { color:#F8F8F8; background-position:0 0; } </style> <script type="text/javascript"> var easeInOutCubic= function(pos){ if ((pos/=0.5) < 1) return 0.5*Math.pow(pos,3); return 0.5 * (Math.pow((pos-2),3) + 2); } var transition = function(el){ var options = arguments[1] || {}, begin = options.begin,//開始位置 change = options.change,//變化量 duration = options.duration || 500,//緩動效果持續(xù)時間 ftp = options.ftp || 50, onEnd = options.onEnd || function(){}, ease = options.ease,//要使用的緩動公式 end = begin + change,//結(jié)束位置 startTime = new Date().getTime();//開始執(zhí)行的時間 (function(){ setTimeout(function(){ var newTime = new Date().getTime(),//當(dāng)前幀開始的時間 timestamp = newTime - startTime,//逝去時間 delta = ease(timestamp / duration); el.style.left = Math.ceil(begin + delta * change) + "px" if(duration <= timestamp){ el.style.left = end + "px"; onEnd(); }else{ setTimeout(arguments.callee,1000/ftp); } },1000/ftp) })() } var Rotate = function(id){ try{document.execCommand("BackgroundImageCache", false, true);}catch(e){}; var container = document.getElementById(id), slide = container.getElementsByTagName("li")[0], paginater = container.getElementsByTagName("span")[0], links = paginater.getElementsByTagName("a"), images = slide.getElementsByTagName("img"), length = links.length, aBefore = length, aIndex; slide.innerHTML += slide.innerHTML; var tip = document.createElement("li"); tip.style.cssText = "position:absolute;bottom:-40px;height:20px;width:380px;padding:10px;color:#fff;background:#fff;"; slide.parentNode.appendChild(tip); if(!+"\v1"){ tip.style.color = "#369"; tip.style.filter = "alpha(opacity=67)" }else{ tip.style.cssText += "background: rgba(164, 173, 183, .65);" } var item = slide.getElementsByTagName("a"), critical = item[length].offsetLeft,//臨界值 distance = critical/length, delta = - distance; (function(){//實現(xiàn)自動輪換圖片 setTimeout(function(){ delta = delta - distance; if(delta < -critical){ delta = - distance; } aIndex = - delta/distance; tip.innerHTML = images[aIndex-1].getAttribute("alt"); tip.style.bottom = "-40px"; links[aBefore-1].className = ""; links[aIndex-1].className = "hover"; aBefore = aIndex; transition(slide,{begin:delta,change:distance,ease:easeInOutCubic,onEnd:function(){ move(tip); }}) setTimeout(arguments.callee,2000) },2000) })() } var move = function(el){ var begin = parseFloat(el.style.bottom),speed = 1; el.bottom = begin; (function(){ setTimeout(function(){ el.style.bottom = el.bottom + speed + "px";//移動 el.bottom += speed; speed *= 1.5;//下一次移動的距離 if(el.bottom >= 0){ el.style.bottom = "0px"; }else{ setTimeout(arguments.callee,25);//每移動一次停留25毫秒 } },25) })() } window.onload = function(){ Rotate("album"); } </script> <h4>javascript圖片輪換 by 司徒正美</h4> <div id="album"> <ul> <li> <a rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" id="index1"> <img alt="月光下的花瓣" src="http://images.cnblogs.com/cnblogs_com/rubylouvre/199042/o_s001.jpg" /> </a> <a rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" id="index2"> <img alt="清澈的湖水" src="http://images.cnblogs.com/cnblogs_com/rubylouvre/199042/o_s002.jpg" /> </a> <a rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" id="index3"> <img alt="荒漠上的植物" src="http://images.cnblogs.com/cnblogs_com/rubylouvre/199042/o_s003.jpg" /> </a> <a rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" id="index4"> <img alt="末日霓虹" src="http://images.cnblogs.com/cnblogs_com/rubylouvre/199042/o_s004.jpg" /> </a> <a rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" id="index5"> <img alt="綠·生意" src="http://images.cnblogs.com/cnblogs_com/rubylouvre/199042/o_s005.jpg" /> </a> <a rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" id="index6"> <img alt="又是收獲的季節(jié)" src="http://images.cnblogs.com/cnblogs_com/rubylouvre/199042/o_s006.jpg" /> </a> </li> </ul> <span> <a href="#index1" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >1</a> <a href="#index2" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >2</a> <a href="#index3" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >3</a> <a href="#index4" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >4</a> <a href="#index5" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >5</a> <a href="#index6" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >6</a> </span> </div>
最后為信息欄上的按鈕綁定點擊事件就行了。
<!doctype html> <title>javascript圖片輪換 by 司徒正美</title> <meta charset="utf-8"/> <meta name="keywords" content="javascript圖片輪換 by 司徒正美" /> <meta name="description" content="javascript圖片輪換 by 司徒正美" /> <style type="text/css"> #album { position:relative; width:400px; height:300px; border:10px solid #8080C0; } #album ul,#album li { list-style:none; margin:0; padding:0; } #album ul { position:relative; height:300px; width:400px; overflow:hidden; background:transparent url(http://images.cnblogs.com/cnblogs_com/rubylouvre/199042/o_s001.jpg) no-repeat 0 0; } #album li { position:absolute; width:1000%; } #album a { float:left; } #album img { display:block; border:0; } #album span { position:absolute; right:0; bottom:10px; } #album span a { display:block; margin-right:10px; width:15px; height:15px; line-height:15px; text-align:center; text-decoration:none; color:gray; background:transparent url(http://images.cnblogs.com/cnblogs_com/rubylouvre/199042/o_button.gif) no-repeat -15px 0; } #album span a:hover,#album span a.hover { color:#F8F8F8; background-position:0 0; } </style> <script type="text/javascript"> var easeInOutCubic= function(pos){ if ((pos/=0.5) < 1) return 0.5*Math.pow(pos,3); return 0.5 * (Math.pow((pos-2),3) + 2); } var transition = function(el){ var options = arguments[1] || {}, begin = options.begin,//開始位置 change = options.change,//變化量 duration = options.duration || 500,//緩動效果持續(xù)時間 ftp = options.ftp || 50, onEnd = options.onEnd || function(){}, ease = options.ease,//要使用的緩動公式 end = begin + change,//結(jié)束位置 startTime = new Date().getTime();//開始執(zhí)行的時間 (function(){ setTimeout(function(){ var newTime = new Date().getTime(),//當(dāng)前幀開始的時間 timestamp = newTime - startTime,//逝去時間 delta = ease(timestamp / duration); el.style.left = Math.ceil(begin + delta * change) + "px" if(duration <= timestamp){ el.style.left = end + "px"; onEnd(); }else{ setTimeout(arguments.callee,1000/ftp); } },1000/ftp) })() } var Rotate = function(id){ try{document.execCommand("BackgroundImageCache", false, true);}catch(e){}; var container = document.getElementById(id), slide = container.getElementsByTagName("li")[0], paginater = container.getElementsByTagName("span")[0], links = paginater.getElementsByTagName("a"), images = slide.getElementsByTagName("img"), length = links.length, aBefore = length, aIndex = 1; slide.innerHTML += slide.innerHTML; var tip = document.createElement("li");//信息欄 tip.style.cssText = "position:absolute;bottom:0;width:400px;height:40px;line-height:40px;text-indent:2em;"; slide.parentNode.appendChild(tip); if(!+"\v1"){ tip.style.cssText += "color:#369;background:#fff;filter:alpha(opacity=50)"; }else{ tip.style.cssText += "color:#fff;background: rgba(164, 173, 183, .65);"; } var item = slide.getElementsByTagName("a"), critical = item[length].offsetLeft,//臨界值 distance = critical/length, delta = - distance; paginater.onclick = function(e){//實現(xiàn)手動切換 e = e || window.event; var target = e.srcElement ? e.srcElement : e.target; if(target.nodeName.toLowerCase() == "a"){//事件代理 var _aIndex = aIndex; aIndex = target.getAttribute("href").slice(-1); !+"\v1" ?(e.returnValue = false) :(e.preventDefault()); delta = - distance * _aIndex; var change = (aIndex - _aIndex) * distance; if(aIndex >= _aIndex){ transition(slide,{begin:delta,change: change,ease:easeInOutCubic}) }else{ transition(slide,{begin:delta,change: -change,ease:easeInOutCubic}) } } }; (function(){/*實現(xiàn)自動輪換圖片*/ setTimeout(function(){ (aIndex > length) && (aIndex = 1); delta = - distance * aIndex; tip.innerHTML = images[aIndex-1].getAttribute("alt");//改變信息欄的文字 links[aBefore-1].className = "";//改變按鈕的樣式 links[aIndex-1].className = "hover";//改變按鈕的樣式 aBefore = aIndex; aIndex++; transition(slide,{begin:delta,change:distance,ease:easeInOutCubic}) setTimeout(arguments.callee,2000) },2000) })() } window.onload = function(){ Rotate("album"); } </script> <h4>javascript圖片輪換 by 司徒正美</h4> <div id="album"> <ul> <li> <a rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" id="index1"> <img alt="月光下的花瓣" src="http://images.cnblogs.com/cnblogs_com/rubylouvre/199042/o_s001.jpg" /> </a> <a rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" id="index2"> <img alt="清澈的湖水" src="http://images.cnblogs.com/cnblogs_com/rubylouvre/199042/o_s002.jpg" /> </a> <a rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" id="index3"> <img alt="荒漠上的植物" src="http://images.cnblogs.com/cnblogs_com/rubylouvre/199042/o_s003.jpg" /> </a> <a rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" id="index4"> <img alt="末日霓虹" src="http://images.cnblogs.com/cnblogs_com/rubylouvre/199042/o_s004.jpg" /> </a> <a rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" id="index5"> <img alt="綠·生意" src="http://images.cnblogs.com/cnblogs_com/rubylouvre/199042/o_s005.jpg" /> </a> <a rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" id="index6"> <img alt="又是收獲的季節(jié)" src="http://images.cnblogs.com/cnblogs_com/rubylouvre/199042/o_s006.jpg" /> </a> </li> </ul> <span> <a href="#index1" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >1</a> <a href="#index2" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >2</a> <a href="#index3" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >3</a> <a href="#index4" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >4</a> <a href="#index5" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >5</a> <a href="#index6" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >6</a> </span> </div>
有的人很懶,不喜歡點擊,想在按鈕上一掠而過也能看到效果。這簡單,我們把綁定函數(shù)獨立出來,分別綁定到onclick事件與onmouseover事件上就行了。現(xiàn)在我們換一個緩動公式,反正這東西多著呢。比如這個pulse,像蛇信子一樣來回多次振動(默認(rèn)5次,有第二個參數(shù)可以自己調(diào),我調(diào)到10次),非常有意思。你們可以試試一下子掠過所有按鈕,效果是何等的炫目!
<!doctype html> <title>javascript圖片輪換 by 司徒正美</title> <meta charset="utf-8"/> <meta name="keywords" content="javascript圖片輪換 by 司徒正美" /> <meta name="description" content="javascript圖片輪換 by 司徒正美" /> <style type="text/css"> #album { position:relative; width:400px; height:300px; border:10px solid #F2F1D7; } #album ul,#album li { list-style:none; margin:0; padding:0; } #album ul { position:relative; height:300px; width:400px; overflow:hidden; background:transparent url(http://images.cnblogs.com/cnblogs_com/rubylouvre/199042/o_s001.jpg) no-repeat 0 0; } #album li { position:absolute; width:1000%; } #album a { float:left; } #album img { display:block; border:0; } #album span { position:absolute; right:0; bottom:10px; } #album span a { display:block; margin-right:10px; width:15px; height:15px; line-height:15px; text-align:center; text-decoration:none; color:gray; background:transparent url(http://images.cnblogs.com/cnblogs_com/rubylouvre/199042/o_button.gif) no-repeat -15px 0; } #album span a:hover,#album span a.hover { color:#F8F8F8; background-position:0 0; } </style> <script type="text/javascript"> var pulse = function(pos, pulses) { return (-Math.cos((pos*((pulses||5)-.5)*2)*Math.PI)/2) + .5; } var transition = function(el){ var options = arguments[1] || {}, begin = options.begin,//開始位置 change = options.change,//變化量 duration = options.duration || 500,//緩動效果持續(xù)時間 ftp = options.ftp || 50, onEnd = options.onEnd || function(){}, ease = options.ease,//要使用的緩動公式 end = begin + change,//結(jié)束位置 startTime = new Date().getTime();//開始執(zhí)行的時間 (function(){ setTimeout(function(){ var newTime = new Date().getTime(),//當(dāng)前幀開始的時間 timestamp = newTime - startTime,//逝去時間 delta = ease(timestamp / duration,10); el.style.left = Math.ceil(begin + delta * change) + "px" if(duration <= timestamp){ el.style.left = end + "px"; onEnd(); }else{ setTimeout(arguments.callee,1000/ftp); } },1000/ftp) })() } var Rotate = function(id){ try{document.execCommand("BackgroundImageCache", false, true);}catch(e){}; var container = document.getElementById(id), slide = container.getElementsByTagName("li")[0], paginater = container.getElementsByTagName("span")[0], links = paginater.getElementsByTagName("a"), images = slide.getElementsByTagName("img"), length = links.length, aBefore = length, aIndex = 1; slide.innerHTML += slide.innerHTML; var tip = document.createElement("li");//信息欄 tip.style.cssText = "position:absolute;bottom:0;width:400px;height:40px;line-height:40px;text-indent:2em;"; slide.parentNode.appendChild(tip); if(!+"\v1"){ tip.style.cssText += "color:#369;background:#fff;filter:alpha(opacity=50)"; }else{ tip.style.cssText += "color:#fff;background: rgba(164, 173, 183, .65);"; } var item = slide.getElementsByTagName("a"), critical = item[length].offsetLeft,//臨界值 distance = critical/length, delta = - distance; var manualSlippage = function(){ var e = arguments[0] || window.event; var target = e.srcElement ? e.srcElement : e.target; if(target.nodeName.toLowerCase() == "a"){//事件代理 var _aIndex = aIndex; aIndex = target.getAttribute("href").slice(-1); !+"\v1" ?(e.returnValue = false) :(e.preventDefault()); delta = - distance * _aIndex; var change = (aIndex - _aIndex) * distance; (aIndex >= _aIndex) && (change = -change); transition(slide,{begin:delta,change: change,ease:pulse}); } } paginater.onmouseover = manualSlippage; paginater.onclick = manualSlippage; (function(){/*實現(xiàn)自動輪換圖片*/ setTimeout(function(){ (aIndex > length) && (aIndex = 1); delta = - distance * aIndex; tip.innerHTML = images[aIndex-1].getAttribute("alt");//改變信息欄的文字 links[aBefore-1].className = "";//改變按鈕的樣式 links[aIndex-1].className = "hover";//改變按鈕的樣式 aBefore = aIndex; aIndex++; transition(slide,{begin:delta,change:distance,ease:pulse}) setTimeout(arguments.callee,2000) },2000) })() } window.onload = function(){ Rotate("album"); } </script> <h4>javascript圖片輪換 by 司徒正美</h4> <div id="album"> <ul> <li> <a rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" id="index1"> <img alt="月光下的花瓣" src="http://images.cnblogs.com/cnblogs_com/rubylouvre/199042/o_s001.jpg" /> </a> <a rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" id="index2"> <img alt="清澈的湖水" src="http://images.cnblogs.com/cnblogs_com/rubylouvre/199042/o_s002.jpg" /> </a> <a rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" id="index3"> <img alt="荒漠上的植物" src="http://images.cnblogs.com/cnblogs_com/rubylouvre/199042/o_s003.jpg" /> </a> <a rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" id="index4"> <img alt="末日霓虹" src="http://images.cnblogs.com/cnblogs_com/rubylouvre/199042/o_s004.jpg" /> </a> <a rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" id="index5"> <img alt="綠·生意" src="http://images.cnblogs.com/cnblogs_com/rubylouvre/199042/o_s005.jpg" /> </a> <a rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" id="index6"> <img alt="又是收獲的季節(jié)" src="http://images.cnblogs.com/cnblogs_com/rubylouvre/199042/o_s006.jpg" /> </a> </li> </ul> <span> <a href="#index1" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >1</a> <a href="#index2" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >2</a> <a href="#index3" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >3</a> <a href="#index4" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >4</a> <a href="#index5" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >5</a> <a href="#index6" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >6</a> </span> </div> <p>使用的是多次搖晃的殘影特效pulse.<p>
到此這篇關(guān)于javascript實現(xiàn)圖片輪換動作方法的文章就介紹到這了,更多相關(guān)javascript圖片輪換內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JavaScript toUpperCase()方法使用詳解
這篇文章主要為大家詳細(xì)介紹了JavaScript toUpperCase()方法的使用技巧,感興趣的小伙伴們可以參考一下2016-08-08JavaScript簡單實現(xiàn)動態(tài)改變HTML內(nèi)容的方法示例
這篇文章主要介紹了JavaScript簡單實現(xiàn)動態(tài)改變HTML內(nèi)容的方法,結(jié)合實例形式分析了javascript簡單獲取及修改HTML元素的相關(guān)操作技巧,非常簡單易懂,需要的朋友可以參考下2018-12-12javascript驗證內(nèi)容為數(shù)字以及長度為10的簡單實例
下面小編就為大家?guī)硪黄猨avascript驗證內(nèi)容為數(shù)字以及長度為10的簡單實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-08-08如何將一個String和多個String值進(jìn)行比較思路分析
開發(fā)中我們經(jīng)常需要將一個String和多個String值進(jìn)行比較。直覺反應(yīng)是使用||符號連接多個===完成,感興趣的朋友可以了解下哈2013-04-04Nuxt3?布局layouts和NuxtLayout的使用詳解
layouts是Nuxt3提供的一種方便開發(fā)者快速實現(xiàn)自定義布局的約定,是基于Vue3的一個開發(fā)框架,基于服務(wù)器端渲染SSR,可以更加方便的用于Vue的SEO優(yōu)化,這篇文章主要介紹了Nuxt3?布局layouts和NuxtLayout的使用,需要的朋友可以參考下2023-04-04