来自链接 http://www.kylejlarson.com/blog/2011/how-to-create-pie-charts-with-css3/
我正在寻找一个用css制作饼图的快速解决方案。我不知道css的深度实现。
这么快就成了小提琴: http://jsfiddle.net/S8gj2/
var setButti = function(n, p, f) {
var total = n + p + f;
var atrs = { 'tc-passed' : p*360/total, 'tc-failed' : f*360/total, 'tc-ne' : n*360/total };
var butti = $('#buttiEl');
butti.html('<div class="pieContainer"><div class="pieBackground"></div></div>');
for (var key in atrs) {
$('.pieBackground', butti).append('<div class="'+key+' hold"><div class="pie"></div></div>').
css('-webkit-transform', 'rotate('+atrs[key]+'deg)').
css('-moz-transform', 'rotate('+atrs[key]+'deg)').
css('-o-transform', 'rotate('+atrs[key]+'deg)').
css('transform', 'rotate('+atrs[key]+'deg)');
}
};
setButti(1,1,1);
但它没有显示饼图它只是一个灰色圆圈。 任何人都可以帮助制作这个饼图。
答案 0 :(得分:1)
您需要更改您的javascript以使用适当的旋转偏移在DOM中的适当位置创建div。
var setButti = function(n, p, f) {
var total = n + p + f;
var atrs = { 'tc-passed' : p*360/total, 'tc-failed' : f*360/total, 'tc-ne' : n*360/total };
var butti = $('#buttiEl');
butti.html('<div class="pieContainer"><div class="pieBackground"></div></div>');
var offset = 0;
for (var key in atrs) {
var wedgeWidth = atrs[key];
if (wedgeWidth > 180) {
$('.pieContainer', butti).append(buildWedge(key, 180, offset));
wedgeWidth -= 180;
offset += 180;
}
$('.pieContainer', butti).append(buildWedge(key, wedgeWidth, offset));
offset += wedgeWidth * 1;
}
};
function buildWedge(cssClass, wedgeWidth, offset) {
var wedge = $('<div class="pie"></div>').
css('-webkit-transform', 'rotate('+ wedgeWidth +'deg)').
css('-moz-transform', 'rotate('+ wedgeWidth +'deg)').
css('-o-transform', 'rotate('+ wedgeWidth+'deg)').
css('transform', 'rotate('+wedgeWidth +'deg)');
var container = $('<div class="'+cssClass+' hold"></div>').
css('-webkit-transform', 'rotate('+ offset +'deg)').
css('-moz-transform', 'rotate('+ offset +'deg)').
css('-o-transform', 'rotate('+ offset +'deg)').
css('transform', 'rotate('+offset +'deg)');
container.append(wedge);
return container;
}