Я получаю массив квадратных изображений от API для отображения в приложении React. Количество изображений варьируется от 1 до 14. Размеры изображений, которые я получаю от API, равны квадратам 200, 512 или 600 пикселей. Отображаемые изображения имеют соответствующие номиналы джекпота и суммы джекпота, отображаемые под изображениями, и заголовок над ними. Дисплей может отображать от 1 до 5 наименований и соответствующие суммы, которые должны быть одинакового размера - сокращать их нельзя.
Мое приложение будет отображаться в офисе, в разрешении 1920 x 1080 Вт. экран, без прокрутки возможно. Изменение размера экрана будет невозможно, и, следовательно, не будет медиазапросов.
Дисплей будет вращаться каждые десять секунд, так что будет отображаться новый набор изображений. Я приложил ссылку к ссылке CodeSandbox - https://codesandbox.io/s/jackpot-ufs5t - с грубой копией моего приложения (без поворота, без вызовов API), с базовыми c смоделированными данными в imageList. js файл, который действует как поддельный API.
Я хочу, чтобы изображения помещались в контейнер в верхней части экрана, под заголовком и над номиналами / суммами джекпота. Если есть несколько изображений (6 или меньше), я хочу, чтобы они имели определенную высоту и ширину (квадрат 303px выглядит хорошо). Если существует более 6 изображений, я хочу, чтобы высота и ширина пропорционально уменьшались, чтобы они все помещались в контейнере, между заголовком и суммой джекпота.
Все выглядит красиво, когда есть только несколько изображений и 1 -3 номинала джекпота. Однако наихудший сценарий - 14 изображений и 5 номиналов джекпота - это катастрофа.
Flexbox с включенной функцией flex-wrap хорошо подходит для автоматической подгонки изображений и их уменьшения в случае уменьшения размера контейнера. Но здесь дело не в этом, чем больше изображений, они просто перекрывают то, что выше или ниже их.
Я использовал CSS -Grid в прикрепленном примере CodeSandbox, который я также не могу заставить работать.
Использование файла imageList в CodeSandbox, комментирование и раскомментирование данных будут варьировать количество отображаемых изображений и суммы джекпота.
Что я сделал, чтобы это работало (не показано в CodeSandbox) состоит в том, чтобы условно назначать разные классы изображениям и контейнеру на основе каждой различной комбинации длин массива изображений и массива джекпотов. Но я чувствую, что должен быть лучший способ, с Flexbox или CSS -Grid, чтобы автоматически уменьшать размер квадратных изображений, основываясь исключительно на их количестве. Я не прав?
В настоящее время меня беспокоит только вертикальное отображение (портрет), а не горизонтальное (альбомное).
Повторная ссылка CodeSandbox: https://codesandbox.io/s/jackpot-ufs5t