接触jquery有段时间了,终于照着写了我的第一个jquery插件,用来生成fusinocharts的html代码,我注意到用fusincharts提供的函数生成chart空白边距太大,最明显的在标题和图形之间空得太多,但我不能控制它。于是我将flash生成在一个div内,且将它设置置于底层,固定好div高宽,让内层的flash放大,这样就得到我想要的大小又没有多于的空白边距了。
(function($) {
$.fn.FusionChart = function(options) {
var opts = $.extend({}, $.fn.FusionChart.defaults, options);
var width=opts.width;
var height=opts.height;
var zoom=opts.zoom;
var src=opts.src;
var data=opts.data;
var title=opts.title;
var bgcolor=opts.bgcolor;
var titH=Math.floor(height*0.3);
if(!title)titH=0;
return this.each(function() {
$this = $(this);
var tit=$('<div></div>');
tit.text(title);
var swf=$('<div></div>');
var swfWidth=Math.floor(width*zoom);
var swfHeight=Math.floor(height*zoom);
swf.html(swfHTML(swfWidth,swfHeight,src,data));
var marginTop=-1*Math.floor((height-titH)*(zoom-1)/2);
var marginLeft=-1*Math.floor(width*(zoom-1)/2);
var con=$('<div></div>');
con.append(swf).append(tit);
con.css({width:width,height:height,'text-align':'center','margin-right':'auto','margin-left':'auto',overflow:'hidden'});
con.css({position:'relative'});
swf.css({width:swfWidth,height:swfHeight,'margin-top':marginTop,'margin-left':marginLeft});
swf.css({position:'absolute',top:0,left:0});
$this.empty().append(con);
tit.css({'text-align':'center','margin-right':'auto','margin-left':'auto',overflow:'hidden','font-size':'13px'});
tit.css({position:'absolute',top:5,left:0,width:'100%'});
});
function swfHTML(width,height,src,dataXML,bgcolor){
var swfNode='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="'+ width +'" height="'+ height +'">"';
swfNode += '<param name="movie" value="'+ src+'?chartWidth='+width+'&chartHeight='+height+'" />';
swfNode += '<param name="quality" value="high" />';
swfNode += '<param name="wmode" value="Opaque" />';
swfNode += '<param name="bgcolor" value="'+bgcolor+'" />';
swfNode += '<param name="FlashVars" value="&dataXML='+dataXML+'" />';
swfNode += '<embed src="'+src+'?chartWidth='+width+'&chartHeight='+height+'" ';
swfNode += 'flashVars="&dataXML='+dataXML+'" ';
swfNode += 'quality="high" width="'+width+'" height="'+height+'" wmode="Opaque" bgcolor="'+bgcolor+'"';
swfNode += 'type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />';
swfNode += '</object>';
return swfNode;
}
}
$.fn.FusionChart.defaults = {
width:250,
height:200,
src:'',
data:'',
title:'',
zoom:1,
bgcolor:'#FFFFFF'
}
})(jQuery);
FusionCharts自定义插件
本文介绍了一个自定义的jQuery插件,用于生成FusionCharts图表并优化其空白边距。通过调整缩放比例和定位,实现了更紧凑的图表布局。
205

被折叠的 条评论
为什么被折叠?



