html - 展开一个 div 以填充剩余的宽度

标签 html css multiple-columns

我想要一个两列的 div 布局,每个布局都可以有可变宽度,例如

div {
  float: left;
}

.second {
  background: #ccc;
}
<div>Tree</div>
<div class="second">View</div>

我希望 'view' div 在 'tree' div 填满所需空间后扩展到可用的整个宽度。

目前,我的“ View ”div 的大小已调整为它包含的内容 如果两个 div 占据整个高度也很好。


不重复免责声明:

最佳答案

这个问题的解决方案实际上非常简单,但并不是全部显而易见。您必须触发一种称为“ block 格式化上下文”(BFC)的东西,它以特定方式与 float 交互。

只需取第二个 div,删除 float ,然后将其改为 overflow:hidden。除可见之外的任何溢出值都会使其设置的 block 成为 BFC。 BFC 不允许后代 float 逃脱它们,也不允许兄弟/祖先 float 侵入它们。这里的最终效果是 float 的 div 会做它的事情,然后第二个 div 将是一个普通的 block ,占用所有可用的宽度除了被 float 占用的宽度

这应该适用于所有当前浏览器,尽管您可能必须在 IE6 和 7 中触发 hasLayout。我不记得了。

演示:

div {
  float: left;
}

.second {
  background: #ccc;
  float: none;
  overflow: hidden;
}
<div>Tree</div>
<div class="second">View</div>

关于html - 展开一个 div 以填充剩余的宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1260122/

相关文章:

css - 父元素在选择下拉菜单时失去悬停

python - 同时迭代两列并根据条件更改单元格的值

html - CSS 插入和输出框阴影

javascript - 如何在 HTML 中进行文件 I/O 操作?

HTML - 带数字的有序列表的标记?

css - 具有 100% 高度的 jQuery UI 选项卡具有延伸到可见区域下方的内容和垂直滚动条

javascript - 如何在向用户显示内容之前预加载 html 中的音频

html - 左边框不会移动

r - 如果满足条件,如何从另一个数据框列中减去数据框列?

sorting - mutt 按分数和日期排序