Я пытался разделить div на два столбца с помощью CSS, но мне еще не удалось заставить его работать. Моя основная структура следующая:
<div id="content">
<div id="left">
<div id="object1"></div>
<div id="object2"></div>
</div>
<div id="right">
<div id="object3"></div>
<div id="object4"></div>
</div>
</div>
Если я попытаюсь переместить правый и левый div в их соответствующие позиции (правый и левый), он, похоже, проигнорирует цвет фона содержимого div. И другой код, который я пробовал с разных веб-сайтов, похоже, не может быть переведен в мою структуру.
Спасибо за любую помощь!
Ответы:
Когда вы размещаете эти два div с плавающей запятой, div содержимого сворачивается до нулевой высоты. Просто добавь
<br style="clear:both;"/>
после div #right, но внутри div содержимого. Это заставит div содержимого окружать два внутренних плавающих div.
источник
Мне это нравится. Я разделил экран на две половины: 20% и 80%:
<div style="width: 20%; float:left"> #left content in here </div> <div style="width: 80%; float:right"> #right content in there </div>
источник
Другой способ сделать это - добавить
overflow:hidden;
к родительскому элементу плавающие элементы.overflow: hidden заставит элемент увеличиваться до размера плавающих элементов.
Таким образом, все это можно сделать в css, а не добавлять еще один элемент html.
источник
overflow:auto;
иногда может быть лучшим вариантомСамый гибкий способ сделать это:
#content::after { display:block; content:""; clear:both; }
Это действует точно так же, как добавление элемента к #content:
<br style="clear:both;"/>
но без фактического добавления элемента. :: after называется псевдоэлементом. Единственная причина, по которой это лучше, чем добавление
overflow:hidden;
в #content, заключается в том, что у вас может быть переполнение абсолютных позиционированных дочерних элементов и при этом они будут видны. Кроме того, это позволит видеть тени блока.источник
#content:after
(только одно двоеточие вместо двух) ... Если я правильно помню, правильнее использовать два двоеточия для псевдоэлементов, но старые IE распознают его, только если он есть. ... или что-то в этом роде - я уже давно не занимался этой проблемой.Ни один из представленных ответов не отвечает на исходный вопрос.
Вопрос в том, как разделить div на 2 столбца с помощью css.
Все приведенные выше ответы фактически включают 2 div в один div, чтобы имитировать 2 столбца. Это плохая идея, потому что вы не сможете перемещать контент в 2 столбца каким-либо динамическим образом.
Итак, вместо приведенного выше используйте один div, который определен как содержащий 2 столбца с использованием CSS следующим образом ...
.two-column-div { column-count: 2; }
назначьте указанное выше как класс для div, и он фактически перенесет его содержимое в 2 столбца. Вы можете пойти дальше и определить промежутки между полями. В зависимости от содержимого div вам может потребоваться изменить значения разрывов слов, чтобы ваш контент не разбивался между столбцами.
источник
По какой-то причине мне никогда не нравились подходы к очистке, я полагаюсь на поплавки и процентную ширину для таких вещей.
Вот что работает в простых случаях:
#content { overflow:auto; width: 600px; background: gray; } #left, #right { width: 40%; margin:5px; padding: 1em; background: white; } #left { float:left; } #right { float:right; }
Если вы добавите контент, вы увидите, что он работает:
<div id="content"> <div id="left"> <div id="object1">some stuff</div> <div id="object2">some more stuff</div> </div> <div id="right"> <div id="object3">unas cosas</div> <div id="object4">mas cosas para ti</div> </div> </div>
Вы можете увидеть это здесь: http://cssdesk.com/d64uy
источник
Создайте дочерние div,
inline-block
и они будут располагаться бок о бок:#content { width: 500px; height: 500px; } #left, #right { display: inline-block; width: 45%; height: 100%; }
См. Демонстрацию
источник
Я знаю, что этот пост старый, но если кто-то из вас все еще ищет более простое решение.
#container .left, #container .right { display: inline-block; } #container .left { width: 20%; float: left; } #container .right { width: 80%; float: right; }
источник
Лучший способ разделить div по вертикали -
#parent { margin: 0; width: 100%; } .left { float: left; width: 60%; } .right { overflow: hidden; width: 40%; }
источник
Вы можете использовать flexbox для управления компоновкой вашего элемента div:
* { box-sizing: border-box; } #content { background-color: rgba(210, 210, 210, 0.5); border: 1px solid #000; padding: 0.5rem; display: flex; } #left, #right { background-color: rgba(10, 10, 10, 0.5); border: 1px solid #fff; padding: 0.5rem; flex-grow: 1; color: #fff; }
<div id="content"> <div id="left"> <div id="object1">lorem ipsum</div> <div id="object2">dolor site amet</div> </div> <div id="right"> <div id="object3">lorem ipsum</div> <div id="object4">dolor site amet</div> </div> </div>
источник
Поплавки не влияют на поток. Я обычно добавляю
<p class="extro" style="clear: both">possibly some content</p>
в конце «упаковывающего div» (в данном случае - содержимого). Я могу обосновать это семантическим основанием, сказав, что такой абзац может понадобиться. Другой подход - использовать CSS clearfix:
#content:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; } #content { display: inline-block; } /* \*/ * html #content { height: 1%; } #content { display: block; } /* */
Уловка с комментариями предназначена для кросс-браузерной совместимости.
источник
На это лучше всего ответить здесь Вопрос 211383
В наши дни любой уважающий себя человек должен использовать заявленный подход «micro-clearfix» очистки поплавков.
источник
Установите% ширины для каждого дочернего DIV.
#content { font-size: 0; } #content > div { font-size: 16px; width: 50%; }
* В Safari вам может потребоваться установить 49%, чтобы он работал.
источник
Разделить разделение на два столбца очень просто, просто укажите ширину столбца лучше, если вы поместите это (например, ширина: 50%) и установите float: left для левого столбца и float: right для правого столбца.
источник
#column { overflow:auto; width: 100%; } #column50pleft, #column50pright{ width: 49%; margin:2px; padding: 0.5%; background: white; } #column50pleft { float:left; } #column50pright { float:right; } HTML: <div id="column"> <div id="column50pleft"> </div> <div id="column50pright"> </div> </div>