В
firefox
есть такая нестандартная фича как
-moz-element
, которая идеально подходит под задачу:
Увы, она никогда не станет стандартной, да и из ff её могут рано или поздно выпилить.
В остальном, решения, собственно, два:
1. Делать всю рабочую область на собственном
canvas
движке(можно попробовать что-то
такое), и тогда просто получать копию холста на меньший
canvas
. Это более оптимально но требует переписывание всего и сложности основной работы.
2. Держать два идентичных компонента делящих
одно состояние(на пример через внешний
Vue.observable
\
reactive
или
vuex
), один из которых уменьшать с помощью
transform: scale()
.
html2canvas
, предложенный выше, имеет очень ограниченную область применения и вряд ли тут сработает, но можете попробовать
P.S. Есть ещё один вариант: на любое обновление(тут поймать обновление в зависимости от вашей архитектуры может быть либо очень просто, либо очень сложно) делать верхнему компоненту тупо
this.$el.cloneNode(true)
и класть полученную копию в нужное место с тем же
transform: scale()
, но это может весьма сильно тормозить в зависимости от количества элементов и частоты обновления.