在这一点上,使用画布会变得更好



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

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

或者,如果有些事情不能

用HTML元素做,你才应该使用画布?

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

谢谢。

请阅读我对"创建基于画布的 UI 组件有意义吗?

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

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

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

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

对 HTML 元素执行某些操作时才应该使用画布?

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

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

最新更新