2009-10-30 14 views

Respuesta

35

SVG y canvas no son realmente tecnologías intercambiables. SVG es un tipo de gráficos de modo retenido en el que todo se extrae de un modelo bastante abstracto (el documento SVG). Canvas por otro lado es un tipo de gráficos de modo inmediato, donde no hay modelo y el cliente (JavaScript) debe encargarse de redibujar, animaciones, etc.

+7

Jennifer Yu dice que SVG es ideal para alta resolución y Canvas es para animación rápida. Se recomienda el uso de ambos, uno encima de otro en este video de mezcla 11: http://media.ch9.ms/ch9/FDB1/595AD4A8-9399-439C-840A-9EAF0092FDB1/MIX11HTM15_high_ch9.mp4 –

+0

Técnicamente tienes razón , no son intercambiables debido a la diferencia entre gráficos vectoriales y de trama. ¿Pero puede decirme una cosa que puedo mostrar al usuario final con una que no puedo mostrar con la otra? Creo que de hecho son completamente intercambiables en lo que respecta al usuario final. –

0

Porque entonces no es necesario preocuparse por lo que la incorporación de soporte, tal ;-)

De esta manera el foco para desarrolladores de aplicaciones es adherirse a las normas y dejar que los diseñadores de los clientes hagan lo mismo. y por lo tanto evite que todos se preocupen por complementos, versiones, configuraciones de seguridad, etc. ...

+0

si el navegador puede soportar el espacio de nombres svg, como lo hace gecko, tampoco debería preocuparse, con el hecho adicional de que en SVG realmente tiene un DOM para manipular. –

+1

Y si el navegador es compatible con HTML5, pero no con el espacio de nombres SVG, ¿como IE probablemente lo haga? – ceejayoz

+0

Simplemente use SVGWeb para IE, es realmente bastante fácil. http://code.google.com/p/svgweb/ –

6

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

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

+4

Aquí tienes un enlace podrido ... ¿hay un enlace alternativo? –

+0

@TimPost: No, pero alguien en mozilla podría tener. Esta presentación está vinculada desde https://developer.mozilla.org/en/XTech_2006_Presentations ... – Nickolay

17

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.

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

1

Aquí es una explicación de cómo analizar un SVG simple y dibujar 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-lona-y-SVG-II/

en posteriores mensajes del analizador SVG se completará con transparencias y gradientes

+0

Olvidé decir que las publicaciones están en español, pero puede obtener el código de ejemplo completo aquí: http: //www.ikeralbeniz. net/wp-content/uploads/2010/11/test.html – iker

0

Esto 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 existen diferencias entre los gráficos vectoriales y de trama y las diferentes formas de controlar las rutas, objetos, animaciones, etc. entre los dos, pero para el usuario final es todo 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 puedes hacer las mismas cosas con Canvas.

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

Creo que la idea es similar a la filosofía * nix de tener muchas herramientas específicas haciendo una cosa bien y de manera eficiente en lugar de una mega herramienta haciendo muchas cosas.(También es similar a la filosofía sostenida por muchos corredores de bicicletas de piñón fijo que evitan la tecnología de cambio muy precisa y avanzada para la simplicidad de un engranaje de transmisión directa.)

No me malinterpreten, creo que XML es increíblemente poderoso y una tecnología brillante, pensada y desarrollada por personas brillantes para ser la última navaja suiza de la web, programación, configuración, 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 a.

Sé que mi respuesta es obstinada y no pretendo que sea una llama. Me encanta SVG y me hubiera gustado obtener más soporte a lo largo de los años (especialmente de IE), pero siento que la marea se está volcando hacia Canvas simplemente debido a la psicología de los diseñadores de estándares y los desarrolladores web que los influencian.

Largo plazo Me gustaría ver que SVG haga que XML sea opcional y pasar a una estructura más similar a JSON que sea más fácil de manipular con JavaScript, quizás incluso convirtiéndose en un contexto de Canvas basado en vectores. Esa sería la mejor solución para la web en mi opinión.

Cuestiones relacionadas