2017-02-09 3 views
3

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

Блок имеет следующий CSS

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

И все они обернуты в обертку

<div class="wrapper"> 
    <div ng-show="condition1" class="block"></div> 
    <div ng-show="condition2" class="block"></div> 
    <div ng-show="condition3" class="block"></div> 
</div> 

enter image description here

  1. высота Каждый блок является динамическим в зависимости от содержания.
  2. Каждый блок может показывать или не показывать в зависимости от состояния. Как вы можете видеть, возможно, что второй блок не будет отображаться, а третий блок будет выдвинут для выравнивания с первым блоком.
  3. Всегда должно быть не более 2 блоков на «ряд»
  4. В будущем будет много таких блоков.

Теперь, что я хочу достичь для каждой строки, установите блок с меньшей высотой на ту же высоту, что и блок с большей высотой. Я не уверен, как подойти к этому с помощью CSS. Если это невозможно, каким будет лучший способ приблизиться к этому с помощью jquery?

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

+0

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

+0

Сколько у вас контроля над HTML? –

+0

Как вы не показываете содержимое через код сценария при условии ... или, пожалуйста, не позволяйте этому через код добавлять отображение класса CSS: нет или невидимо и т. Д. – muratkh

ответ

6

Возможно, вы захотите посмотреть на flexbox. https://css-tricks.com/snippets/css/a-guide-to-flexbox/

Flexbox можно использовать для растягивания дочерних элементов на основе размера родителя.

Вот быстрый тест, который я сделал в jsfiddle

https://jsfiddle.net/7Lknyxqr/

.wrapper{ 
    display: flex; 
    align-items: stretch; 
    flex-wrap: wrap; 
    height: auto; 
    width: 100%; 
} 

.block{ 
    width: calc(50% - 20px); 
    background-color: #343; 
    margin: 10px; 
} 
+0

Это работает довольно хорошо, я тестировал его с помощью различное количество блоков, и это надежный, приятный! –

+0

Это прекрасно работает! никогда не знал, что есть такая простая вещь! Думал, что мне придется пройти через javascript, а затем измерить высоту следующего ребенка или до того, как ребенок или что-то еще. БЛАГОДАРЯ!! – andyh0316

+0

@ Marc Audet и спасибо за помощь =) – andyh0316

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