【发布时间】:2017-03-01 12:50:14
【问题描述】:
在 Chrome 和 Safari 中,div 的宽度仅计算一次。
dom 树的任何更改、添加或删除类以及调整窗口大小都会被忽略。
如何在不重新加载页面的情况下强制重新计算宽度?
https://jsfiddle.net/7xpoccg6/7/
在那里垂直调整演示区域的大小,然后单击 Run 以重新加载新大小的示例。
或者在sn-p中使用整页切换。
html, body, section {
margin: 0;
height: 100%;
}
section {
display: flex;
}
section:before, section::after {
content: "";
flex: 1 0 0px;
background: antiquewhite;
height: 100%;
}
div {
flex: 0 1 auto;
height: 50%;
background: green;
align-self: flex-end;
}
svg {
height: 100%;
display: block;
}
<section>
<div class="c">
<svg viewBox="0 0 1000 2000" class="avatar">
<ellipse cx="500" cy="1000" rx="500" ry="1000" fill="red" />
</svg>
</div>
</section>
【问题讨论】:
-
在我的 FF 中看起来也有问题(宽度未更新,svg 部分隐藏)......你可能会使用弹性框,但对于 webkit,我想你需要在 resize 时强制回流。 (例如在悬停和位置的小提琴中):jsfiddle.net/7xpoccg6/10
-
@GCyrillus,在我的 FF 中,它更新得很好,但很慢 - 有明显的滞后。
标签: javascript css google-chrome safari flexbox