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