CSS:flex-basis px未按描述工作

mbzjlibv  于 2022-12-15  发布在  其他
关注(0)|答案(2)|浏览(106)

根据documentationflex-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>

有没有可靠的方法来设置一个以像素为单位的弹性框项目的初始宽度(假设有足够的空间容纳那么多像素)?

fnatzsnv

fnatzsnv1#

如果添加了flex-shrink:0;,它应该会按预期工作(如果flex-shrink没有显式设置,初始值为1)。

<main style="display:flex">
  <div style="flex-basis: 200px; flex-shrink:0; 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>

字符串

s3fp2yjn

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,然后第二个元素将填充其上的额外空间:

<main style="display:flex">
  <div style="flex-basis: 200px; background-color: #eee"></div>
  <div style="flex-basis: 400px; flex-grow: 1; 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>

相关问题