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 как изображение?

2 ответа

Вы можете использовать html2canvas.js и canvas2image для преобразования div в canvas и преобразования в изображение.

В браузерах, отличных от 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;
}

Кажется, что html2canvas отлично работает с вашим кодом: https://codepen.io/anon/pen/gMOmpB

Интересно, как вы "узнали", что это не работает с псевдоэлементами?

Более простой пример, который не работает в фрагменте стека...:

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>
Другие вопросы по тегам