在哪个时候使用画布变得更好?

时间:2012-05-19 18:44:03

标签: performance html5 canvas

我正在开发一个UI将基于Web的应用程序。目标浏览器仅限Internet Explorer

我想知道,对于UI来说,使用Canvas并自己绘制所有元素而不是使用标准HTML元素会变得有益吗?

或者,如果你有什么不能用HTML元素做的话,你应该只使用画布吗?

理想情况下,我正在寻找讨论或答案的链接以及解释原因的一些示例。如果它只是你喜欢的,那么说,但是否有任何考虑?

感谢。

2 个答案:

答案 0 :(得分:2)

请阅读我对"Does it make sense to create canvas-based UI components?"的回答。

简而言之,这是一个坏主意。

Canvas spec itself gives a laundry list of reasons why it is bad to make UI controls in canvas.辅助功能是一场噩梦。引用规范:

  

作者应避免使用canvas元素实现文本编辑控件。这样做有很多缺点:

     
      
  • 必须重新实现插入符号的鼠标放置。
  •   
  • 必须重新实现插入符号的键盘移动(可能跨行,用于多行文本输入)。
  •   
  • 必须实现文本字段的滚动(水平对于长行,垂直对于多行输入)。
  •   
  • 必须重新实现复制和粘贴等原生功能。
  •   
  • 必须重新实现拼写检查等原生功能。
  •   
  • 必须重新实现拖放等原生功能。
  •   
  • 必须重新实现页面范围文本搜索等原生功能。
  •   
  • 必须重新实现特定于用户的本机功能,例如自定义文本服务。这几乎是不可能的,因为每个用户可能安装了不同的服务,并且存在一组无限可能的此类服务。
  •   
  • 必须重新实现双向文本编辑。
  •   
  • 对于多行文字编辑,必须为所有相关语言实施换行。
  •   
  • 必须重新实现文本选择。
  •   
  • 必须重新实现拖动双向文本选择。
  •   
  • 必须重新实现平台原生键盘快捷键。
  •   
  • 必须重新实现平台本机输入法编辑器(IME)。
  •   
  • 必须重新实现撤消和重做功能。
  •   
  • 必须重新实现辅助功能,例如插入符号后的放大或选择。
  •   

答案 1 :(得分:0)

  

如果你有什么不能用HTML元素做的话,你应该只使用画布吗?

是的,差不多。 Canvas用于绘制 - 现在是2D,将来是3D。

顺便说一句,我不希望浏览器本机控件永远在画布上绘制更快。您在现有实现上方添加了至少一层代码。