Posted in Javascript onApril 02, 2010
插件需求
1,向左或者右移动列表中的元素.(注,上下方向也一样的,用css控制列表元素float的方向即可~)
2,鼠标移动到某个元素上时,改元素突出显示(css控制),播放器停止滚动。移开后继续跑马。。
3,可选左右手工导航按钮。
实现原理
移动列表末尾元素到第一个元素前面即可。
将来的扩展(以后用到的话再看吧)
多个元素同时移动;移动时的效果;移动后的回调函数;(注:利用移动后的回调函数可以方便做一个相册插件,有兴趣的自己写下)。做开发的人要记住一句话:Do the simplest thing that could possibly work!做最简单可用的东东,千万别过分设计。
xMarquee API说明
1,dom规约
看下面源码处~2,css示例
看下面源码处~
3,主方法调用
<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);
打包下载地址
JQuery 插件制作实践 xMarquee插件V1.0
声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。
Reply on: @reply_date@
@reply_contents@