无法将边框半径应用于画布(html2canvas)

时间:2015-02-02 10:56:19

标签: javascript html css

html div看起来不错。

但是当我使用html2canvas时,图像显示错误。

enter image description here

enter image description here

背景

#ref{
    width: 360px;
    height: 360px;
    background: url(/assets/refer/bec.jpg) 0 0 no-repeat;
    background-size: cover;
    overflow: hidden;
    margin-top: 15px;
    margin-left: 70px;
    float: left;
}

我用它来进行四舍五入

.circular {
    background-size: cover;
    display: block;
    left: 0;
    top: 0;
    right: 0;
    bottom: 0;
    width: 150px;
    height: 150px;
    border-radius: 150px;
    margin: 70px auto;
    -webkit-border-radius: 150px;
    -moz-border-radius: 150px;
}

html2canvas

html2canvas(document.getElementById("qqq"), {
  onrendered: function(canvas) {
    document.body.appendChild(canvas);
  },
  width: 500,
  height: 500
});

我做错了什么? TY

4 个答案:

答案 0 :(得分:1)

画布拾取border-radius精细。也许您的内容没有覆盖边缘,因此您无法看到它。尝试确保您的内容填充画布并覆盖角落

答案 1 :(得分:1)

据我所知html2canvas边框半径应该是最大宽度或高度的一半。在你的情况下它应该是最大75.

.circular {
    background-size: cover;
    display: block;
    left: 0;
    top: 0;
    right: 0;
    bottom: 0;
    width: 150px;
    height: 150px;
    border-radius: 75px;
    margin: 70px auto;
    -webkit-border-radius: 150px;
    -moz-border-radius: 150px;
}

答案 2 :(得分:1)

在使用Html2Canvas导出pdf时,我遇到了椭圆形状的问题,因此我将边界半径设置为形状(宽度+高度)的一半,因此问题得以解决。.

答案 3 :(得分:0)

这是html2canvas(see here)上报告的错误,修复程序已合并到回购邮件中。

如果您使用的是发布版本0.4.1,请按以下步骤编辑function calculateCurvePoints

...
blh = borderRadius[3][0],
    blv = borderRadius[3][1];

      var halfHeight = Math.floor(height / 2);
      tlh = tlh > halfHeight ? halfHeight : tlh;
      tlv = tlv > halfHeight ? halfHeight : tlv;
      trh = trh > halfHeight ? halfHeight : trh;
      trv = trv > halfHeight ? halfHeight : trv;
      brh = brh > halfHeight ? halfHeight : brh;
      brv = brv > halfHeight ? halfHeight : brv;
      blh = blh > halfHeight ? halfHeight : blh;
      blv = blv > halfHeight ? halfHeight : blv;

    var topWidth = width - trh,
    rightHeight = height - brv,
...

感谢Grom-S报告并解决此问题。