JQuery заполнить тело с изображениями - PullRequest
3 голосов
/ 11 сентября 2010

1) У нас есть <body>, это height и width меняется (разное разрешение).

2) Многие блоки с изображениями внутри могут быть более 50 блоков.

3) width и height равны для каждого блока.

Как мы можем заполнить body всеми доступными изображениями, которые могут быть видны при текущем разрешении, и скрытьдругие?

Не должно быть горизонтальных / вертикальных полос прокрутки.

Например, у нас есть 50 блоков внутри <body>.1024x768 может вместить только 20, поэтому мы их показываем и скрываем других.Если человек меняет размер окна браузера на 1280 - мы показываем больше блоков и т. Д.

На самом деле я не прошу вас писать полный скрипт.Мне нужны ссылки на некоторые похожие скрипты, которые уже работают.

Лучше, если блоки могут изменить себя (например, слайд-шоу).

Спасибо.

Ответы [ 2 ]

2 голосов
/ 11 сентября 2010

Я пытаюсь выяснить алгоритм:

1) получить ширину контейнера, содержащего блоки (контейнер должен быть относительным, чтобы он расширялся при изменении размера окна). Чтобы получить ширину, используйте .width или .outerWidth

2) разделить ширину контейнера на ширину блока, пол его. Теперь вы знаете, сколько блоков помещается в один ряд.

3) Чтобы вычислить высоту, это может быть сложно, потому что у вас может быть заголовок или навигация и т. Д., Которые сокращают вертикальное пространство вниз. Так что сделайте это:

3.1) Получить высоту окна $(window).height();

3.2) Получить верхнее смещение контейнера $('#container').offset().top

3.3) Вычтите смещение из высоты окна - теперь у вас есть «реальная» высота (примечание: если у вас есть нижний колонтитул и т. д., вы также должны вычесть это резервное пространство)

4) Разделите реальное доступное вертикальное пространство по высоте блока (обратите внимание на поля / отступы) и напишите это число. Теперь вы знаете, сколько строк может уместиться в вашем пространстве.

5) умножить макс. строки и макс. столбцы, которые мы вычислили, это максимальное количество блоков, в которые можно поместиться.

6) Получите ваши блоки, например $('.block'), и итерируйте через них $('.block').each(function(index) { ... }); сейчас, если индекс больше максимального. количество блоков мы рассчитали, спрячьте их!

7) Присоедините обработчик событий к $(window).resize(function() { }) и выполните шаги выше для изменения размера

0 голосов
/ 11 сентября 2010

Поместите их в блок, в котором установлено свойство CSS overflow: hidden.Таким образом, вы можете отобразить их все, но использование увидит только столько, сколько поместится в блоке.Код не требуется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...