【问题标题】:HTML5 Canvas with rounded corner带圆角的 HTML5 画布
【发布时间】:2013-02-07 02:38:33
【问题描述】:

我想要一个带圆角的 HTML5 画布。我正在使用 CSS 属性 border-radius: 15px 来圆角。

但是,当我在画布的一角画东西时,我可以在角落里画。

开头:

我有什么:

我想要什么:

您有任何解决方案来避免这种情况吗?我想创建一个面具,但我真的不知道该怎么做.. 有关信息,这适用于 Firefox,但不适用于 Chrome/Safari/Opera。

这是一个小例子:

http://jsfiddle.net/XYHpJ/

谢谢!

【问题讨论】:

  • 你的意思是你可以在角落里画画吗?或者当你在角落里画画时,它不再像你想要的那样圆了?有没有机会举个例子?
  • 您的 Fiddle 在 Firefox 上完美运行。 What I want 部分实现了,而 What I have 部分没有发生。到底是什么?...

标签: javascript html css canvas rounded-corners


【解决方案1】:

只需在 stackoverflow 上使用此示例:https://stackoverflow.com/a/12336233/1312570

解决方案:http://jsfiddle.net/rzSmw/

#canvas_container
{
    background: #fff;
    border: 1px solid #aaa;
    border-radius: 15px;
    height: 515px;
    margin: 20px 20px;
    overflow: hidden;
    width: 690px;

    /* this fixes the overflow:hidden in Chrome/Opera */
    -webkit-mask-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC);
}

【讨论】:

  • 这个肯定是把边角隐藏了,但是fiddle里画的线还是存在于圆角外面,就是看不到。
  • 绝妙的答案!我将一个 div 浮动在一个画布元素上,并且我一生都无法弄清楚为什么我的 border-radius 不能与 overflow:hidden 一起使用,直到我隐藏了画布并且它起作用了。任何解释为什么这有效?我最初认为图像是一个固定半径,但它似乎适用于我的任何边界半径值。
  • 我很确定这是由于 webkit 中的错误。我可以看到初始代码现在可以在 Windows 上的最新 Chrome 中运行。但基本上解决方法是,通过添加一个透明的 1x1 png 作为蒙版,它会使其按预期工作。
【解决方案2】:

避免这种情况的最佳方法是将<canvas> 插入“容器”标签内,然后将border-radius 应用于容器。像这样:

<div id="container">
    <canvas></canvas>
</div>

使用这个 CSS:

#container {
    border-radius: 10px;
    background-color: white;
    border: 1px solid #000;
    overflow: hidden;
}

#container > div {
    height: 200px;
    background-color: red;
}

一个工作示例:http://jsbin.com/onuqid/2/

您还可以使用 display: block; 并按照 cmets 中建议的 Allendar 摆脱包装器。

【讨论】:

  • 尝试添加-moz-border-radius: 10px;-webkit-border-radius: 10px;。对于 IE,请使用此元标记:&lt;meta http-equiv="X-UA-Compatible" content="IE=9" /&gt;
  • @tilix 检查我的编辑。抱歉,我忘记添加overflow: hidden
  • @NathanCampos 您只需将画布对象更改为display: block;,它就可以正常工作,本身不需要包装器:)
  • 你的例子是一个div里面的一个div。我正在使用画布。请在此处查看我的示例:jsfiddle.net/XYHpJ 并尝试在角落里画画。
猜你喜欢
  • 2017-12-04
  • 2018-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-25
  • 2011-08-29
相关资源
最近更新 更多