JQuery 插件制作實(shí)踐 xMarquee插件V1.0
更新時(shí)間:2010年04月02日 00:07:15 作者:
今天要介紹的是實(shí)現(xiàn)類跑馬燈效果的的廣告插件。類似偶公司web-dev的同事在網(wǎng)站首頁(yè)上做的目錄廣告播放器。其實(shí)很簡(jiǎn)單,LEVIN實(shí)際應(yīng)用中也用到,所以稍作整理如下.
插件需求
1,向左或者右移動(dòng)列表中的元素.(注,上下方向也一樣的,用css控制列表元素float的方向即可~)
2,鼠標(biāo)移動(dòng)到某個(gè)元素上時(shí),改元素突出顯示(css控制),播放器停止?jié)L動(dòng)。移開后繼續(xù)跑馬。。
3,可選左右手工導(dǎo)航按鈕。
實(shí)現(xiàn)原理
移動(dòng)列表末尾元素到第一個(gè)元素前面即可。
將來(lái)的擴(kuò)展(以后用到的話再看吧)
多個(gè)元素同時(shí)移動(dòng);移動(dòng)時(shí)的效果;移動(dòng)后的回調(diào)函數(shù);(注:利用移動(dòng)后的回調(diào)函數(shù)可以方便做一個(gè)相冊(cè)插件,有興趣的自己寫下)。做開發(fā)的人要記住一句話:Do the simplest thing that could possibly work!做最簡(jiǎn)單可用的東東,千萬(wàn)別過(guò)分設(shè)計(jì)。
xMarquee API說(shuō)明
1,dom規(guī)約
看下面源碼處~2,css示例
看下面源碼處~
3,主方法調(diào)用
<script type="text/javascript">
//<![CDATA[
$("#wk_featured_items").xMarquee({});
//]]>
</script>
插件源碼
; (function($) {
// Private functions.
var p = {};
p.stop = function(evt) { if (evt) { $(this).addClass(p._opts.on); }; window.clearInterval(p._intervalID); };
p.slide = function() {
if (p._opts.dir == 1) {
p._i.filter(":last").hide().fadeIn(p._opts.fadein).prependTo(p._t);
} else {
if (p._opts.vnum < p._cnt) {
p._i.filter(":first").fadeOut(p._opts.fadeout).appendTo(p._t);
p._i.filter(":eq(" + p._opts.vnum + ")").fadeIn(p._opts.fadein);
} else {
p._i.filter(":first").hide().appendTo(p._t).fadeIn(p._opts.fadein);
};
};
//refresh
p._i = $(p._opts.i, p._t);
//visibility
p._i.filter(":gt(" + (p._opts.vnum - 1) + ")").hide();
}; //slide
p.go = function(evt) {
p.stop();
if (evt) {
$(this).removeClass(p._opts.on);
};
p._intervalID = window.setInterval(function() { p.slide(); }, p._opts.interval);
}; //go
//main plugin body
$.fn.xMarquee = function(options) {
// Set the options.
options = $.extend({}, $.fn.xMarquee.defaults, options);
p._opts = options;
// Go through the matched elements and return the jQuery object.
return this.each(function() {
//NOTE:if wanna support multiple marquee instance,we should cache private variable via $(this).data("v",v)
p._t = this; //marquee target;
//silde items
p._i = $(p._opts.i, p._t);
p._cnt = p._i.size();
p._intervalID = null;
//hide unwanted items
p._i.filter(":gt(" + (p._opts.vnum - 1) + ")").hide();
p._i.hover(p.stop, p.go);
//buttons registeration
$(p._opts.btn0).click(function(evt) { p._opts.dir = 0; p.stop(); p.slide(); return false; }).mouseout(p.go);
$(p._opts.btn1).click(function(evt) { p._opts.dir = 1; p.stop(); p.slide(); return false; }).mouseout(p.go);
//trigger the slidebox
p.go();
});
};
// Public defaults.
$.fn.xMarquee.defaults = {
on: 'cur',
i: 'li', //slide items css selector
interval: 5000,
fadein: 300,
fadeout: 200,
vnum: 4, //visible marquee items
dir: 1, //marquee direaction.1=right;0=left;
btn0: '.prev', //prev button
btn1: '.next'//next button
};
})(jQuery);
打包下載地址
1,向左或者右移動(dòng)列表中的元素.(注,上下方向也一樣的,用css控制列表元素float的方向即可~)
2,鼠標(biāo)移動(dòng)到某個(gè)元素上時(shí),改元素突出顯示(css控制),播放器停止?jié)L動(dòng)。移開后繼續(xù)跑馬。。
3,可選左右手工導(dǎo)航按鈕。
實(shí)現(xiàn)原理
移動(dòng)列表末尾元素到第一個(gè)元素前面即可。
將來(lái)的擴(kuò)展(以后用到的話再看吧)
多個(gè)元素同時(shí)移動(dòng);移動(dòng)時(shí)的效果;移動(dòng)后的回調(diào)函數(shù);(注:利用移動(dòng)后的回調(diào)函數(shù)可以方便做一個(gè)相冊(cè)插件,有興趣的自己寫下)。做開發(fā)的人要記住一句話:Do the simplest thing that could possibly work!做最簡(jiǎn)單可用的東東,千萬(wàn)別過(guò)分設(shè)計(jì)。
xMarquee API說(shuō)明
1,dom規(guī)約
看下面源碼處~2,css示例
看下面源碼處~
3,主方法調(diào)用
復(fù)制代碼 代碼如下:
<script type="text/javascript">
//<![CDATA[
$("#wk_featured_items").xMarquee({});
//]]>
</script>
插件源碼
復(fù)制代碼 代碼如下:
; (function($) {
// Private functions.
var p = {};
p.stop = function(evt) { if (evt) { $(this).addClass(p._opts.on); }; window.clearInterval(p._intervalID); };
p.slide = function() {
if (p._opts.dir == 1) {
p._i.filter(":last").hide().fadeIn(p._opts.fadein).prependTo(p._t);
} else {
if (p._opts.vnum < p._cnt) {
p._i.filter(":first").fadeOut(p._opts.fadeout).appendTo(p._t);
p._i.filter(":eq(" + p._opts.vnum + ")").fadeIn(p._opts.fadein);
} else {
p._i.filter(":first").hide().appendTo(p._t).fadeIn(p._opts.fadein);
};
};
//refresh
p._i = $(p._opts.i, p._t);
//visibility
p._i.filter(":gt(" + (p._opts.vnum - 1) + ")").hide();
}; //slide
p.go = function(evt) {
p.stop();
if (evt) {
$(this).removeClass(p._opts.on);
};
p._intervalID = window.setInterval(function() { p.slide(); }, p._opts.interval);
}; //go
//main plugin body
$.fn.xMarquee = function(options) {
// Set the options.
options = $.extend({}, $.fn.xMarquee.defaults, options);
p._opts = options;
// Go through the matched elements and return the jQuery object.
return this.each(function() {
//NOTE:if wanna support multiple marquee instance,we should cache private variable via $(this).data("v",v)
p._t = this; //marquee target;
//silde items
p._i = $(p._opts.i, p._t);
p._cnt = p._i.size();
p._intervalID = null;
//hide unwanted items
p._i.filter(":gt(" + (p._opts.vnum - 1) + ")").hide();
p._i.hover(p.stop, p.go);
//buttons registeration
$(p._opts.btn0).click(function(evt) { p._opts.dir = 0; p.stop(); p.slide(); return false; }).mouseout(p.go);
$(p._opts.btn1).click(function(evt) { p._opts.dir = 1; p.stop(); p.slide(); return false; }).mouseout(p.go);
//trigger the slidebox
p.go();
});
};
// Public defaults.
$.fn.xMarquee.defaults = {
on: 'cur',
i: 'li', //slide items css selector
interval: 5000,
fadein: 300,
fadeout: 200,
vnum: 4, //visible marquee items
dir: 1, //marquee direaction.1=right;0=left;
btn0: '.prev', //prev button
btn1: '.next'//next button
};
})(jQuery);
打包下載地址
您可能感興趣的文章:
- jQuery插件jquery.kxbdmarquee.js實(shí)現(xiàn)無(wú)縫滾動(dòng)效果
- jQuery模擬Marquee實(shí)現(xiàn)無(wú)縫滾動(dòng)效果完整實(shí)例
- JQuery插件Marquee.js實(shí)現(xiàn)無(wú)縫滾動(dòng)效果
- jQuery實(shí)現(xiàn)模擬marquee標(biāo)簽效果
- jquery xMarquee實(shí)現(xiàn)文字水平無(wú)縫滾動(dòng)效果
- jquery實(shí)現(xiàn)marquee效果(文字或者圖片的水平垂直滾動(dòng))
- JQuery實(shí)現(xiàn)文字無(wú)縫滾動(dòng)效果示例代碼(Marquee插件)
相關(guān)文章
jq實(shí)現(xiàn)左側(cè)顯示圖片右側(cè)文字滑動(dòng)切換效果
這篇文章是基于jq技術(shù)實(shí)現(xiàn)左側(cè)顯示圖片右側(cè)文字滑動(dòng)切換效果的相關(guān)資料,有需要的小伙伴可以來(lái)參考下2015-08-08
jQuery ready方法實(shí)現(xiàn)原理詳解
這篇文章主要介紹了jQuery ready方法實(shí)現(xiàn)原理詳解的相關(guān)資料,需要的朋友可以參考下2016-10-10
jQuery插件HighCharts繪制2D帶有Legend的餅圖效果示例【附demo源碼下載】
這篇文章主要介紹了jQuery插件HighCharts繪制2D帶有Legend的餅圖效果,結(jié)合實(shí)例形式分析了jQuery使用HighCharts繪制帶明細(xì)顯示的餅狀圖效果實(shí)現(xiàn)技巧,并附帶了demo源碼供讀者下載參考,需要的朋友可以參考下2017-03-03
瀑布流布局并自動(dòng)加載實(shí)現(xiàn)代碼
Pinterest使用一種新的方式布局取得成功之后,們把他叫做瀑布流,國(guó)內(nèi)現(xiàn)有美麗說(shuō),蘑菇街,花瓣等代表的網(wǎng)站接下來(lái)為你介紹一個(gè)juqery的插件masonry的使用,感興趣的你可以參考下哈2013-03-03
jQuery實(shí)現(xiàn)Email郵箱地址自動(dòng)補(bǔ)全功能代碼
這篇文章主要介紹了jQuery實(shí)現(xiàn)Email郵箱地址自動(dòng)補(bǔ)全功能代碼,涉及jQuery鼠標(biāo)事件及字符操作的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-11-11
jQuery中add實(shí)現(xiàn)同時(shí)選擇兩個(gè)id對(duì)象
jquery同時(shí)選擇兩個(gè)id對(duì)象的時(shí)候,可以用add來(lái)實(shí)現(xiàn)。2010-10-10

