Разместите несколько блоков фиксированной ширины / переменной высоты в 2 столбца

Я постараюсь объяснить это как можно лучше. У меня есть несколько div, которые фиксированной ширины, но переменной высоты. Я хочу поместить эти блоки в два столбца внутри контейнера фиксированной ширины. Что произойдет, если дать им всем значение типа float: left, я получу что-то вроде этого:

######### ######### 
# box 1 # # box 2 # 
######### # ..... # 
......... # ..... # 
......... ######### 
######### ######### 
# box 3 # # box 4 # 
# ..... # # ..... # 
######### #########
######### #########
# box 5 # # box 6 #
# ..... # #########
# ..... #
#########

(Периоды пустого пространства)

Что я действительно хотел бы, чтобы верх коробки 3 касался нижней части коробки 1. Есть ли простой способ добиться этого?

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

2 ответа

Решение

Вам нужно чередовать левый и правый плавающие на ваших ящиках.

  .box:nth-child(2n+1){
    float: left;
  }
  .box:nth-child(2n){
    float: right;
  }

Предупреждение, этот код не совместим со старыми браузерами, для тех, кому вы можете установить различные классы CSS программно в каждом другом окне.

Вместо того, чтобы работать горизонтально, работайте вертикально.

Сейчас:

LR
1 ==> 2
3 ==> 4
5 ==> 6

Другой путь:

LR
1 2
\ / \ /
3 4
\ / \ /
5 6

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

Другие вопросы по тегам