Проблема - Несколько изображений - почему?
После первого щелчка он захватывает div
в canvas
. Вы можете ясно видеть, что есть некоторая граница внешнее изображение. Таким образом, после того, как вы установите изображение в элементе div на границу « холст созданное изображение » останется, и элемент div, захваченный в изображение, будет иметь внутреннюю границу как ее скриншот.
Решение:
Удалить границу и избежать пробелов
Проблема - Текст поверх текста - почему?
Вы настраиваете значение span с идентификатором "wow" равно значению текстовой области всякий раз, когда вы нажимаете кнопку "click me", а затем вы делаете html2canvas
, который создаст изображение div, поскольку у вас есть span внутри div с текстом, он также будет быть там на холсте. После того, как холст сгенерирован, вы устанавливаете sr c изображения в canvas.toDataURL()
. Когда вы снова нажмете «щелкнуть меня» с другим текстом, текст будет помещен на текущее изображение (в котором уже есть какой-то предыдущий текст)
Решение:
Установить текст диапазона с id = "wow" после img.src=canvas.toDateURL()
function myFunction() {
document.getElementById("wow").innerHTML =""
html2canvas(document.getElementById("imagewrap"), {
onrendered: function(canvas) {
var image = canvas.toDataURL();
document.getElementById("img_prev").src = image
document.getElementById("wow").innerHTML =
document.getElementById("mTextArea").value;
},
useCORS: true
});
}
*{
font-family: 'Roboto', sans-serif;
}
#container1{
float: left;
}
#container2{
float: right;
}
#mImage{
height: 300px;
width: 300px;
}
.desc {
position: absolute;
text-align: center;
top: 1px;
left: 30px;
}
.outer, .wrap, .html2canvas, .image_text {
display: inline-block;
vertical-align: top;
}
.wrap {
text-align: center;
}
#imagewrap {
position: relative;
background-color: white;
}
#wow {
text-align: center;
font-size: 25pt;
position: absolute;
color: red;
display: block;
top: 50px;
left: 50px;
right: 50px;
align-items: center;
word-wrap: break-word;
}
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="styles.css">
<script src="script.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/0.4.1/html2canvas.min.js"></script>
<link href="https://fonts.googleapis.com/css2?family=Roboto:wght@500&display=swap" rel="stylesheet">
<title>Social Poster</title>
</head>
<body>
<h1>Social Poster</h1>
<div id="container1">
<textarea name="inputT" id="mTextArea" cols="30" rows="10"></textarea>
<button id="mButton" onclick="myFunction()">Click ME!</button>
</div>
<div id="container2">
<div class="outer">
<div id="imagewrap" class="wrap" >
<img src="https://encrypted-tbn0.gstatic.com/images?q=tbn%3AANd9GcQ2w0Uf5u-qRiqYZVXmHukxNQxPENtwoEqh2qBpj871sojoaePh&usqp=CAU" id="img_prev" width="500" />
<span id="wow">WOW!</span>
</div>
</div>
</div>
</body>
</html>