1

当上面的DIV( )动态改变其大小时,是否有一个CSS解决方案可以让DIV(D2)填充剩余的父元素高度?D1

|-------------------|    |-------------------|    |-------------------|
| some content   D1 |    | some content   D1 |    | some content   D1 |
| +                 |    | more content      |    | more content      |
|-------------------|    | +                 |    | even more         |
|                D2 |    |-------------------|    | +                 |
|                   |    |                D2 |    |-------------------|
|                   |    |                   |    |                D2 |
|                   |    |                   |    |                   |
|                   |    |                   |    |                   |
|                   |    |                   |    |                   |
|-------------------|    |-------------------|    |-------------------|

D1还有一个max-heightoverflow: scroll

在这个jsFiddle 中,让黄色 ( d2) 填充其余部分,无论动态内容d1是什么,而不使用 javascript。

我见过几个问题,但没有一个处理上 DIV ( D1)的动态高度变化

我不能使用 Javascript 解决方案。TABLEs 也可以代替 DIVs。

4

2 回答 2

0

检查下面的更新答案。

做这样的结构

 div class=main  {
     div class=d1 {
          something 
          more stuff
          even more stuff
          }
     div class=d2{
            something
           }

}

CSS:

div main { 
      width 200 px; for example
      }
d1, d2 { 
      width 100%,
      and float:left
      }

现在通过这样做,当 d1 更改 d2 自动下降时,不要给height任何 DIV

更新:使用 Flexbox 属性

.main {
  width: 500px;
  height: 160px;
  background: grey;
  border: 1px solid #333;
  display: flex;
  flex-direction: column;
}
.d1 {
  background: lime;
}
.d2 {
  background: yellow;
  height: 100%;
}
.d1,
.d2 {
  width: 100%;
}
<div class="main">
  <div class="d1">
    d1 d1 d1 d1 d1 d1 d1 d1 d1 d1 d1 d1 d1 d1 d1 d1 d1 d1 d1 d1 d1 d1 d1 d1 d1 d1 d1 d1 d1 d1 d1 d1 d1 d1 d1 d1 d1 d1 d1 d1 d1 d1 d1 d1 d1 d1 d1 d1 d1 d1 d1 d1 d1 d1 d1 d1 d1 d1 d1 d1 d1 d1 d1 d1 d1 d1 d1 d1 d1
  </div>
  <div class="d2">
    d2 d2 d2 d2 d2 d2 d2 d2 d2 d2 d2 d2 d2 d2 d2 d2 d2 d2 d2 d2 d2 d2 d2 d2 d2 d2 d2 d2 d2
  </div>
</div>

现在有多少内容D1并不重要,D2将占据maindiv 的全部高度。

于 2013-07-17T20:34:25.860 回答
0

我更喜欢描述性更强的类名......

.container {
    display: flex;
    flex-direction: column;
    font: 20px Verdana;
    height: 88vh;
    background: grey;
    padding: 5px;
}
.upper{
    flex: 1 1; /* grow shrink */
    background: lime;
}
.lower{
    flex: 1 1; /* grow shrink */
    background: yellow;
    overflow-y: auto;
}

这是我小提琴的屏幕截图

https://jsfiddle.net/spencerw/zLcwq42s/52/

于 2021-03-06T20:11:10.713 回答