如何在不指定div宽度的情况下使div占据所有可用的剩余水平空间?

罗德里戈

我需要创建两个div:一个div(小),不带短文本,另一个(大),大,占据屏幕的剩余空间,并在需要的地方包装文本。我正在尝试以下方法:

html,body {
  margin: 0;
  height: 100%;
}
body {
  display: flex;
  align-items: stretch;
}
#divL {
  background-color: green;
  flex: 1 0 auto;
  padding: 1em;
}
#divR {
  background-color: red;
  white-space: nowrap;
  padding-left: 1em;
  padding-right: 1.5em;
  overflow-y: auto;
}
<div id='divL'>
a short text
</div>
<div id='divR'>
<p>list of items</p>
<p>list of items</p>
<p>list of items</p>
<p>list of items</p>
<p>list of items</p>
<p>list of items</p>
<p>list of items</p>
<p>list of items</p>
<p>list of items</p>
<p>list of items</p>
<p>list of items</p>
<p>list of items</p>
<p>list of items</p>
<p>list of items</p>
</div>

到现在为止还挺好。但是左侧面板会随着文本一起增加,当文本太大时将右侧面板推出屏幕:

html,body {
  margin: 0;
  height: 100%;
}
body {
  display: flex;
  align-items: stretch;
}
#divL {
  background-color: green;
  flex: 1 0 auto;
  padding: 1em;
}
#divR {
  background-color: red;
  white-space: nowrap;
  padding-left: 1em;
  padding-right: 1.5em;
  overflow-y: auto;
}
<div id='divL'>
very long text very long text very long text very long text very long text very long text very long text very long text very long text very long text very long text very long text 
</div>
<div id='divR'>
<p>list of items</p>
<p>list of items</p>
<p>list of items</p>
<p>list of items</p>
<p>list of items</p>
<p>list of items</p>
<p>list of items</p>
<p>list of items</p>
<p>list of items</p>
<p>list of items</p>
<p>list of items</p>
<p>list of items</p>
<p>list of items</p>
<p>list of items</p>
</div>

我不想指定固定宽度,因为右侧面板的宽度可变(不要太大,每行只有两个或三个词)。如何实现这种简单的设计?不指定某处的固定宽度是否可能?

罗伯特·阿卡·罗宾

问题在这一行:

flex: 1 0 auto;

这是以下内容的简写:

flex-grow: 1;
flex-shrink: 0;
flex-basis: auto;

请参阅:https//developer.mozilla.org/en-US/docs/Web/CSS/flex

问题部分是flex-shrink: 0这表示左div根本不应缩小。

相反,请尝试:

flex: 1 1 auto;

更进一步:flex-shrinkis1和of的默认值flex-basisauto如果3个属性中有2个具有默认值,我将完全不使用速记flex我只需要指定一个属性,而无需默认设置:

flex-grow: 1;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使div填充剩余的水平空间?

如何使div填充剩余的水平空间

如何在不指定宽度的情况下使两个DIV相邻浮动?

使div用动态宽度填充父div的剩余水平空间

如何使此菜单占据所有剩余空间的宽度?

如何在不使用固定高度值的情况下使div访问剩余空间?

如何在不破坏 <div> 的宽度或布局的情况下将 <div> 包裹在 <a> 中?

如何使div占据所有可用高度?

如何获取第二个浮点div以占据所有剩余宽度

如何在不滚动的情况下使div的高度和宽度达到全屏且具有特定的边距

如何使绝对定位的div占用所有可用的宽度空间?

如何计算 div 的剩余可用空间或宽度?

填充堆栈中所有可用的水平空间

如何更改浮动div的宽度以填充它们占据的所有空间?

如何在不覆盖其他所有内容的情况下将 div 放在图像上?

div何时填充水平空间,何时不填充水平空间?

如何在不指定高度的情况下使多个div显示在偶数行中?

让div占据剩余宽度的100%?

WPF:如何让文本框填充所有可用的水平空间?

如何在不互相重叠的情况下分散div

如何在不双击的情况下“刷新” div?

为什么这个div具有position:absolute占据所有剩余宽度?

如何在不指定父级高度的情况下强制子级div为父级div的高度的100%?

如何创建不创建换行符或水平空间的隐藏div?

如何在不包含可用空间的情况下创建光盘(SD卡)的.IMG映像?

如何在不设置宽度的情况下将两个div放在同一行上?

如何在不拉伸的情况下将所有图像设置为相同的宽度和高度

当浮动元素处于其固定宽度同级之间时,如何使它填充剩余的水平空间?

React:使div占据所有可用高度