2011-08-02 11 views
21

He estado buscando una biblioteca que pueda ayudar en la representación y funcionalidad de widgets UI incrustados en el área del lienzo, como cuadros combinados, casillas de verificación, botones de opción, áreas de texto, cuadros de lista con barras de desplazamiento, etc., sin superponer elementos HTML normales al colocarlos en la parte superior del área del lienzo. Flex proporciona todo esto para Flash y existen muchas bibliotecas Actionscript que crean componentes de widgets UI dentro del "lienzo" Flash (por así decirlo). Estas bibliotecas de widgets de UI han servido bien a la comunidad de Flash en ciertas situaciones y esto también es necesario en situaciones análogas dentro del lienzo de HTML5.HTML5 Canvas Library para UI Widgets

¿Alguien sabe dónde se pueden encontrar estas bibliotecas?

Respuesta

17

Zebra es bastante completo aunque el Textarea no es muy rica.

Es licenciado con la licencia LGPL.

El github porque es here.

+1

¡Absolutamente asombroso! – OCDev

+4

Tiene licencia como LGPL ahora – draganstankovic

+0

¡Y ahora está bajo licencia de Apache! – CrushedPixel

31

No he visto ninguna biblioteca de widgets con funciones fallidas, pero les garantizo que se realizarán algún día, aunque solo sea porque la gente las exigirá (por buenas o por malas).

La especificación de Canvas en sí misma recomienda no intentarlo. Como dice la especificación:

Los autores deben evitar implementar controles de edición de texto utilizando el elemento canvas. Hacerlo tiene una gran cantidad de desventajas:

  • La colocación del cursor en el mouse debe ser reimplantada.
  • El movimiento del teclado del cursor debe reimplementarse (posiblemente a través de líneas, para el ingreso de texto de líneas múltiples).
  • Se debe implementar el desplazamiento del campo de texto (horizontalmente para líneas largas, verticalmente para entrada de líneas múltiples).
  • Las funciones nativas, como copiar y pegar, tienen que volver a implementarse.
  • Las funciones nativas, como el corrector ortográfico, deben volver a implementarse.
  • Las funciones nativas, como arrastrar y soltar, tienen que volver a implementarse.
  • Las funciones nativas, como la búsqueda de texto en toda la página, tienen que volver a implementarse.
  • Las características nativas específicas del usuario, por ejemplo, los servicios de texto personalizado, tienen que volver a implementarse. Esto es casi imposible ya que cada usuario puede tener diferentes servicios instalados, y existe un conjunto ilimitado de dichos servicios.
  • La edición de texto bidireccional tiene que volver a implementarse.
  • Para la edición de texto multilínea, el ajuste de línea debe implementarse para todos los idiomas relevantes.
  • La selección de texto tiene que volver a implementarse.
  • El arrastre de selecciones de texto bidireccional tiene que volver a implementarse.
  • Los accesos directos de teclado nativos de la plataforma tienen que volver a implementarse.
  • Los editores de métodos de entrada (IME) nativos de la plataforma tienen que volver a implementarse.
  • La funcionalidad de deshacer y rehacer tiene que volver a implementarse.
  • Las funciones de accesibilidad como el aumento después de la referencia o la selección tienen que volver a implementarse.

La implementación de este tipo de cosas en lienzo es una pesadilla , especialmente hoy en día, donde el mismo tipo de letra se ve diferente, no sólo por el navegador, pero se ve diferente entre la representación de la lona de la fuente y el navegador haciendo que el tipo de letra.

+0

vi a alguien en ## Javascript en freenode mostrar una secuencia de comandos de lona, ​​que emula el aspecto de control de Windows interfaz de usuario. Funcionó, pero aparentemente fue solo un experimento. Personalmente, no puedo pensar en ninguna razón por la que tendrías que hacer eso en el lienzo, ya que puedes hacerlo un millón de veces más fácil en HTML + CSS ... –

+2

Muchas de esas cosas no necesitan ser reimplantadas. Y, para las cosas que sí necesitan ser reimplementadas ... bueno, ese es exactamente el punto detrás de preguntar sobre bibliotecas de terceros: ¿Qué hay por ahí que ya se ha vuelto a implementar? :) Una razón por la que esto debe hacerse en Canvas es con fines de diseño gráfico. Otra razón, tal vez el desarrollador quiere un sistema de partículas para interactuar con el cuadro de texto de alguna manera. Probablemente podría pensar en docenas de razones, pero superponer elementos HTML en la parte superior de un área de lienzo parece un feo truco para mí, como unir dos paradigmas diferentes. – OCDev

+3

Muchos desarrolladores ven volver a implementar esto en Canvas como lo que es el feo truco. Tienes razón, por supuesto, no todo se puede hacer superponiendo elementos HTML (que por lo general se ve feo de todos modos). Pero todos esperamos evitar el tipo de controles de página nauseabundos que ocurrieron durante la era de Flash (que las páginas web se han descartado casi por completo, afortunadamente!). Desearía tener una biblioteca para apuntar, pero el único equipo que tiene acérquense el equipo de Mozilla Bespin/Skywriter. En realidad terminaron abandonando completamente Canvas y fusionándose con Ace, que usa divs. –