сделать, чтобы последний div в контейнере имел остальную часть высоты (желательно без javascript)

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) достаточно велик, таблица становится больше, чем родительский контейнер.

проблема не существует для ширины (ширина: 100%), только для высоты.

И по какой-то причине я не могу представить, пробуя bottom: 0px; тоже не работает.

Теги:

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/ (требуется современный браузер).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню