fix: 画布变化后始终居中

This commit is contained in:
jeo young 2022-12-17 00:56:42 +08:00
parent 7341ff11f3
commit 0376703fd2
5 changed files with 25 additions and 6 deletions

View File

@ -928,6 +928,8 @@ export const useChartEditStore = defineStore({
const scaleHeight = parseFloat((width / baseProportion / editCanvasHeight).toFixed(5))
this.setScale(scaleHeight > 1 ? 1 : scaleHeight)
}
window.onCanvsSizecomputed?.()
} else {
window['$message'].warning('请先创建画布,再进行缩放')
}

View File

@ -281,7 +281,7 @@ export const setKeyboardDressShow = (keyCode?: number) => {
const dom = document.getElementById('keyboard-dress-show')
if (!dom) return
if (!keyCode) {
if (keyCode == 32) window.onKeySpacePressHold?.(false)
window.onKeySpacePressHold?.(false)
dom.innerText = ''
return
}

View File

@ -63,13 +63,27 @@ watch(
}
)
//
const canvasPosCenter = () => {
const { width: containerWidth, height: containerHeight } = $container.value.getBoundingClientRect()
const { width, height } = canvasBox()
$app.value.scrollLeft = containerWidth / 2 - width / 2
$app.value.scrollTop = containerHeight / 2 - height / 2
}
onMounted(() => {
$app.value.addEventListener('wheel', handleWheel, { passive: false })
//
$app.value.scrollLeft = $container.value.getBoundingClientRect().width / 2 - canvasBox().width / 2
canvasPosCenter()
})
window.onCanvsSizecomputed = () => {
setTimeout(() => {
canvasPosCenter()
}, 500)
}
const handleScroll = () => {
const screensRect = $app.value.getBoundingClientRect()
const canvasRect = refcanvasBox.value.getBoundingClientRect()
@ -133,7 +147,7 @@ const canvasBox = () => {
const layoutDom = document.getElementById('go-chart-edit-layout')
if (layoutDom) {
return {
height: layoutDom.clientHeight - 40 - 44,
height: layoutDom.clientHeight - 25,
width: layoutDom.clientWidth
}
}
@ -178,9 +192,10 @@ const canvasBox = () => {
.canvas {
position: absolute;
top: 80px;
top: 50%;
left: 50%;
transform-origin: 50% 0;
transform: translateY(-50%);
&:hover {
cursor: v-bind('cursorStyle');

View File

@ -161,7 +161,6 @@ onMounted(() => {
@include goId('chart-edit-content') {
border-radius: 10px;
margin: 25px;
overflow: hidden;
@extend .go-transition;
@include fetch-theme('box-shadow');

3
types/global.d.ts vendored
View File

@ -11,6 +11,9 @@ interface Window {
// 编辑 JSON 的存储对象
opener: any
//当画布大小重新计算后
onCanvsSizecomputed:Function
}
declare type Recordable<T = any> = Record<string, T>