У меня сложное многоуровневое меню. (Абсолютно позиционированные) правые пункты меню выпадают из (абсолютно позиционированного) контейнера в IE и Opera, но не в Firefox (или Chrome или Safari); Я подозреваю, что Firefox не прав, потому что я не понимаю, почему абсолютно позиционированный элемент должен иметь размеры, ограниченные абсолютно позиционированным предком. Однако я пытаюсь достичь эффекта Firefox.
Мои ограничения: я знаю ширину .outer
; однако я не знаю содержимого (и, следовательно, ширины) какого-либо из промежутков, которые должны определять ширину .middle
. Я не знаю содержимого (и, следовательно, ширины) любого из .inner
элементов div, однако их ширина не должна влиять на ширину родительского элемента .middle
. Левый край .inner
должен совпадать с левым краем его промежутка. То есть это двухуровневое меню, в соответствии с которым 2-й уровень должен быть ограничен границей предка, но на каждый элемент первого уровня не должна влиять ширина его дочернего меню.
Какие изменения мне нужно внести, чтобы ограничить внутренний div границами внешнего div в IE? Смотрите упрощенную версию кода ниже. В исходной разметке .outer
был ul
, а .middle
был li
.
<head>
<style type="text/css">
*{
margin: 0;
padding: 0;
list-style-type: none;
}
.outer{
border: solid 1px black;
width: 200px;
position: absolute;
}
.outer div
{
border: solid 1px green;
float: left;
}
.inner
{
position: absolute;
}
.inner p
{
border: solid 1px red;
}
span{
display: block;
padding: 0 10px;
}
.hide
{
display: none;
}
</style>
</head>
<body>
<div class="outer">
<div class="middle">
<span>outer</span>
<div class="hide"><p>lots and lots of inner text</p></div>
</div>
<div class="middle">
<span>outer</span>
<div class="hide"><p>lots and lots of inner text</p></div>
</div>
<div class="middle">
<span>outer</span>
<div class="inner"><p>lots and lots of inner text</p></div>
</div>
</div>
</body>