Pregunta

¿Por qué necesitamos el elemento de lienzo html5, cuando se puede lograr lo mismo mediante svg incrustado?

¿Fue útil?

Solución

SVG y el lienzo no son realmente tecnologías intercambiables. SVG es un tipo de gráficos de modo retenido donde todo se extrae de un modelo bastante abstracto (el documento SVG). El lienzo, por otro lado, es una especie de gráficos de modo inmediato, donde no hay modelo y el cliente (JavaScript) debe encargarse de volver a dibujar, animaciones, etc.

Otros consejos

SVG es un lenguaje de marcado para gráficos vectoriales y tiene DOM. Esto hace que sea muy fácil alterar el contenido después de su creación.

Canvas es una superficie de pintura como MS Paint sin un botón de deshacer. No puedes alterar el contenido. Solo puedes pintar de más. Es muy eficiente porque el navegador no necesita manejar un DOM completo para la imagen. Y existe la posibilidad de que el lienzo pueda manejar dibujos en 3D en el futuro.

http://people.mozilla.com/~vladimir/xtech2006/ tiene buena comparación.

Con el lienzo no tiene que lidiar con el DOM, lo que lleva a un código más rápido y fácil de escribir. SVG también es un desastre como especificación ...

una ilustración: el motor de mi blog (blogger) no admite SVG (no es un documento XHTML). Escribí una herramienta para convertir SVG al elemento de lienzo: http : //plindenbaum.blogspot.com/2009/11/tool-converting-svg-to-canvas_22.html

Aquí hay una explicación de cómo analizar un svg simple y dibujarlo en un lienzo ..

http: // www .ikeralbeniz.net / 2010/11/03 / jugando-con-html5-canvas-y-svg-i / http://www.ikeralbeniz.net/2010/11/04/jugando-con-html5-canvas-y-svg-ii/

en publicaciones posteriores, el analizador de svg se completará con transparencias y degradados

Porque entonces no tenemos que preocuparnos sobre qué soporte para tal incrustación ;-)

De esta manera, el enfoque para los desarrolladores de aplicaciones es cumplir con los estándares y dejar que los diseñadores del cliente hagan lo mismo. y, por lo tanto, evite que todos se preocupen por los complementos, versiones, configuraciones de seguridad, etc.

Esta no es realmente una respuesta técnica, pero creo que es la respuesta correcta.

La conclusión es que no necesitamos ambos. Sí, sé que hay diferencias entre los gráficos vectoriales y de trama y las diferentes formas de controlar rutas, objetos, animaciones, etc. entre los dos, pero para el usuario final es lo mismo. Sí, SVG es un poco más poderoso en este momento debido a su existencia más larga, pero con un poco más de trabajo puede hacer lo mismo con Canvas.

Creo que la realidad es que Canvas es parte de una reacción abrumadora contra el propio XML en el desarrollo web. Creo que la mayoría de los desarrolladores web, especialmente aquellos que trabajan con tiempo y recursos limitados, fuera de la "empresa". entornos, no les gusta la complejidad de XML. Canvas es parte de un conjunto de tecnologías preferidas de solo hacer una cosa, al igual que HTML5 se prefiere a XHTML, JSON se prefiere a XML e incluso YAML se prefiere a XML.

Creo que la idea es similar a la filosofía * nix de tener muchas herramientas específicas haciendo una cosa correcta y eficientemente en lugar de una megaherramienta haciendo muchas cosas. (También es similar a la filosofía de muchos ciclistas de engranajes fijos que evitan la tecnología de cambio increíblemente precisa y avanzada por la simplicidad de un engranaje de transmisión directa).

No me malinterpreten, creo que XML es una tecnología increíblemente poderosa y brillante pensada y desarrollada por personas brillantes para ser la navaja suiza definitiva de la web, la programación, la configuración, el almacenamiento de datos, etc. pero eso no significa que sea más fácil administrar y diseñar una serie de rutas complejas que dibujar píxeles en una.

Sé que mi respuesta es obstinada y no pretendo que esto sea una llama. Me encanta SVG y desearía que hubiera recibido más apoyo a lo largo de los años (especialmente de IE), pero siento que la marea se está volviendo hacia Canvas simplemente debido a la psicología de los creadores de estándares y los desarrolladores web que los influencian.

A largo plazo, me gustaría ver que SVG haga que XML sea opcional y se mueva a una estructura más similar a JSON que sea más fácil de manipular con JavaScript, tal vez incluso se convierta en un contexto Canvas basado en vectores. Esa sería la mejor solución para la web en mi opinión.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top