html2canvas不适用于伪元素

时间:2016-05-28 13:37:25

标签: javascript jquery html canvas html2canvas

我正在努力保存div的形象。但div有伪元素,但我知道html2canvas不支持伪元素。

如何解决?是否有其他库将div保存为图像?

我使用下面的链接创建树结构:
https://codepen.io/P233/pen/Kzbsi
我想把它保存为图像。

为此我使用的是html2canvas

$(document).ready(function() {
  html2canvas($("#home1"), {
    onrendered: function(canvas) {
      var image = new Image();
      image.src = divByteArray;
      document.getElementById('image').appendChild(image);

      //window.open(divByteArray);          
      /* $("#test").attr('href', canvas.toDataURL("image/png"));
                    $("#test").attr('download', 'checkFile.png');
                    $("#test")[0].click(); */
    }
  });
});

请不要对功能支架发表评论。我没有全部功能 我只是想知道是否有另一个库将div保存为图像?

3 个答案:

答案 0 :(得分:1)

您可以使用html2canvas.jscanvas2image将div转换为画布并转换为图片。

答案 1 :(得分:1)

html2canvas似乎与您的代码配合得很好:https://codepen.io/anon/pen/gMOmpB

我想知道你是怎么做的“来了解”它不适用于伪元素?

一个更简单的例子,在stack-snippet中不起作用......

https://jsfiddle.net/whtsavpp/

html2canvas(d).then(function(c){document.body.appendChild(c)})
div:after{content:'hello'}
canvas{border: 1px solid black;}
<script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/0.5.0-beta4/html2canvas.js"></script>
<div id="d"></div>

答案 2 :(得分:0)

在非Google chrome浏览器中,伪元素上的getComputedStyle()方法从主要元素中选择边框样式。因此您必须在主要元素上包含边框样式。

这是诀窍,请更改此代码:

div::before {
content: 'Hello',
border-top: 1px solid green;
}

收件人:

div {
border: 0 solid;
}

div::before {
content: 'Hello',
border-top: 1px solid green;
}