【问题标题】:Save hidden DIV as canvas image将隐藏的 DIV 保存为画布图像
【发布时间】:2019-02-06 13:41:21
【问题描述】:

我使用以下代码将可见的保存为图像。

html2canvas(document.querySelector('.specific'), {
        onrendered: function(canvas) {
        theCanvas = canvas;
        Canvas2Image.saveAsPNG(canvas); 
    }
});

有什么办法可以拯救隐藏的

【问题讨论】:

  • 可以给你个html吗

标签: javascript html html5-canvas html2canvas


【解决方案1】:

有一些解决方案,例如显示属性切换,或在隐藏元素内渲染。

解决方案 1

快速切换可见性属性

const el = document.querySelector('.specific');
el.style.display = "block"; // or any other property, like opacity, visibility...
html2canvas(el, {...}).then((canvas) => {
   el.style.display = "none";
};

解决方案 2

将您的 div(并使其可见)包装在不可见的包装器中

<div style="position: absolute; opacity: 0; pointer-events:none;">
    <div class="specific"></div>
</div>

或

<div style="overflow: hidden; height: 0;">
    <div class="specific"></div>
</div>

解决方案 3

使用 html2canvas onclone 回调函数可以修改传递给渲染器的对象(我认为这是最好的解决方案)

html2canvas(document.querySelector('.specific'), {
    onclone: function(doc){
        doc.style.display = 'block';
        // or doc.style.opacity = '1', doc.style.visibility = 'visible' ...
    },
    onrendered: function(canvas) {
        theCanvas = canvas;
        Canvas2Image.saveAsPNG(canvas); 
    }
});

【讨论】:

  • onclone 回调何时执行
  • 在 html2canvas 执行的开始,在渲染之前,它在文档中。
  • 我尝试在 onclone() 中打印一个 console.log,但它执行得较新
  • 也许您使用的是一些过时的版本?我已经尝试过了,它有效:cdnjs.cloudflare.com/ajax/libs/html2canvas/0.5.0-beta4/…
  • 我有旧版本。最新版本有onclone方法。换了最新的就可以了
猜你喜欢
  • 2011-11-12
  • 2014-03-21
  • 1970-01-01
  • 2014-08-08
  • 1970-01-01
  • 1970-01-01
  • 2023-03-23
  • 1970-01-01
相关资源
最近更新 更多