Мне нужно сделать прокрутку div при переполнении содержимого. Ловушка заключается в том, что в случае компоновки div является частью системы display: table/table-row
.Предельный дисплей: высота таблицы/строки ячейки, когда высота динамическая
В нижней боковой панели контейнера необходимо разрешить прокрутку, когда содержание превышает высоту. Проблема заключается в том, что - с этим типом макета - CSS не имеет возможности заблокировать нижний div до динамически определенной высоты его родителя (.holder
). Это должно было либо быть% высоты, либо просто на 100% высоты его родителя, которая слишком велика.
Моя цель - разрешить это с помощью чистого CSS, поэтому мы можем избежать запуска javascript, когда что-то изменит высоту элементов боковой панели.
.wrapper-page { position: absolute; top: 38px; bottom: 10px; left: 10px; right: 10px; overflow: hidden; }
.sidebar { width: 25%; height: 100%; }
.holder { width: 100%; height: 100%; display: table; table-layout: fixed }
.holder > div:first-child { height: 25%; max-height: 25%; }
.holder > div { display: table-row; table-layout: fixed }
Из-за этого макета, только sidebar
будет правильно прокрутки, если мы используем overflow-y: scroll
- но прокручивает всю боковую панель. .holder > div:last-child
- это то, что нужно прокрутить.
<div class="wrapper-page">
<div class="sidebar">
<div class="holder">
<div>
box one<br>
</div>
<div>
box two<br>
</div>
</div>
</div>
</div>
Вы можете использовать 'box-sizing: border-box'? Если это так, установите высоту с помощью процента, затем установите переполнение в зависимости от конфигурации. – RedYetiCo
Я не могу использовать размер окна, потому что у нас нет выбора, кроме как поддерживать IE7, а полиполк для этого - слишком высокая производительность. – helion3
Итак, вы говорите, что '.holder> div: last-child {overflow-y: scroll; } 'не работает? Это ограничение требования IE7 или что-то еще? – RedYetiCo