Исходное решение
Исходный код SplitPane
Добавьте это к вашему .App
селектору:
.App {
position: relative;
}
Кроме того, если вы хотите, чтобы ширина обеих панелей составляла ровно половину, замените компонент SplitPane следующим образом:
<SplitPane split="vertical" minSize={"50%"} defaultSize={"50%"}>
К сожалению, существует проблема, когда размеры панелей перестают изменяться, и приложение выходит из приложения.границ очень малой ширины.
В ответ на:
SplitPane сжимается до размера, когда он не может быть использован, даже если высотаустановлено на 100%.
Содержимое внутри SplitPane не отображается / не используется, потому что:
SplitPane имеет свойство height: 100%
.Это означает, что высота SplitPane составляет 100% от высоты его родителя.
SplitPane имеет свойство overflow: hidden
.Это позволит скрыть любой контент, который превышает размеры SplitPane.
Поскольку SplitPane's height = .App's height = h1's height
и высота для h1
составляли около 30-40 пикселей, высота SplitPane также была около 30-40 пикселей.Это означало, что любой дочерний элемент SplitPane с высотой более 30-40 пикселей был обрезан.
- SplitPane, скорее всего, вычисляет, сколько смещаться от вершины, вычисляя общую высоту его предыдущих братьев и сестер.
Я создал тестовый пример для маркеров.
Итак, теперь мы знаем, что CSS-свойства SplitPane выглядят так:
{
position: absolute;
top: 0 | /* auto-calculated by SplitPane */;
left: 0 | /* auto-calculated by SplitPane */;
overflow: hidden;
height: 100%; /* total height of preceding siblings */
...
}
Следующими вашими шагами будет принятие решения о том, как вы хотели бы, чтобы ваше приложение выглядело и функционировало, и принятие решений на основе вашего решения.Для начала:
Хотите ли вы, чтобы ваша панель навигации была прикреплена к верхней части области просмотра?
Как вы хотите обрабатывать лишний контент внутрипанелей, если вам не нужна полоса прокрутки?
Ваш веб-сайт удобен для мобильных устройств?Если да, то как бы вы хотели отображать разделенные панели на маленьких экранах?
В ответ на:
Как изменить значение на position: relative
при назначении всего пространства под заголовком разделенному представлению?
Некоторые возможные решения заключаются в использовании Javascript или, возможно, Sass / SCSS / Less для установки общей высотыSplitPane равняется высоте области просмотра за вычетом смещения SplitPane от вершины.
Трудно дать однозначный ответ, потому что я не знаю, как вы хотите обрабатывать просмотр контента, который превышает 100vh без полосы прокрутки.
В ответ на:
[I] не может использовать display: grid
или flex
, так каквсе равно перезапишет заголовок.
Flexbox / Grid не работает, потому что SplitPane не находится в том же пространстве, что и его братья и сестры.Вам придется переписать свойство position
в SplitPane на static
.
CodePen
.App {
display: flex; /* Introduce Flexbox*/
/* This is added to change the orientation of elements from
left-right (row) to top-bottom (column). */
flex-direction: column;
}
<SplitPane ... style={ {position: "static"} }>
Следующие шаги
Единственное, что я могу порекомендовать на этом этапе, это добавить height: 100vh
и width: 100vw
к .App
.