Я разрабатываю приложение для рисования и столкнулся с проблемой, которую пытался решить, но пока не нашел надежного решения:
Эскизы имеют исходное разрешение 1280 x 720, и я хотел бы изменить размер холста при открытии страницы до максимально возможного размера (учитывая размеры экрана за вычетом панели инструментов, которую я разместил в верхней части страницы). сохраняя соотношение сторон 1280 x 720. Холст должен располагаться по центру экрана, а все остальное покроют черные полосы: когда отношение размеров окна браузера меньше, чем отношение исходного эскиза к высоте, будут горизонтальные черные полосы (рис. 1), а когда он больше, вертикальные черные полосы (рис. 2).
Я пытался использовать javascript, применяя к холсту offsetWidth и offsetHeight div, содержащего вспомогательное невидимое изображение, которое я генерирую программно с исходными размерами эскиза, но это не кажется надежным способом сделать это. В большинстве случаев свойства смещения не готовы, когда страница загружается, и мне приходится ждать их с помощью таймера (или наблюдателей мутаций).
Некоторые изображения того, что я пытаюсь сделать:
Я трачу много времени на эту мелочь и схожу с ума, потому что каждое решение, которое я нашел, слишком хакерское или ненадежное. Любая помощь будет очень признательна.
Я использую Angular + Ionic 4.