根据documentation,flex-basis: 200px
应该将项目的初始大小设置为200像素,然而,我发现初始大小是160到170之间的某个值,这似乎取决于浏览器、窗口宽度(即使窗口宽度超过200像素),甚至其他Flexbox项目的边距量。
<main style="display:flex">
<div style="flex-basis: 200px; background-color: #eee"></div>
<div style="flex-basis: 100%; background-color: #ccc"></div>
</main>
<style>
main, html, body {
position:absolute; top:0; left:0; right:0; bottom:0;
margin: 0;
}
</style>
<script>
for (div of document.getElementsByTagName("div"))
div.innerHTML = "WIDTH=" + div.offsetWidth;
</script>
有没有可靠的方法来设置一个以像素为单位的弹性框项目的初始宽度(假设有足够的空间容纳那么多像素)?
2条答案
按热度按时间fnatzsnv1#
如果添加了
flex-shrink:0;
,它应该会按预期工作(如果flex-shrink
没有显式设置,初始值为1)。字符串
s3fp2yjn2#
您的
flex-basis
值应该与您希望它们以小于总宽度的宽度显示的*比率相同。如果您希望一个元素增长并填充空间,请为其给予flex-grow: 1;
。有关详细信息,请访问此处:https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Flexible_Box_Layout/Controlling_Ratios_of_Flex_Items_Along_the_Main_Ax下面,元素的宽度将为
1:2
,直到总宽度为600px
,然后第二个元素将填充其上的额外空间: