У меня есть следующий фрагмент HTML:
Block 1:
<div style="position: absolute; top: 105px; left: 15px;">
<div style="float: left; width: 50px; height: 40px;"></div>
<div style="float: left; width: 100px; height: 20px;"></div>
</div>
Block 2:
<div style="position: relative; width: 60px; height: 20px;">
<div style="position: absolute; top: 15px; left: 15px;">
<div style="float: left; width: 50px; height: 40px;"></div>
<div style="float: left; width: 100px; height: 20px;"></div>
</div>
</div>
Блок 1 - это обычный DIV с абсолютным позиционированием, в то время как в блоке 2 тот же DIV заключен в DIV с относительным позиционированием.
Моя проблема состоит в том, что в блоке 2 абсолютный DIV наследует свойство width от своего родителя, таким образом отображая дочерние DIV друг над другом. Сравните это с блоком 1, где дочерние DIVs правильно расположены рядом (поскольку назначена максимально допустимая ширина).
Есть ли какое-нибудь исправление для этой ситуации? Указанные высота и ширина являются произвольными и могут изменяться в любое время. Дочерние DIV не должны устанавливать ширину, потому что содержимое постоянно меняется (я привожу некоторые здесь для иллюстрации). Я могу установить определенную ширину, но люди с разными браузерами и настройками DPI продолжают получать разные результаты, поэтому лучше не задавать ширину дочерних DIV.
Обновление для награды :
Предполагаемое использование приведенного выше HTML аналогично следующему:
Block 2:
<div id="main" style="position: relative; width: 60px; height: 20px;">
Main Text
<div id="columncontainer" style="position: absolute; top: 20px; left: 0px; width: 100px;">
<div id="leftcolumn" style="float: left;">
Item 1: Left Column, Line 1<br />
Item 2: Left Column, Line 2<br />
Item 3: Left Column, Line 3<br />
</div>
<div id="rightcolumn" style="float: left;">
Item 4: Right Column, Line 1<br />
Item 5: Right Column, Line 2<br />
</div>
</div>
</div>
Примечания:
Ширина левого столбца и #rightcolumn не является статической, поэтому конкретная ширина не может быть установлена. Ширина должна следовать за самым длинным текстом (каждый элемент в одной строке).
- Я могу установить ширину #columncontainer определенной ширины (что я сейчас и делаю), но если текст слишком длинный, то левый-правый столбец испорчен (#rightcolumn ниже #leftcolumn, что правильно, потому что недостаточно места).
Основная ширина установлена на определенную ширину, которая во всех возможных случаях будет намного меньше ширины #columncontainer.
- Я открыт для решения JS, поскольку это может показаться единственным последовательным решением, которое я могу придумать.