高度:<div>内的<div>为100%,显示:table-cell

Pau*_*kov 64 html css css-tables

这是使用display: tabledisplay: table-cellCSS声明的2列标记:

.table {
  display: table;
}

.cell {
  border: 2px solid black;
  vertical-align: top;
  display: table-cell;
}

.container {
  height: 100%;
  border: 2px solid green;
}
Run Code Online (Sandbox Code Playgroud)
<div class="table">
  <div class="cell">
    <p>Text
      <p>Text
        <p>Text
          <p>Text
            <p>Text
              <p>Text
                <p>Text
                  <p>Text
  </div>
  <div class="cell">
    <div class="container">Text</div>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

但是.container块不会垂直填充父单元格.以下是JsFiddle的一个例子:http://jsfiddle.net/MGRdP/2.

我有什么 | 我需要的

是)我有的 我需要的

请不要提出JS解决方案.

anu*_*upr 50

当您%用于设置高度或宽度时,也始终设置父元素的宽度/高度

尝试更新的小提琴

http://jsfiddle.net/MGRdP/6/

  • 将表高度更改为1px,适用于IE11.虽然没有下面的东西. (8认同)
  • 为什么这不适用于<IE11 - 这太荒谬了.它适用于每一个浏览器,移动和其他 - 但IE ...我不能忍受它.GAH (4认同)
  • 您应该将`-moz-box-sizing:border-box;`添加到`.container`以使其在FF上也能正常工作. (3认同)
  • 不幸的是,此解决方案停止在Chrome上运行 (3认同)
  • @Capsule微软放弃支持是不等于人们停止使用它. (2认同)
  • 为了补充James South指出的内容,增加"身高:100%; min-height:1px;`到`display:table`类将帮助IE 11. (2认同)

hd.*_*man 26

设置height: 100%;overflow:auto;div里面.cell

  • `overflow:auto;` 对我来说是关键。谢谢! (2认同)
  • 但是出现了`overflow:auto`的滚动条怎么样? (2认同)

Dan*_*tov 26

table{
   height:1px;
}

table > td{
   height:100%;
}

table > td > .inner{
   height:100%;
}
Run Code Online (Sandbox Code Playgroud)

确认工作:

  • Chrome 60.0.3112.113,63.0.3239.84
  • Firefox 55.0.3,57.0.1
  • Internet Explorer 11

  • table {height:1px; 是关键 (13认同)
  • 在接受的解决方案停止工作之后,这个版本实际上适用于新版本的Chrome. (2认同)
  • 荒谬,但完美。谢谢!实际上我什至不需要`td { 100% }`,只需要`table` 和`.inner` 样式对我有用。 (2认同)

Saa*_*aar 15

除了jsFiddle之外,如果你愿意为了使它成为跨浏览器(IE11,Chrome,Firefox),我可以提供一个丑陋的黑客.

相反的height:100%;,把height:1em;.cell.


Ern*_*yer 8

这正是你想要的:

HTML

<div class="table">

    <div class="cell">
        <p>Text</p>
        <p>Text</p>
        <p>Text</p>
        <p>Text</p>
        <p>Text</p>
        <p>Text</p>
        <p>Text</p>
        <p>Text</p>
    </div>
    <div class="cell">
        <div class="container">Text</div>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

CSS

.table {
    display: table;
    height:auto;
}

.cell {
    border: 2px solid black; 
    display:table-cell;
    vertical-align:top;
}

.container {
    height: 100%;
    overflow:auto;
    border: 2px solid green;
    -moz-box-sizing: border-box;
}
Run Code Online (Sandbox Code Playgroud)

  • 适用于FF,但不适用于IE(11) (3认同)

小智 7

将表格单元格位置设为相对,然后将内部div位置设为绝对,顶部/右侧/底部/左侧均设置为0px。

.table-cell {
  display: table-cell;
  position: relative;
}

.inner-div {
  position: absolute;
  top: 0px;
  right: 0px;
  bottom: 0px;
  left: 0px;
}
Run Code Online (Sandbox Code Playgroud)