Performance 在哪一点上使用画布会更好?

Performance 在哪一点上使用画布会更好?,performance,html,canvas,Performance,Html,Canvas,我正在开发一个UI将基于web的应用程序。目标浏览器仅为Internet Explorer 我想知道,对于UI,在哪一点上使用画布和自己绘制所有元素而不是使用标准HTML元素会变得有益 或者,只有在HTML元素不能使用的情况下,才应该使用画布 理想情况下,我正在寻找一个链接到一个讨论或答案,以及一些解释原因的例子。如果只是你喜欢什么,那就说,但除此之外还有什么考虑吗 谢谢 是不是只有在HTML元素不能使用的情况下才应该使用画布 是的,差不多。画布用于绘图-现在是2D,将来是3D 顺便说一句,我不

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

我想知道,对于UI,在哪一点上使用画布和自己绘制所有元素而不是使用标准HTML元素会变得有益

或者,只有在HTML元素不能使用的情况下,才应该使用画布

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

谢谢

是不是只有在HTML元素不能使用的情况下才应该使用画布

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

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

请阅读我对的回答

简言之,这是个坏主意

可访问性是一场噩梦。引用规范:

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

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

假设GPU加速的画布可能比软件渲染的本机控件绘制得更快…@GGG-但是使小部件响应、看起来像本机控件等所需的工作量。。。还有一个隐含的假设,即本机控件不是通过GPU加速呈现的回答得好。也许值得指出的是,在极端情况下,它可能是有用的(例如bespin/skywriter/ace、google docs)。查看ace代码库可以很好地了解真正涉及到的内容……请记住,当mozilla与ace合并时,它放弃了对画布的所有使用,因为这太难了。Skywriter的代码非常好,如果你需要在画布上做基于文本的工作,那么绝对值得一看。嗯,我在Skywriter的时候查看了代码,并在一个项目中作为ace使用了它,但没有再查看代码。我只是假设它还在使用画布,谢谢你指出这一点。