我正在开发一个UI将基于Web的应用程序。目标浏览器仅限Internet Explorer
我想知道,对于UI来说,使用Canvas并自己绘制所有元素而不是使用标准HTML元素会变得有益吗?
或者,如果你有什么不能用HTML元素做的话,你应该只使用画布吗?
理想情况下,我正在寻找讨论或答案的链接以及解释原因的一些示例。如果它只是你喜欢的,那么说,但是否有任何考虑?
感谢。
答案 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。
顺便说一句,我不希望浏览器本机控件永远在画布上绘制更快。您在现有实现上方添加了至少一层代码。