Я нашел много похожих вопросов и опробовал несколько решений (включая некоторые из так называемых макетов CSS «Святой Грааль»), но они не совсем то, что мне нужно.
У меня есть содержащий div (блок, содержащий CSS) с идентификатором right
. Внутри него с левой стороны мне нужен div фиксированной ширины (разделитель, но неважно, для чего он используется; id splitpane
); справа, заполняя оставшееся пространство, еще один div (id right-box
ниже).
Я попытался сделать два внутренних элемента div display: inline-block
(с vertical-align: top
), установив левый на width: 3px
, но тогда нет возможности установить правую ширину 100% - 3px. Я также пытался использовать трюк 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 код).