【问题标题】:SVG height scaling not as expectedSVG 高度缩放不如预期
【发布时间】:2015-11-17 21:48:12
【问题描述】:

我有一个两列布局,我想在左边画一个 svg,在右边画一些元素。我希望 SVG 的高度根据第二列的高度(即右侧的一列)进行缩放。为了实现两列布局,我使用了 flex-box css。这是显示问题的jsfiddle

谁能帮我看看我做错了什么。

    <div class="row">
    <div class="col">
        <svg style="width:100%;height:100%" version="1.1" xmlns="http://www.w3.org/2000/svg">
            <rect width="100%" height="100%" x="0" y="0" fill="#E61875" rx='10' ry='10' />
        </svg>
    </div>
    <div class="col">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ad omnis quae expedita ipsum nobis praesentium velit animi minus amet perspiciatis laboriosam similique debitis iste ratione nemo ea at corporis aliquam.</div>
</div>

想要的结果是,如果 2nd Div 的高度增加,SVG 的高度也应该增加,同样,如果 2nd Div 的高度降低,那么 SVG 的高度也应该降低。

我已经更新了小提琴,它似乎在 firefox 中工作,但在 chrome 中,它将高度设置为 150px 并且不更改值。我仍然没有找到解决方法。

【问题讨论】:

  • 你可能想通过 JS 在 SVG 和 RECT 上设置 height 属性
  • @maioman,我需要找到第二个 div 的计算高度并更新第一个 div 和 SVG 的高度。我实际上是在尝试在 Angular 中开发一个自定义指令,但没有找到一种可靠的方法来找到计算高度(offsetHeight),所以我正在尝试基于 css 的解决方案。

标签: javascript css svg flexbox


【解决方案1】:

不清楚问题是什么,因为您的 JSfiddle 不包含 SVG。

要使 SVG 成为列的完整高度,您需要移除填充将 SVG 设置为 display:block

* {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}
.row {
  display: -ms-flexbox;
  display: -webkit-flex;
  display: flex;
}
.col {
  -webkit-flex: 1;
  -ms-flex: 1;
  flex: 1;
  border: solid;
}
svg {
  display: block;
}
<div class="row">
  <div class="col">
    <div style="width:60px;height:100%;">
      <svg style="width:100%;height:100%" viewbox="0 0 50 100" version="1.1" xmlns="http://www.w3.org/2000/svg">
        <rect width="100" height="100" x="0" y="0" fill="#E61875" rx='10' ry='10' />
      </svg>
    </div>
  </div>
  <div class="col">
    <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ad omnis quae expedita ipsum nobis praesentium velit animi minus amet perspiciatis laboriosam similique debitis iste ratione nemo ea at corporis aliquam.</p>
  </div>
</div>

此外,目前还不清楚这个最终结果应该是什么样子。我怀疑可能需要进行一些调整。

【讨论】:

  • 我已经更新了 JSFiddle,发生的事情是,一旦 SVG 被渲染,按照容器的初始高度,但是当容器高度改变时,SVG 的高度并没有改变。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-26
  • 2018-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多