Domanda

Perché abbiamo bisogno dell'elemento canvas html5, quando lo stesso può essere ottenuto tramite svg incorporato?

È stato utile?

Soluzione

SVG e canvas non sono tecnologie realmente intercambiabili. SVG è un tipo di grafica in modalità mantenuta in cui tutto è tratto da un modello piuttosto astratto (il documento SVG). D'altra parte, la tela è una sorta di grafica in modalità immediata, in cui non esiste un modello e il client (JavaScript) deve occuparsi di ridisegno, animazioni ecc.

Altri suggerimenti

SVG è un linguaggio di markup per la grafica vettoriale e ha DOM. Questo rende molto facile modificare il contenuto dopo la sua creazione.

Canvas è una superficie di pittura proprio come MS Paint senza un pulsante Annulla. Non è possibile modificare il contenuto. Puoi solo dipingerlo. È molto performante perché il browser non ha bisogno di gestire un DOM completo per l'immagine. E c'è la possibilità che la tela possa gestire il disegno 3D in futuro.

http://people.mozilla.com/~vladimir/xtech2006/ ha un bel confronto.

Con canvas non devi avere a che fare con il DOM, il che porta a scrivere codice in modo più semplice e veloce. Anche SVG è un casino come specifica ...

un'illustrazione: il mio motore di blog (blogger) non supporta SVG (non è un documento XHTML). Ho scritto uno strumento per convertire SVG nell'elemento canvas: http : //plindenbaum.blogspot.com/2009/11/tool-converting-svg-to-canvas_22.html

Ecco una spiegazione di come analizzare un semplice svg e disegnarlo su una tela ..

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

in altri post il parser svg verrà completato con trasparenze e sfumature

Perché non dobbiamo quindi preoccuparci di quale supporto sia possibile incorporare ;-)

In questo modo l'attenzione per gli sviluppatori di applicazioni è aderire agli standard e lasciare che i progettisti client facciano lo stesso. e quindi risparmiamo a tutti di preoccuparsi di plug-in, versioni, impostazioni di sicurezza, ecc ...

Questa non è davvero una risposta tecnica ma penso che sia la risposta corretta.

La linea di fondo è che non abbiamo bisogno di entrambi. Sì, so che ci sono differenze tra grafica vettoriale e grafica raster e modi diversi di controllare percorsi, oggetti, animazioni, ecc. Tra i due, ma per l'utente finale è tutto uguale. Sì, SVG è un po 'più potente in questo momento a causa della sua esistenza più lunga ma con un po' più di lavoro puoi fare le stesse cose con Canvas.

Credo che la realtà sia che Canvas sia parte di una schiacciante reazione contro XML stesso nello sviluppo web. Credo che la maggior parte degli sviluppatori web, in particolare quelli che lavorano con tempo e risorse limitati, al di fuori di "enterprise" ambienti, non piace la complessità di XML. Canvas fa parte di una serie di tecnologie preferite, proprio come HTML5 è preferito su XHTML, JSON è preferito su XML e persino YAML è preferito su XML.

Penso che l'idea sia simile alla filosofia * nix di avere molti strumenti specifici che fanno una cosa giusta ed efficiente piuttosto che un mega strumento che fa molte cose. (È anche simile alla filosofia sostenuta da molti ciclisti con cambio fisso che evitano la tecnologia del deragliatore incredibilmente precisa e avanzata per la semplicità di un cambio diretto.)

Non fraintendetemi, credo che XML sia una tecnologia incredibilmente potente e brillante pensata e sviluppata da persone brillanti per essere il massimo coltellino svizzero del web, della programmazione, della configurazione, della memorizzazione dei dati, ecc .; ma ciò non significa che sia più facile gestire e modellare una serie di percorsi complessi piuttosto che disegnare pixel su un.

So che la mia risposta è supponente e non intendo che questa sia una fiamma. Adoro SVG e vorrei che nel corso degli anni avrebbe ottenuto maggiore supporto (soprattutto da IE), ma sento che la marea si sta spostando verso Canvas semplicemente a causa della psicologia dei setter di standard e degli sviluppatori web che li influenzano.

A lungo termine mi piacerebbe vedere SVG rendere XML facoltativo e passare a una struttura più simile a JSON che è più semplice da manipolare con JavaScript, forse persino diventando un contesto Canvas basato su vettori. Secondo me sarebbe la migliore soluzione per il web.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top