1

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

我想知道,对于 UI,在什么时候使用 Canvas 并自己绘制所有元素而不是使用标准 HTML 元素会变得有益?

或者,如果您不能使用 HTML 元素做一些事情,您是否应该只使用画布?

理想情况下,我正在寻找讨论或答案的链接以及一些解释原因的示例。如果只是取决于你喜欢什么,那就说吧,否则有什么考虑吗?

谢谢。

4

2 回答 2

2

请阅读我对“创建基于画布的 UI 组件有意义吗?”的回答。.

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

Canvas 规范本身列出了为什么在画布中制作 UI 控件不好的原因。可访问性是一场噩梦。引用规范:

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

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

如果有一些你不能用 HTML 元素做的事情,你应该只使用画布吗?

是的,差不多。画布用于绘图 - 现在是 2D,将来是 3D。

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

于 2012-05-19T18:46:21.777 回答