在创建时 给canvas一个固定宽,渲染后再为这个canvas设置样式width:100%即可解决。 function createTargeCanvas(num) { let targetContainer = document.getElementById('target') let canvas = document.createElement('canvas') canvas.id = 'target' + num canvas.width = 770 targetContainer?.appendChild(canvas) } function loadFileTarget(url: string) { PDF.getDocument(url).promise.then((p: any) => { pdfDoc = p const { numPages } = p state.pdfPages = numPages targetTotal.value = numPages CreateCanvasTarget(state.pdfPages) for (let i = 1; i <= state.pdfPages; i++) { let canvas = document.getElementById(`target${i}`) canvas!.style.width = '100%' } for (let i = 1; i <= state.pdfPages; i++) { renderPageTarget(i) } }) }