Как измерить высоту div для содержимого в jQuery UI Layout
Я пытаюсь получить простой вертикальный разделитель, работающий с использованием jQuery UI Layout 1.30.0.3079-rc. Вот моя тестовая страница:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>jQuery UI Layout Vertical Splitter</title>
<link type="text/css" rel="stylesheet" href="../Content/jquery.ui.layout.css" />
<style type="text/css">
body {
font-family: Calibri;
font-size: 11pt;
margin: 0px;
}
.RequiredBorder {
border: 3mm solid silver;
margin: 3mm;
padding: 3mm;
}
.ui-layout-center, .ui-layout-east, .ui-layout-west, .ui-layout-north, .ui-layout-south {
border: 1px solid purple;
}
#SplitContainer {
border: 1px solid blue;
}
</style>
<script type="text/javascript" src="../Scripts/jquery-1.8.0.min.js"></script>
<script type="text/javascript" src="../Scripts/jquery-ui-1.8.23.min.js"></script>
<script type="text/javascript" src="../Scripts/jquery.layout.min.js"></script>
<script type="text/javascript">
var myLayout;
$(document).ready(function () {
myLayout = $('#SplitContainer').layout({
center__minWidth: 100,
west__minSize: 100,
west__size: .5, // 50% of layout width
stateManagement__enabled: false
});
});
</script>
</head>
<body>
<div class="RequiredBorder">
<div id="SplitContainer">
<div class="ui-layout-west">
LEFT
<ul>
<li>Node 1</li>
<li>Node 2
<ul>
<li>Node 2.1</li>
<li>Node 2.2
<ul>
<li>Node 2.2.1</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="ui-layout-center">
RIGHT
<p>
<input type="text" value="Text 1" />
</p>
<p>
<input type="text" value="Text 2" />
</p>
</div>
</div>
</div>
</body>
</html>
Я хочу, чтобы два div содержимого растягивались, чтобы заполнить контейнер горизонтально, но растягивались, чтобы заполнить их содержимое вертикально.
Ширина div работает точно так, как нужно, но высота всегда равна нулю, если я не жестко прописал высоту в CSS, например
#SplitContainer {
height: 400px;
}
Жесткое кодирование высоты не является приемлемым решением. На реальном веб-сайте содержимое этих элементов может быть чем угодно, от небольшой доли высоты окна до нескольких кратных его, и <div class="RequiredBorder">
div должен включать в себя весь лот и размер содержимого.
Я прочитал документацию по макету пользовательского интерфейса jQuery и искал в Google, но пока не нашел ничего полезного. То, что я уже пробовал, не сработало:
#SplitContainer {
display: inline-block;
}
Это отображает контейнер и все его содержимое с нулевой шириной и высотой.
#SplitContainer {
position: absolute;
left: 0px;
right: 0px;
top: 0px;
bottom: 0px;
}
При этом контейнер и все его содержимое заполняют все окно браузера, перекрывая остальную часть содержимого.
Демонстрационные страницы на веб-сайте JQuery UI Layout не демонстрируют эту проблему, поскольку все они размещают самый внешний макет непосредственно внутри <body>
элемент. Когда я попробовал это на своей странице, все заработало правильно. Тем не менее, реальный сайт должен будет заключить макет во вложенный <div>
,
Я тестирую эту страницу в IE 11 и Firefox 29. Оба демонстрируют абсолютно одинаковое поведение.
1 ответ
Хм, я знаю, что это не сработает, но попробуйте добавить это?div{
height:4em;
width:4em;
}
<script>
очень хороший шанс, что это не сработает -_-