Проблема использования поплавков для имитации макета таблицы с объектами разного размера - PullRequest
0 голосов
/ 21 декабря 2011

Я пытаюсь создать макет без таблицы, используя поплавки, но у меня возникают проблемы с перемещением небольших объектов с обеих сторон более крупных объектов. Возможно ли это?

Вот изображение того, что я пытаюсь сделать:

How can I get the blue boxes on box sides of the pink box?

ОБНОВЛЕНИЕ: Я хотел бы иметь возможность добавлять новые синие и розовые поля в любое время и в любом месте документа, и мне не нужно применять пользовательские плавающие элементы к отдельным элементам ...

Я сохранил фактический код в JSFiddle: http://jsfiddle.net/TuZfm/

Если вы предпочитаете видеть необработанный код, вот он:

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Test</title>
<style type="text/css">
.wrapper {
    width:100px;
    margin:2em auto;
    }
.box {
    height:10px;
    width:10px;
    margin:5px;
    float:left;
    background-color:blue;
    }
.box-medium {
    height:30px;
    width:30px;
    margin:5px;
    float:left;
    background-color:pink;
    }
</style>
</head>
<body>
    <div class="wrapper">
        <img class="box"/>
        <img class="box"/>
        <img class="box-medium"/>
        <img class="box"/>
        <img class="box"/>
        <img class="box"/>
        <img class="box"/>
        <img class="box"/>
        <img class="box"/>
        <img class="box"/>
        <img class="box"/>
        <img class="box"/>
        <img class="box"/>
        <img class="box"/>
        <img class="box"/>
        <img class="box"/>
    </div>
</body>
</html>

Спасибо за любую помощь!

Вот что я получу, когда попробую встроенный блок:

inline-block

Это почти идеально, за исключением мертвого пространства рядом с розовой коробкой ... Я хотел бы иметь два ряда синих коробок рядом с розовой коробкой.

Вот код, который я использовал при попытке встроенного блока: http://jsfiddle.net/QCAFM/

Ответы [ 4 ]

2 голосов
/ 21 декабря 2011

Если вы хотите иметь возможность добавлять новые элементы на лету, вам следует подумать об использовании решения javascript для этой проблемы.

Вот хороший. http://masonry.desandro.com/

0 голосов
/ 21 декабря 2011

Вы можете использовать комбинацию абсолютного позиционирования на розовом квадрате (вынимая блок из потока, чтобы он не влиял на плавающие синие поля) и jQuery (чтобы добавить необходимое пространство). Однако это решение будет работать только в том случае, если в розовой коробке указан третий ребенок.

http://jsfiddle.net/yjmdz/

РЕДАКТИРОВАТЬ: кажется, работает только на Chrome, я все еще выясняю, что происходит ..

0 голосов
/ 21 декабря 2011

Рассматривали ли вы использование display: inline-block;а не плавает?Кажется, работает хорошо для меня.

0 голосов
/ 21 декабря 2011

float: справа на маленьких коробках, и float: слева на больших.Работал здесь

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