(function ($) { $.fn.fancyList = function (element, clear) { var cfg = { element: "li", clear: "clear" }; if (typeof element == "object") cfg = $.extend(cfg, element); else { if (element) cfg = $.extend(cfg, { element: element }); if (clear) cfg = $.extend(cfg, { clear: clear }); } var $element = this.find(cfg.element); var $this = this; if ($element.size() < 1) return; function item_arrange() { var $el = $element.filter(":first"); var padding = 0; if ($el.data("padding-right") == undefined) { padding = parseInt($el.css("padding-right")); $el.data("padding-right", padding); } else padding = $el.data("padding-right"); $element.css("padding-left", 0).css("padding-right", padding); $element.filter("." + cfg.clear).removeClass(cfg.clear); var wrap_width = parseInt($this.width()); var item_width = parseInt($el.outerWidth()); var line_count = parseInt((wrap_width + padding) / item_width); if (line_count == 0) return; var space = parseInt(wrap_width % item_width); if ((space + padding) < item_width) { space = wrap_width - ((item_width - padding) * line_count); var new_padding = parseInt(space / (line_count * 2)); if (new_padding > padding) $element.css("padding-left", new_padding + "px").css("padding-right", new_padding); } $element.filter(":nth-child(" + line_count + "n)").css("padding-right", 0); $element.filter(":nth-child(" + line_count + "n+1)").addClass(cfg.clear); } item_arrange(); $(window).resize(function () { item_arrange(); }); } }(jQuery));