我一直在寻找一个可以帮助嵌入在画布区域中的UI小部件的渲染和功能的库,例如组合框,复选框,单选按钮,文本区域,带滚动条的列表框等,通过将普通HTML元素浮动到画布区域的顶部来叠加它们。 Flex为Flash提供了所有这些,并且有许多Actionscript库可以在Flash“画布”中创建UI小部件组件(可以这么说)。这些UI小部件库在某些情况下很好地服务于Flash社区,在HTML5画布中的类似情况下也需要这样做。
有谁知道可以找到这些库的位置?
答案 0 :(得分:32)
我见过没有任何功能不足的ui小部件库,但我保证有一天它们会被制作,只要因为人们会要求它们(出于好的理由或坏的)。
HTML5 Canvas规范本身强烈建议不要尝试这样做。正如规范所说:
作者应避免使用canvas元素实现文本编辑控件。这样做有很多缺点:
- 必须重新实现插入符号的鼠标放置。
- 必须重新实现插入符号的键盘移动(可能跨行,用于多行文本输入)。
- 必须实现文本字段的滚动(水平对于长行,垂直对于多行输入)。
- 必须重新实现复制和粘贴等原生功能。
- 必须重新实现拼写检查等原生功能。
- 必须重新实现拖放等原生功能。
- 必须重新实现页面范围文本搜索等原生功能。
- 必须重新实现特定于用户的本机功能,例如自定义文本服务。这几乎是不可能的,因为每个用户可能安装了不同的服务,并且存在一组无限可能的此类服务。
- 必须重新实现双向文本编辑。
- 对于多行文字编辑,必须为所有相关语言实施换行。
- 必须重新实现文本选择。
- 必须重新实现拖动双向文本选择。
- 必须重新实现平台原生键盘快捷键。
- 必须重新实现平台本机输入法编辑器(IME)。
- 必须重新实现撤消和重做功能。
- 必须重新实现辅助功能,例如插入符号后的放大或选择。
在Canvas中实现这些东西是一个噩梦,特别是在今天,相同的字体不仅在每个浏览器中看起来不同,而且在渲染字体的Canvas和渲染字体的浏览器之间看起来不同。
答案 1 :(得分:17)