Я нашел много похожих вопросов и опробовал несколько решений (включая некоторые из так называемых макетов CSS «Святой Грааль»), но они не совсем выполняют то, что мне нужно.
У меня есть содержащий div (блок, содержащий CSS) с идентификатором right
. Внутри слева, я хочу, чтобы div фиксированной ширины (разделитель, но не имеет значения, для чего он используется; id splitpane
); справа, заполняя остальное пространство, еще один div (id right-box
ниже).
Я попытался сделать два внутренних делителя display: inline-block
(с vertical-align: top
), установив левый на width: 3px
, но тогда нет способа установить правое с шириной 100% - 3 пикселя. Я также попытался использовать трюк float: left
/ margin-left: -100%
/ margin-left: 3px
, но у него та же проблема: 100% плюс 3 пикселя переполняют родительский содержащий блок и вызывают всплывающую полосу прокрутки. (Конечно, проблема не в полосе прокрутки как таковой; я мог бы использовать overflow: hidden
, чтобы удалить ее, но тогда содержимое справа будет обрезано.)
В настоящее время я использую width: 99.5%
для правильного div, но это ужасный хак (и может быть переполнен в зависимости от ширины экрана). Это выглядит примерно так:
<div id="right"><div id="splitpane"></div><div id="right-box">
...
</div></div>
С CSS следующим образом (версия с плавающей запятой, но версия с инлайн-блоком аналогична):
#right {
display: inline-block;
vertical-align: top;
height: 100%;
width: 85%; /* this is part of a larger div */
}
#right-box {
width: 99.5%; /* stupid hack; actually want 100% - 3px for splitter */
height: 100%;
}
#splitpane {
float: left;
width: 3px;
height: 100%;
background: white;
border-left: solid gray 1px;
border-right: solid gray 1px;
cursor: e-resize;
}
Возможно ли это сделать? Это для внутреннего приложения. Поэтому решения должны работать только в Firefox 3 (хотя, если они специфичны для FF3, предпочтительно потому, что решение соответствует стандартам, а другие браузеры - нет, а не потому, что оно использует только Firefox). код).