SVG 内容被裁剪为动态值
SVG content get cropped for dynamic values
我有一个离散数据的颜色图例,它是使用 SVG 完成的。但是我在显示整个内容时遇到了问题,因为它正在被裁剪。我无法定义固定高度,因为内容是动态的。
仅供参考:我的代码是用 React 编写的
注意:我可以提供 overflow: visible 并使内容可见,但问题又出现在提供背景颜色上(背景颜色不适用于溢出的内容)。
代码link: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>
);
很难用反应代码中的一个小例子来回答这个问题。但是,根据您提交的 fiddle,您可以设置固定高度,但要根据您拥有的图例数量。类似于:
height: calc(22px * 7 + (4px * 6));
解释数字:
22px * 7 是因为每个正方形的高度都是 22px。
4px * 6 是占底边距。最后一个不需要底边距。
https://jsfiddle.net/gzebj1qn/
所以,最终的代码应该是这样的:
height: calc(22px * ${legends.length} + (4px * ${legends.length -1}));
我有一个离散数据的颜色图例,它是使用 SVG 完成的。但是我在显示整个内容时遇到了问题,因为它正在被裁剪。我无法定义固定高度,因为内容是动态的。
仅供参考:我的代码是用 React 编写的
注意:我可以提供 overflow: visible 并使内容可见,但问题又出现在提供背景颜色上(背景颜色不适用于溢出的内容)。
代码link: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>
);
很难用反应代码中的一个小例子来回答这个问题。但是,根据您提交的 fiddle,您可以设置固定高度,但要根据您拥有的图例数量。类似于:
height: calc(22px * 7 + (4px * 6));
解释数字: 22px * 7 是因为每个正方形的高度都是 22px。 4px * 6 是占底边距。最后一个不需要底边距。
https://jsfiddle.net/gzebj1qn/
所以,最终的代码应该是这样的:
height: calc(22px * ${legends.length} + (4px * ${legends.length -1}));