Есть ли способ шириной 0, чтобы предотвратить смещение плавающих элементов div - PullRequest
0 голосов
/ 22 октября 2009

Во-первых, проблема не в том, что блочные элементы разрушаются при перемещении их дочерних элементов. На самом деле проблема не имеет ничего общего с очисткой.

Проблема заключается в следующем. Предположим, у меня есть серия плавающих элементов типа:

<div class="column">Column 1</div>
<div class="column"></div>
<div class="column">Column 3</div>

С css:

div.column { float: left; width: 200px; }

Средний столбец рухнет в последних версиях Firefox и Safari, хотя, видимо, не в IE7. Мне нужно поведение IE7.

Я понимаю, что могу добавить &nbsp;, и он будет держать div открытым, но это не работает для меня в этом случае, потому что у меня также есть объявление, подобное этому:

div.column input { width: 100% }

У меня есть ряд столбцов, расположенных в табличном формате, с определенными условиями, вызывающими исчезновение полей ввода. Проблема в том, что когда вход исчезает, поле исчезает. Если я добавлю &nbsp;, это приведет к переносу div. Просто чтобы ответить на первые вопросы:

  • Почему вместо этого я не использую таблицу? Поскольку я использую Scriptaculous Sortable для перетаскивания строк, что не работает с таблицами
  • Почему бы мне не использовать меньшую ширину пикселя, чтобы оставить место для &nbsp;? , поскольку width: 100% более точен во всех браузерах.
  • Почему бы мне не добавить &nbsp;, когда я скрываю ввод Я могу в конечном итоге прибегнуть к этому, но в JS это будет отчасти уродливо, поэтому я надеюсь на лучший способ.

У кого-нибудь есть какие-нибудь умные хаки? Так как Safari и Firefox ведут себя таким образом, я предполагаю, что это официально санкционированное поведение. Где это обсуждается в спецификациях W3C?

1 Ответ

1 голос
/ 22 октября 2009

А? Разве вы не должны просто дать ему случайную высоту? Вы можете показать демо?

...