2015-04-13 2 views
3

У меня динамический контент, загружаемый на страницу, поэтому неуказанное количество элементов. Мне нужно, чтобы они были равномерно распределены между двумя столбцами, поэтому я решил установить их ширину до 50%, а их плавающие левые будут делать трюк.Как отображать динамический контент в двух столбцах равномерно?

<div class="element"> 
    <p>My content goes here!</p> 
</div> 

.element{float:left;width:50%;} 

Пример: https://jsfiddle.net/fft75mu4/

Но в ситуации, в моем примере есть разрыв выше синего элемента, потому что правый элемент выше, чем первый слева. Какое рекомендуемое решение для этого? Я предполагаю, что это распространенная проблема?

Я бы предпочел не создавать фактические столбцы в CSS, так как контент является динамическим, а элементы могут быть очень высокими/короткими, поэтому положительное слово 5 слева и 5 справа не всегда работает.

+0

ли с CSS3 Возможное свойства под названием 'колонного count'. Взгляните на это: http://w3bits.com/css-masonry/ и http://caniuse.com/#feat=multicolumn –

ответ

3

В зависимости от поддержки браузера вы хотите, возможно, столбцы CSS являются решением?

http://caniuse.com/#feat=multicolumn

body { 
    column-count: 2; 
} 

.element { 
    break-inside: avoid; 
} 

https://jsfiddle.net/erykpiast/fft75mu4/11/

+0

Работает отлично, и в старых браузерах красиво обращается к одному столбцу. Спасибо за предложение! – user3420034

2

Вы можете сделать это сделано разными способами, один из них (левая колонка - класс "floatLeft", правый столбец - класс "floatRight"):

.element{width:50%;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;} 
 
.floatLeft{ 
 
    float:left; 
 
} 
 
.floatRight{ 
 
    float:right; 
 
} 
 
.blue{background-color:#3aa9e3} 
 
.red{background-color:#f15743;} 
 
.green{background-color:#8aba56;}
<div class="element red floatLeft"> 
 
    <p>My content goes here! My content goes here! My content goes here! My content goes here!</p> 
 
</div> 
 

 
<div class="element green floatRight"> 
 
    <p>My content goes here! My content goes here! My content goes here! My content goes here! My content goes here! My content goes here! My content goes here! My content goes here! My content goes here! My content goes here! My content goes here! My content goes here! My content goes here! My content goes here! My content goes here! My content goes here! My content goes here! My content goes here! My content goes here! My content goes here!</p> 
 
</div> 
 
<div class="element blue floatLeft"> 
 
    <p>My content goes here! My content goes here! My content goes here! My content goes here!</p> 
 
</div>

+0

Я не знал, что все будет так просто. :) Отличная работа. +1 –

+0

Добро пожаловать! – Ked

0

Вам нужно используйте javascript. Существует легкая библиотека под названием «масонство» (http://masonry.desandro.com/), которая поможет вам достичь желаемого.

+0

Хотя эта ссылка может ответить на вопрос, лучше включить основные части ответа здесь и предоставить ссылку для справки. Ответные ссылки могут стать недействительными, если связанная страница изменится. – bjb568

+0

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

-1

Ked Ответ более чистый, но вы могли бы также вкладывать в DIV-теги. Что-то вроде этого:

.element{width:50%;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;} 
 

 
.blue{background-color:#3aa9e3} 
 
.red{background-color:#f15743;} 
 
.green{background-color:#8aba56;} 
 

 
.floatLeft{ 
 
    float:left; 
 
} 
 
.floatRight{ 
 
    float:right; 
 
}
<div class="element floatLeft"> 
 
    <div class="red floatLeft"> 
 
     <p >My content goes here! My content goes here! My content goes here! My content goes here!</p> 
 
    </div> 
 
    <div class="blue floatRight"> 
 
     <p>My content goes here! My content goes here! My content goes here! My content goes here!</p> 
 
    </div> 
 
</div> 
 

 
<div class="element green floatRight"> 
 
    <p>My content goes here! My content goes here! My content goes here! My content goes here! My content goes here! My content goes here! My content goes here! My content goes here! My content goes here! My content goes here! My content goes here! My content goes here! My content goes here! My content goes here! My content goes here! My content goes here! My content goes here! My content goes here! My content goes here! My content goes here!</p> 
 
</div>

+0

Вы правы, но это зависит от фактического всего макета html/css, в вашем случае лучше использовать 2 divs, но внутри них используются только divs без float, только с шириной: 100%, owhervise его просто дополнительная работа. – Ked

Смежные вопросы