【发布时间】:2021-11-30 04:51:32
【问题描述】:
我有一个离散数据的颜色图例,它是使用 SVG 完成的。但是我在显示整个内容时遇到了问题,因为它正在被裁剪。我无法定义固定高度,因为内容是动态的。
仅供参考:我的代码是用 react 编写的
注意:我可以给出 overflow: visible 并使内容可见,但同样的问题在于给出背景颜色(背景颜色不会适用于溢出的内容)。
代码链接:https://jsfiddle.net/rb4p9max/4/
React.useEffect(() => {
// calling legend function and passing div id to function
colorLegend("#legend");
}, [dep]);
function colorLegend(legend: string) {
// logic
select(legend)
.append("svg")
.attr("height", 100 + "%")
.attr("width", 100 + "%")
.style("background-color", "black")
.style("border-radius", "5px")
.call(colorLegend);
}
return (
<div style={{position: "absolute",right: 16,top: 10,backgroundColor:
"grey"}}>
<div id="legend"></div>
</div>
);
【问题讨论】:
-
您的 SVG 缺少 viewBox 属性,例如 viewBox="0 0 80 175" 其中 175 = 7 * 25 因为您的图例有 7 个项目
-
@enxaneta 我有图例的垂直和水平布局,垂直我使用了“变换”、“旋转(90度)”。如何计算垂直布局的高度和宽度?
-
恐怕我听不懂你。请在一个新问题中提出所有这些问题,不要忘记添加具有所需结果的图像
-
我同意你的看法。我为我的图例垂直布局应用了 rapheal 解决方案 (height: calc(22px * ${legends.length} + (4px * ${legends.length -1}));) 并且它有效。但是给出水平布局的问题(我将它旋转到 90 度)。我也需要适当的宽度和高度来进行水平布局。例如:jsfiddle.net/518enwam/3