bismoney
@bismoney

Как сделать законченный блоками ряд?

Друзья, помогите советом или направлением, уже 5 дней весь мозг сломал.
Есть два типа блоков как показано на картинке ниже, один по ширине равен двум маленьким.

Проблема с их построением решилась js скриптом (собственно для этого и делалась тогда эта картинка)
b1d69d67418144acae08f8680cf59225.jpg

Но на картинке как видно нижний ряд заканчивается полностью закрыв ряд.
Но если к примеру выводить 9 новостей и в них будут к примеру 3 широких блока, тогда 3 новости вываливаются на новую строку, так как широкий блок занимает 2 обычные, получается что 3 широких, вымещают 3 новости.

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

Объясните может я что-то не там уже ищу? как вы это делаете разработчики?
Я уже не раз приводил этот сайт в пример www.the-village.ru
Так как в нем реализовано 1 в 1 то что мне нужно. Как они получают законченный ряд имея два типа блоков?

Вообще вопрос про rails, так как именно там я пытаюсь это реализовать, и именно в контрлере я пытаюсь сделать эту выборку.
Но так как не имею понятия как это реализовывают, решил спросить в других категория.
Помогите пожалуйста.
  • Вопрос задан
  • 177 просмотров
Решения вопроса 1
Я тут вижу два варианта:
1. делаем так, чтоб блок подстраивается под сетку. Т.е. если блок с шириной 2 попадает в ситуацию как на картинке - он становится одинарный.
2. Добавляем объекты в сетку рядами. Т.е. берем пустой массив, представляющий собой ряд.
Пока элементы влезают - добавляем их. Как только элементы перестают влезать, проверяем, есть ли место в ряду. Если места нет - добавляем ряд в коллекцию объектов. Если место есть - ищем подходящий по размеру объект, сохраняя все остальные в каком-то временном массиве. Продолжаем операцию до тех пор, пока не останется недобавленных объектов.
Минусы:
1ый метод: не всегда есть возможность сделать гибкость у блоков.
2ой метод: объекты перемешиваются( т.е. в случае новостной ленты, где важна последовательность, это неприемлемо ), возможны случаи, когда описанная ситуация всё же произойдет.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы