From 57faf6c01f347b7d43e441824c7eacf6e55716bb Mon Sep 17 00:00:00 2001 From: maoqxxmm Date: Sun, 11 May 2025 21:13:25 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=20html2canvas=20?= =?UTF-8?q?=E5=A4=84=E7=90=86=20rem=20=E6=96=87=E5=AD=97=E5=9F=BA=E7=BA=BF?= =?UTF-8?q?=E7=9A=84=E5=AF=B9=E9=BD=90=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/ShareCard.tsx | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/components/ShareCard.tsx b/components/ShareCard.tsx index 427cda2..ac0015d 100644 --- a/components/ShareCard.tsx +++ b/components/ShareCard.tsx @@ -578,6 +578,11 @@ const ShareCard: React.FC = (props) => { // 动态导入html2canvas,确保只在客户端加载 const html2canvasModule = await import('html2canvas'); const html2canvas = html2canvasModule.default; + + // 修复 html2canvas 在处理 rem 时文字基线问题 + const style = document.createElement('style'); + document.head.appendChild(style); + style.sheet?.insertRule('body > div:last-child img { display: inline-block; }'); // 使用html2canvas生成图片 const canvas = await html2canvas(element, { @@ -587,6 +592,9 @@ const ShareCard: React.FC = (props) => { allowTaint: true, logging: false }); + + // 生成 canvas 后移除临时的 style 标签 + style.remove(); // 转换为图片并下载 const image = canvas.toDataURL('image/png');