Просмотр исходного кода

fix(useSlideHandler): 修复元素缩放时宽度和字体大小未同步调整的问题

处理元素缩放时,确保宽度和文本元素的字体大小也按比例调整。对于文本元素,通过正则表达式匹配并更新样式中的字体大小属性。
lsc 2 недель назад
Родитель
Сommit
c431536ae3
1 измененных файлов с 14 добавлено и 0 удалено
  1. 14 0
      src/hooks/useSlideHandler.ts

+ 14 - 0
src/hooks/useSlideHandler.ts

@@ -108,6 +108,20 @@ export default () => {
       element.id = elIdMap[element.id]
       element.top = (element.top || 0) * scaleY
       element.left = (element.left || 0) * scaleX
+      element.width = (element.width || 0) * scaleX
+      if (element.type === 'text' || element.type === 'shape') {
+        element.height = (element.height || 0) * scaleY
+      }
+      
+      // 处理 content 中的字体大小
+      if (element.type === 'text') {
+        // 匹配 style 中的 font-size 属性
+        element.content = element.content.replace(/font-size:\s*(\d+)px/g, (match, fontSize) => {
+          const newFontSize = Math.round(parseInt(fontSize) * scaleY)
+          return `font-size: ${newFontSize}px`
+        })
+      }
+      
       if (element.groupId) element.groupId = groupIdMap[element.groupId]
     }
     const newSlide = {