Я использую следующую сетку:
grid-template-columns: 10em 1fr 10em;
grid-template-rows: 2em 1fr 2em;
Чтобы создать центрированную область, которая заполняет большую часть экрана, оставляя некоторые отступы вокруг него.Внутри этой 1fr x 1fr
области сетки находится pane
div, который содержит editor
div, который содержит content
div.
Div content
может быть любой высоты, а div editor
имеет overflow: scroll
установлен.Моя проблема заключается в том, что вместо pane
, сохраняющего тот же размер, и editor
, обрабатывающего переполнение, pane
увеличивается и вызывает прокрутку всей страницы.
Я могу предотвратить рост pane
, установив егоoverflow: scroll
, но это вызывает прокрутку самого редактора, а не его содержимого.Это недопустимо, потому что в редакторе есть кнопки, которые всегда должны быть на экране.
Есть ли способ, в рамках сетки, разрешить эту функцию?Изначально он работал с гибкой раскладкой, где pane
div был одним элементом внутри 100% x 100%
flexbox.Я переключился на сетку, чтобы позволить мне легко изменять размеры боковых меню, поэтому реализация этого без сетки не является предпочтительной.
Кроме того, поддержка нескольких браузеров была бы замечательной, но мой целевой браузер - Chrome.
Вот jsfiddle с моим воспроизведением моей проблемы.
body, html {
width: 100%;
height: 100%;
padding: 0;
margin: 0;
}
#site {
width: 100%;
height: 100%;
background-color: #000;
display: grid;
grid-template-rows: 10em 1fr 10em;
grid-template-columns: 2em 1fr 2em;
grid-template-areas:
'top top top'
'lpn mid rpn'
'bot bot bot';
}
#pane {
grid-area: mid;
height: 100%;
width: 100%;
background-color: #f0f;
}
#editor {
display: relative;
overflow: scroll;
}
#content {
height: 2000px;
}
<div id='site'>
<div id='pane'>
<div id='editor'>
<div id='content'>
</div>
</div>
</div>
</div>