html2canvas 1.0.0-rc.5 2019 无法使用圆角 corners/border-radius(图像始终为矩形)?
html2canvas 1.0.0-rc.5 2019 not working with rounded corners/border-radius (image is always rectangular)?
我使用 2016 (0.5.0) 版的 html2canvas 很长时间了,因为它总是能很好地满足我的需要。现在我必须切换到当前版本,但我遇到了一些问题:
创建的图像不再有圆角。 png 始终是矩形的。现在我问自己是否我做错了什么,或者它是否可能是当前版本的 html2canvas 中的错误?在 GitHub.
上将其作为 "issue" 发布之前,我想先在这里问一下
2016 0.5.5版本的结果:https://i.imgur.com/gxutBEY.png(圆角)
2019 1.0.0版本的结果:https://i.imgur.com/LLY9WpI.png(矩形角)
这是一个显示问题的 JSFiddle:https://jsfiddle.net/ROPfiddle/jskLuw3v/3/
这是 html2canvas 的当前版本 (1.0.0-rc.5):https://html2canvas.hertzen.com/dist/html2canvas.js
这是我的CSS:
body {
font-family: system-ui, Helvetica, Arial, sans-serif;
margin: 19px 20px 0 20px;
background-color: #000;
}
#wrapper {
position: absolute;
white-space: nowrap;
}
#badge {
padding: 70px 67px 63px 71px;
border: 13px solid #a6a6a6;
border-radius: 110px;
line-height: 1;
background-color: #000;
color: #fff;
}
.icon img {
width: 273px;
height: auto;
border-radius: 62px;
}
.icon {
float: left;
}
.typo {
margin-top: -3px;
margin-left: 336px;
}
.text {
font-size: 92px;
font-weight: 500;
color: #a6a6a6;
letter-spacing: 0.04em;
}
.name {
font-size: 191px;
font-weight: 700;
margin-left: -6px;
letter-spacing: -0.0125em;
}
.finalbadge {
width: 100%;
height: auto;
}
这是我的HTML(w/obase64编码的图片):
<div id="wrapper">
<div id="badge">
<div class="icon">
<img src="data:image/png;base64, "/>
</div>
<div class="typo">
<span class="text">Listen on</span><br />
<span class="name">iTunes</span>
</div>
</div>
</div>
这是我的 JS:
html2canvas(document.getElementById("badge")).then(function(canvas) {
document.body.appendChild(canvas);
var img = canvas.toDataURL("image/png");
document.body.innerHTML = '<img class="finalbadge" src="'+img+'"/>';
});
我是不是做错了什么?还是必须是html2canvas?
由于问题已经得到解答,这里是显示 solution/answer 的 JSFiddle:https://jsfiddle.net/ROPfiddle/zyj9b6dc/2/
我不能告诉你这是否是 html2canvas 从 0.5.5 到 1.0.0 版本的变化。
尽管如此,除了必需的 HTML 元素之外,html2canvas()
接受一个可选的第二个参数,它是一个 Javascript 对象。在这些选项中有一个名为 backgroundColor 的 属性,它接受 rgba 值——因此包括透明度。如果将所有 4 个值都设置为 null,则会恢复透明圆角。
所以简单地改变
html2canvas(document.getElementById("badge"))
到
html2canvas(document.getElementById("badge"), {backgroundColor: "rgba(0,0,0,0)"})
我使用 2016 (0.5.0) 版的 html2canvas 很长时间了,因为它总是能很好地满足我的需要。现在我必须切换到当前版本,但我遇到了一些问题:
创建的图像不再有圆角。 png 始终是矩形的。现在我问自己是否我做错了什么,或者它是否可能是当前版本的 html2canvas 中的错误?在 GitHub.
上将其作为 "issue" 发布之前,我想先在这里问一下2016 0.5.5版本的结果:https://i.imgur.com/gxutBEY.png(圆角)
2019 1.0.0版本的结果:https://i.imgur.com/LLY9WpI.png(矩形角)
这是一个显示问题的 JSFiddle:https://jsfiddle.net/ROPfiddle/jskLuw3v/3/
这是 html2canvas 的当前版本 (1.0.0-rc.5):https://html2canvas.hertzen.com/dist/html2canvas.js
这是我的CSS:
body {
font-family: system-ui, Helvetica, Arial, sans-serif;
margin: 19px 20px 0 20px;
background-color: #000;
}
#wrapper {
position: absolute;
white-space: nowrap;
}
#badge {
padding: 70px 67px 63px 71px;
border: 13px solid #a6a6a6;
border-radius: 110px;
line-height: 1;
background-color: #000;
color: #fff;
}
.icon img {
width: 273px;
height: auto;
border-radius: 62px;
}
.icon {
float: left;
}
.typo {
margin-top: -3px;
margin-left: 336px;
}
.text {
font-size: 92px;
font-weight: 500;
color: #a6a6a6;
letter-spacing: 0.04em;
}
.name {
font-size: 191px;
font-weight: 700;
margin-left: -6px;
letter-spacing: -0.0125em;
}
.finalbadge {
width: 100%;
height: auto;
}
这是我的HTML(w/obase64编码的图片):
<div id="wrapper">
<div id="badge">
<div class="icon">
<img src="data:image/png;base64, "/>
</div>
<div class="typo">
<span class="text">Listen on</span><br />
<span class="name">iTunes</span>
</div>
</div>
</div>
这是我的 JS:
html2canvas(document.getElementById("badge")).then(function(canvas) {
document.body.appendChild(canvas);
var img = canvas.toDataURL("image/png");
document.body.innerHTML = '<img class="finalbadge" src="'+img+'"/>';
});
我是不是做错了什么?还是必须是html2canvas?
由于问题已经得到解答,这里是显示 solution/answer 的 JSFiddle:https://jsfiddle.net/ROPfiddle/zyj9b6dc/2/
我不能告诉你这是否是 html2canvas 从 0.5.5 到 1.0.0 版本的变化。
尽管如此,除了必需的 HTML 元素之外,html2canvas()
接受一个可选的第二个参数,它是一个 Javascript 对象。在这些选项中有一个名为 backgroundColor 的 属性,它接受 rgba 值——因此包括透明度。如果将所有 4 个值都设置为 null,则会恢复透明圆角。
所以简单地改变
html2canvas(document.getElementById("badge"))
到
html2canvas(document.getElementById("badge"), {backgroundColor: "rgba(0,0,0,0)"})