使用 JavaScript 創(chuàng)建可維護(hù)的幻燈片效果代碼
更新時間:2008年06月22日 21:59:06 作者:
顯然,效果很實(shí)用。對于這個效果,我們并不解釋如何去使用效果庫,而是講解如何創(chuàng)建類似的效果,并保持他的可用性,分離式(unobtrusive),可維護(hù)性(讓未來的維護(hù)者,在不需要修改你的腳本的情況下,修改圖片,外觀或文本標(biāo)簽)。
下一步要做的是,分離外觀的 class 和 ID 到一個單獨(dú)的包含文件。保證他們在 slideshow 命名空間里是安全的,因?yàn)槠渌_本不太可能用到他們。也不會妨礙寫一個簡短的說明注釋。
slideshow-css.js:
slideshow.css = {
/*
這些都是幻燈片效果中使用到的 classe 和 ID。
你可以在這里修改他們中的任何一個。
務(wù)必請使用引號包圍名稱,用逗號結(jié)尾(除了最后一個)。
*/
showID :'slideshow',
dynamicClass :'js',
slideNavigationClass :'slidenav',
currentClass :'current'
}
文本標(biāo)簽(Text labels)—— 解釋給終端用戶
最后但不是最不重要的,讓我們將文本標(biāo)簽放到一個單獨(dú)的包含文件,再次使用 slideshow 命名空間。
slideshow-labels.js:
slideshow.labels = {
/*
這些都是幻燈片效果中使用到文本標(biāo)簽。
你可以在這里修改他們中的任何一個。
務(wù)必請使用引號包圍名稱。
最后一個結(jié)尾不用逗號。
*/
previous : '<<',
next : '>>',
counterDivider : ‘ of ‘
}
改變的主要腳本
然后,我們需要修改主要腳本使用此信息,而不是依賴嵌入式的數(shù)據(jù)。沒有太多的改變,很容易用搜索加替換就能做到。
slideshow.js:
slideshow = {
current:0,
init:function(){
if(document.getElementById && document.createTextNode){
var list =document.getElementById(slideshow.css.showID);
if(list){
slideshow.items = list.getElementsByTagName('li');
slideshow.all = slideshow.items.length;
if(slideshow.all > 1){
tools.addClass(list, slideshow.css.dynamicClass);
slideshow.createNav(list);
}
}
slideshow.show();
}
},
createNav:function(o){
var p = document.createElement('p');
tools.addClass(p, slideshow.css.slideNavigationClass);
slideshow.prev = document.createElement('a');
slideshow.prev.setAttribute('href', '#');
var templabel = document.createTextNode(slideshow.labels.previous);
slideshow.prev.appendChild(templabel);
tools.addEvent(slideshow.prev, 'click', slideshow.show);
p.appendChild(slideshow.prev);
slideshow.count = document.createElement('span');
templabel =document.createTextNode((slideshow.current+1) + slideshow.labels.counterDivider + slideshow.all);
slideshow.count.appendChild(templabel);
p.appendChild(slideshow.count);
slideshow.next = document.createElement('a');
slideshow.next.setAttribute('href', '#');
var templabel = document.createTextNode(
slideshow.labels.next);
slideshow.next.appendChild(templabel);
tools.addEvent(slideshow.next, 'click', slideshow.show);
p.appendChild(slideshow.next);
o.parentNode.insertBefore(p, o);
},
show:function(e){
if(this === slideshow.next || this === slideshow.prev){
tools.removeClass(slideshow.items[slideshow.current],
slideshow.css.currentClass);
var addto = this === slideshow.next ? 1 : -1;
slideshow.current = slideshow.current + addto;
if(slideshow.current < 0){
slideshow.current = (slideshow.all-1);
}
if(slideshow.current > slideshow.all-1){
slideshow.current = 0;
}
}
var templabel = document.createTextNode((slideshow.current+1) + slideshow.labels.counterDivider + slideshow.all);
slideshow.count.replaceChild(templabel, slideshow.count.firstChild);
tools.addClass(slideshow.items[slideshow.current], slideshow.css.currentClass);
tools.cancelClick(e);
}
}
tools.addEvent(window,'load',slideshow.init);
這些所有文件是確保將來維護(hù)者不用麻煩你就可以使用你的腳本工作所需要的。文件名應(yīng)該很明顯,是什么就是什么,并能隨著時間的推移,成為一個標(biāo)準(zhǔn)的腳本:
相關(guān)文章
JavaScript之瀏覽器對象_動力節(jié)點(diǎn)Java學(xué)院整理
JavaScript可以獲取瀏覽器提供的很多對象,并進(jìn)行操作。下面通過本文給大家介紹JavaScript之瀏覽器對象的相關(guān)知識,一起看看吧2017-07-07使用Bootstrap美化按鈕實(shí)例代碼(demo)
這篇文章主要介紹了使用Bootstrap美化按鈕實(shí)例代碼(demo),非常不錯,具有參考借鑒價值,需要的朋友可以參考下2017-02-02js設(shè)計模式之結(jié)構(gòu)型享元模式詳解
這篇文章主要為大家詳細(xì)介紹了js設(shè)計模式之結(jié)構(gòu)型享元模式的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-09-09ES6 Iterator遍歷器原理,應(yīng)用場景及相關(guān)常用知識拓展詳解
這篇文章主要介紹了ES6 Iterator遍歷器原理,應(yīng)用場景及相關(guān)常用知識拓展,結(jié)合實(shí)例形式詳細(xì)分析了ES6 Iterator遍歷器具體原理、功能、用法、應(yīng)用場景及知識拓展,需要的朋友可以參考下2020-02-02JS中數(shù)組實(shí)現(xiàn)代碼(倒序遍歷數(shù)組,數(shù)組連接字符串)
這篇文章主要介紹了JS中數(shù)組實(shí)現(xiàn)代碼(倒序遍歷數(shù)組,數(shù)組連接字符串),代碼簡單易懂,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2019-12-12解決layui中table異步數(shù)據(jù)請求不支持自定義返回數(shù)據(jù)格式的問題
今天小編就為大家分享一篇解決layui中table異步數(shù)據(jù)請求不支持自定義返回數(shù)據(jù)格式的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-08-08js前臺分頁顯示后端JAVA數(shù)據(jù)響應(yīng)
js前臺分頁顯示使用jquery1.8.7框架,本文目的主要給那些剛?cè)胄熊浖_發(fā),喜歡這也看看,程序需要有投入才有收獲感興趣的你可不要錯過了哈,希望可以幫助到你2013-03-03