0

我希望divBody2填充 div 中剩余的高度。使用桌子最初不是我的意图,但没有桌子我无法做到,所以我想到了使用一张桌子。解决方案似乎仍然无法解决。

html:

<div id="divContainer" class="Container">
 <div id="divContainerLeft" class="ContainerLeft">
  <table>
    <tr style="height: 1%;">
     <td>
         <div style="background-color: white;">Header1</span>
     </td>
    </tr>
    <tr style="height: 1%;">
      <td>
        <div id="divBody1" class="Body1">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis </p>
        </div>
      </td>
    </tr>

    <tr style="height: 1%;">
     <td>
         <div style="background-color: white;">Header2</span>
     </td>
    </tr>
    <tr style="height: 100%;">
      <td>
        <div id="divBody2" class="Body1" style="background-color: red;">
                                        <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>
                                        <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>
                                        <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>
                                        <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>
        </div>
      </td>
    </tr>

   </table>
</div>

CSS:

.Container {
    position: absolute;
    top: 2%;
    left: 2%;
    height: 96%;
    width: 96%;
    overflow: visible;
    background-color: cyan;
    border: 0px solid #000000;
}

.ContainerLeft {
    position: absolute;
    top: 0px;
    left: 0px;
    height: 100%;
    width: 200px;
    overflow: visible;
    border: 0px solid black;
    padding: 0px;
    margin: 0px;
    background-color: green;
}

.ContainerLeft table {
    position: relative;
    top: 0px;
    left: 0px;
    width: 100%;
    height: 100%;
    border: 1px solid #000000;
    border-spacing: 2px;
    background-color: cyan;
}

.ContainerLeft tr {
    border: 0px solid #000000;
}

.ContainerLeft td {
    vertical-align: top;
    border: 0px solid #000000;
}

.Body1 {
    position: relative;
    left: 0px;
    top: 0px;
    height: auto;
    right: 0px;
    border: 0px solid black;
    background-color: #FFFFFF;
}

jsfiddle:

http://jsfiddle.net/p25hF/2/

有没有办法做到这一点?我已将表格高度设置为父容器的 100%,但如果文本(或 subdiv)足够大,表格会比父容器大。

宽度( width: 100% )似乎不存在问题,仅高度存在问题。

出于某种我无法想象的原因,尝试bottom: 0px;也不起作用。

4

1 回答 1

1

正如在这个问题中所解释的,没有办法用 CSS(2) 来做到这一点。

但是,如果您不需要支持较旧的浏览器,则可以使用 flexbox。这很简单。假设以下 HTML:

<div class="outer">
    <div class="inner"></div>
    <div class="inner"></div>
    <div class="inner"></div>
</div>

您可以通过几行 CSS 获得所需的行为:

.outer {
    height: 200px;
    display: flex;
    justify-content: flex-start;
}
.inner {
    overflow: auto;
    flex-shrink: 0;
    flex-grow: 0;
}
.inner:last-child {
    flex-shrink: 1;
    flex-grow: 1;
}

在此处查看一个工作示例:http: //jsfiddle.net/ECf9M/1/(需要现代浏览器)。

于 2013-11-10T19:27:07.187 回答