2016-12-12 2 views
0

Я пытаюсь найти лучшие сглаживания для контейнера.Найти размер для контейнера с x строками, у столбцов задано maxWidth и определено maxHeight

я должен работать с этими значениями:

  • Ширина окна макс
  • Окно максимальная высота
  • товары, чтобы поместиться в каждом столбце
  • детали, чтобы соответствовать в каждой строке

Каждый предмет должен быть квадратом, и контейнер должен точно соответствовать деталям. Мне также нужно, чтобы контейнер был как можно большим, без увеличения ширины по ширине в направлении x и максимальной высоты в направлении y.

Мой текущий код, (который на самом деле не работает), выглядит следующим образом:

[dWidth, dHeight] = [window.innerWidth, window.innerHeight]; 
// Adjust sizes, for the tiles 

var tiles = (width + height)/2; 

dSize = (dWidth/tiles) > (dHeight/tiles) ? 
    (dHeight/tiles) : (dWidth/tiles); 

dSize |= 0, 

dWidth = width * dSize, 
dHeight = height * dSize, 
  • dWidth ширина для контейнера Я хочу создать
  • dHeight высота для контейнера Я хочу создать
  • width это количество столбцов у меня есть
  • height это количество строк, у меня есть
  • dSize - высота и ширина каждого предмета.

Не нужно беспокоиться о странном назначении dWidth, это временно.

Не о чем беспокоиться dSize |= 0, я не буду получать отрицательные значения.

Не нужно беспокоиться о фрагменте, заканчивающемся запятой, а следующие строки просто назначают dWidth и dHeight на холст.

ответ

1

Количество квадратов, которые вы можете разместить по горизонтали, равно dWidth/width, и число, которое вы можете поместить вертикально, равно dHeight/height. Таким образом, вы можете работать максимальное количество, которое будет соответствовать как так:

var dSize = Math.min(dWidth/width, dHeight/height);

Если вам нужно абсолютное значение, идти вперед и использовать Math.floor на результат.

+0

Тестирование этого на данный момент – Eirik

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