Javascript 下载时是否有办法使正确的切换图例显示?
我使用的是c3图表。我有一个使用canvg下载的按钮。我也有它切换栏时,图例点击。下载有效,切换也有效 下载中唯一的问题是,我可以始终显示图例(即使它们对应的条形图没有显示),或者只要切换图例,图例就不会再次出现在下载中(尽管它会出现在图表上) 我想要的是,只有当相应的条形图实际显示时,图例才会出现。我也不希望图例被隐藏,如果他们的酒吧正在显示。(显示的图例栏显示了一种关系) 我过去在IE上遇到过问题,所以在显示之后是“阻塞”Javascript 下载时是否有办法使正确的切换图例显示?,javascript,d3.js,bar-chart,legend,c3.js,Javascript,D3.js,Bar Chart,Legend,C3.js,我使用的是c3图表。我有一个使用canvg下载的按钮。我也有它切换栏时,图例点击。下载有效,切换也有效 下载中唯一的问题是,我可以始终显示图例(即使它们对应的条形图没有显示),或者只要切换图例,图例就不会再次出现在下载中(尽管它会出现在图表上) 我想要的是,只有当相应的条形图实际显示时,图例才会出现。我也不希望图例被隐藏,如果他们的酒吧正在显示。(显示的图例栏显示了一种关系) 我过去在IE上遇到过问题,所以在显示之后是“阻塞” var string = ".c3-legend-item-hidd
var string = ".c3-legend-item-hidden";//hides legends that are unselected in the download. Will KEEP them hidden even if retoggled :(
d3.selectAll(string).each(function() {
var element = this;
var computedStyle = getComputedStyle(element, null);
for (var i = 0; i < computedStyle.length; i++) {
var property = computedStyle.item(i);
element.style[property] = computedStyle.getPropertyValue(property);
}
});
//removing this section makes all legends appear permanently regardless of whether the bar does
var string=“.c3图例项隐藏”//隐藏下载中未选择的图例。即使重新跟踪,也会将它们隐藏起来:(
d3.选择全部(字符串)。每个(函数(){
var元素=这个;
var computedStyle=getComputedStyle(元素,null);
对于(var i=0;i
预期:
实际:
(带代码段)
(无代码段)
更新:澄清一下,这在将图形转换为下载的svg文件(添加xmlns等)时有效,但在使用canvg和下载到png文件(这是我需要它做的)时无效。手动设置所需的样式,而不是使用计算样式 这个解决方案对我有效(“隐藏的”图例略微可见,但现在它与我的实际图表完全相同,这是我个人所需要的):
计算样式提供的样式比您需要的多得多,并且可以覆盖您想要的样式。手动设置您需要的样式,而不是使用计算样式 这个解决方案对我有效(“隐藏的”图例略微可见,但现在它与我的实际图表完全相同,这是我个人所需要的): 计算样式提供的样式比您需要的多得多,并且可以覆盖您想要的样式
var string = ".c3-legend-item-hidden";
d3.selectAll(string).each(function() {
//this.style['visibility']='hidden'; // uncomment this out and it will completely hide the legend if that is what you want
this.style['opacity']= 0.15;
// set opacity as 0 to make the legend transparent to the point you can't see it (if that is what you want)
// or 0.15 to make it like the chart (as done here and in c3.css)
});