thehighhomie
@thehighhomie

Подстроить координаты top/left при групповом масштабировании?

Как реализовать масштабирование нескольких элементов, относительно другого элемента?
Пишу ресайз (на подобии canva.com, google presentation и т.д.) он должен ресайзить как один элемент так и несколько. Рабоатет это так, есть контейнер с элементами, и рядом с контейнером элементов лежит элемент ресайза, и когда элементы выделяются, то элемент ресайза высчитывает размеры и подстраивает его под выбраные элементы.

Проблема в том, что элементы лежат отдельно от ресайзера, так как элементы должны подстраиваться по ресайзер ,во время его ресайза.

Если бы элементы лежали внутри ресайзера, то я бы без проблем сделал это таким образом:
scaleWidth = containerNewWidth / containerSourceWidth
scaleHeight = containerNewHeight / containerSourceHeight

elemenWidth = elementWidth * scaleWidth
elementLeft = elementLeft * scaleWidth
elementHeight = elementHeight * scaleHeight
elementTop = elementTop * scaleHeight


и тогда все элементы подстроятся внутри ресайзера.

но постоянно перемещать при начале ресайза элементы в ресайзер не хотелось бы, потому, что из за спецификации приложения это очень не желательно, хотя можно.

В общем если я применяю код выше, то элементы нормально масштабируются по width, heigth, а top, left не получается подогнать, я пробовал уже подстраивать координаты, прибавляя/ вычитая координаты контейнеров... что только не делал, не получается подстроить по top, left....
  • Вопрос задан
  • 63 просмотра
Решения вопроса 1
romash
@romash
web-разработчик
У элементов left, top меняются также пропорциоально scaleWidth и scaleHeight, только не полностью, а только разница с left, top ресайзера.
elementLeft = resizerNewLeft + (elementLeft - resizerSourceLeft) * scaleWidth
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы