如何根据子 SVG 内容对齐父 div 高度

Posted

技术标签:

【中文标题】如何根据子 SVG 内容对齐父 div 高度【英文标题】:How to align parent div height based on child SVG content 【发布时间】:2021-12-07 06:17:00 【问题描述】:

我想根据子内容为父 div 分配高度(这里 SVG 是我的孩子,它可以根据数据具有不同的内容)。如果我为父级或子级分配固定高度,则会在内容更改时出现问题。它适用于宽度(根据内容自动更改 div 宽度)但不适用于高度。这是我的代码 sn-p。

React.useEffect(() => 
    // calling legend function and passing div id to function
    colorLegend("#legend");
, [dep]);

function colorLegend(legend: string) 
    // logic
    if (colorLegend) 
       select(legend)
       .append("svg")
       .attr("overflow","visible")
       .attr("width", 150 + "px")
       .call(colorLegend);
    


return (
    <div style=position: "absolute",right: 16,top: 
      10,backgroundColor: "black",borderRadius: "5px",padding: 
    "10px">
        <label style= color: "#6F6F6F" >
          name
        </label>
        <div id="legend"></div>
    </div> 
);

小提琴链接:https://jsfiddle.net/1sv3Lwar/

【问题讨论】:

【参考方案1】:

我认为您的父母 &lt;div&gt; 没有垂直“增长”的原因是因为您正在使用:

position: "absolute"

使用绝对定位或浮动会导致这种情况。

虽然,假设您需要绝对定位,所以添加:overflow: hidden 应该可以解决问题。

【讨论】:

没用。溢出:隐藏在我的情况下不起作用 可以为您的问题编写一个代码笔/工作示例吗? 让它在代码笔中工作会有点困难,但我可以尝试分享图像以更好地理解。在图像中,您可以看到背景黑色没有覆盖整个内容。我也不能为父级分配固定高度,因为内容可能会有所不同。 你还可以看到我已经添加了溢出:对 SVG 可见,如果我不添加,那么其余的内容将隐藏在父 div 中并且不会完全显示。我希望背景黑色应该覆盖所有内容,并且它的高度应该直到标签“H4”,遗憾的是我不能指定固定高度,因为内容可能会有所不同。 这里是小提琴链接:jsfiddle.net/1sv3Lwar

以上是关于如何根据子 SVG 内容对齐父 div 高度的主要内容,如果未能解决你的问题,请参考以下文章

如何将元素左右对齐没有绝对位置或浮点数

如何从根据动态父 div 缩放的路径构建反向 svg 掩码

如何使子高度相对于其父高度-Css

CSS控制,子div的高度自适应父div的高度

如何撑开父元素,让父元素div自动适应高度的问题

设置子div在父div中绝对置于底部之后覆盖了父div里的内容怎么办?