Как дизайн с плавающей точкой может достичь такого же табличного результата? - PullRequest
3 голосов
/ 27 февраля 2010

Я, как правило, энтузиаст веб-технологий, и я за дизайн без таблиц, но сейчас это меня немного бесит. : /

Я пытаюсь достичь чего-то, что было бы чрезвычайно легко с таблицами, но это кажется слишком сложным / невозможным с использованием плавающих элементов. Посмотрите на следующее:

+-----------------+ +-------+
|                 | |       |
|    #contents    | | #info |
|                 | |       |
|                 | +-------+
+-----------------+

Где #info имеет фиксированную ширину и должен плавать прямо до #contents. #contents должно взять все, что осталось от ширины.

В простой конструкции, в которой присутствуют #contents и #info, это не слишком сложно. Они оба имеют фиксированную ширину, обладают свойством float:left и очень хорошо подходят.

Однако на некоторых страницах #info не будет присутствовать. Очевидно, что в этом случае #contents не масштабируется по размеру всей страницы.

Наиболее очевидным решением было дать #contents без фиксированной ширины, чтобы она масштабировалась, и изменить #info на float:right. После других незначительных изменений, которые требовались, оно не имело точно желаемого поведения, так как оно нарушает макет в виде столбца, когда #contents выше #info:

+-----------------+ +-------+
|                 | |       |
|    #contents    | | #info |
|                 | |       |
|                 | +-------+
|                 +---------+
|                           |
+---------------------------+

Что еще хуже, внутри #contents есть другие <div> s с установленным свойством border-bottom, и граница проходит через #info тоже следующим образом:

+-----------------+ +-------+
|                 | |       |
|    #contents    | | #info |
|-----------------|-|-------|
|                 | +-------+
|                 +---------+
|                           |
+---------------------------+

Итак, учитывая все это, как я могу дать #info фиксированную ширину, чтобы он плавал вправо от #contents, но сохранил дизайн в виде столбцов и #contents занимал весь экран когда #info нет, все это гарантирует отсутствие визуальных артефактов и не прибегает к нескольким таблицам стилей?

Это будет желаемый результат на странице, где присутствуют и #contents, и #info:

+-----------------+ +-------+
|                 | |       |
|    #contents    | | #info |
|-----------------| |       |
|                 | +-------+
|-----------------|
|                 |
+-----------------+

И это желаемый результат на странице, где присутствует только #contents:

+---------------------------+
|         #contents         |
|---------------------------|
|                           |
|---------------------------|
|                           |
+---------------------------+

Надеюсь, это не слишком запутанно. У меня не хватает умственных способностей.

Ответы [ 2 ]

0 голосов
/ 27 февраля 2010

Я написал об этом своему веб-учителю по электронной почте, и ответ довольно прост.Он не работает с Internet Explorer (по крайней мере, версия 6), но в моем случае он хорошо работает.

При #info, установленном на float:right, достаточно задать #contents со свойствомoverflow:hidden.И вуаля.

0 голосов
/ 27 февраля 2010

Перемещайте ваш #content div, он останавливает утечку, как у вас, и заполняет всю страницу, когда #info исчезнет. Если у вас нет #info, вы можете каким-то образом изменить #content, #content может иметь относительную позицию и некоторую правую позицию с абсолютной позицией в #info, чтобы заполнить ее место.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...