html - 在 HTML 表格单元格中调整 SVG 的大小

标签 html css svg

我有一个 HTML 表格,其中包含一个跨越所有行的内联 SVG。默认情况下,SVG 占据所有可用宽度。我怎样才能实现以下行为?

  • 应该计算表格的高度,就好像 SVG 不存在一样。
  • SVG 应占用所有可用的垂直空间,并保持宽高比。
  • 表格的其余部分应照常布置。

参见 my own answer below粗略估计它应该是什么样子。

<table>
  <tr>
    <td id="svg-cell" rowspan="4">
      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 40">
        <circle cx="10" cy="10" r="10" />
      </svg>
    </td>
    <td>a</td>
  </tr>
  <tr>
    <td>b</td>
  </tr>
  <tr>
    <td>c</td>
  </tr>
  <tr>
    <td>d</td>
  </tr>
</table>

最佳答案

一个 hacky 解决方案是暂时隐藏 SVG 并使用 JavaScript 设置它的大小。我忽略了填充和边距等问题,但它应该让您了解最终结果应该是什么样子。

window.onload = function() {
  document.getElementById("svg").style.height = document.getElementById("table").getElementsByTagName('tbody')[0].clientHeight + "px";
  document.getElementById("svg").style.display = "inline";
}
#svg {
  display: none;
}
<table id="table">
  <tr>
    <td id="svg-cell" rowspan="4">
      <svg id="svg" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 40">
        <circle cx="10" cy="10" r="10" />
      </svg>
    </td>
    <td>a</td>
  </tr>
  <tr>
    <td>b</td>
  </tr>
  <tr>
    <td>c</td>
  </tr>
  <tr>
    <td>d</td>
  </tr>
</table>

关于html - 在 HTML 表格单元格中调整 SVG 的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56553893/

相关文章:

php - 服务器问题 æ ø å

jquery - 全 Angular 问题

javascript - 带有表单的弹出对话框停留在提交时

html - 用CSS给一个随内容高度变化的div加一个三 Angular 点?

html - 有没有办法放入样式表以获得页面上所有表单元素的 Material 主题或类似主题?

javascript - 当滚动/定位错误时,Bootstrap popover 不会保持附着在按钮上

javascript - FabricJS - SVG 序列化问题

javascript - SVG 保持新数据可见

javascript - D3 获取两个对象的数组并将其读入 D3 形状

javascript - 添加列表组项,其中包含使用 JS 将输入输入到 ul 的表单