« SVG avec JavaScript » : différence entre les versions

De EduTech Wiki
Aller à la navigation Aller à la recherche
Ligne 33 : Ligne 33 :


== Comprendre l'intégration entre SVG et JavaScript ==
== Comprendre l'intégration entre SVG et JavaScript ==
[[Fichier:DOM html exemple avec couleurs.png|400px|vignette|droite|Le [[Document Object Model]] (DOM) d'une page web.]]
[[Fichier:SVG-JS dom integration.png|400px|vignette|droite|Le [[Document Object Model]] (DOM) d'une page web avec un élément SVG.]]
L'intégration entre SVG et JavaScript se fait tout simplement à travers le [[Document Object Model]] (DOM) de la page. Pour rappelle, le DOM représente l'arborescence hiérarchique des éléments/balises qui composent le code source d'une page HTML.
L'intégration entre SVG et JavaScript se fait tout simplement à travers le [[Document Object Model]] (DOM) de la page. Pour rappelle, le DOM représente l'arborescence hiérarchique des éléments/balises qui composent le code source d'une page HTML.


En raison du fait que SVG utilise une structure de type XML, basée donc sur des éléments/balises emboîtes, un SVG dans un document HTML5 n'est rien d'autres qu'un noeud/element dans le DOM. L'élément SVG "principale" représente le noeud de contact avec le DOM de la page, et tout les éléments qui se trouvent à l'intérieur du code SVG sont des sous-noeuds ou sous-éléments.  
En raison du fait que SVG utilise une structure de type XML, basée donc sur des éléments/balises emboîtes, un SVG dans un document HTML5 n'est rien d'autres qu'un noeud/element dans le DOM. L'élément SVG "principale" représente le noeud de contact avec le DOM de la page, et tout les éléments qui se trouvent à l'intérieur du code SVG sont des sous-noeuds ou sous-éléments.  


De ce fait, on peut accéder à ces éléments selon le même principe qu'on utilise pour accéder à des éléments HTML avec JavaScript. Une fois que la page a été téléchargée par le navigateur et le ''parsing'' du DOM effectué, dans le <code>document</code> de la page on retrouve également les éléments SVG. Il faut cependant faire attention à la modalité d'intégration du SVG dans la page : '''on ne peut pas intégrer SVG et JavaScript si le SVG est incorporé en tant que image''' (i.e. à travers la balise <code><nowiki><img></nowiki></code>). Pour être plus précis, si on incorpore un SVG en tant que "simple" image, c'est comme si on perdait la différence entre une [[image vectorielle]] et une [[image matricielle]]. En effet, le SVG serait traité comme un ''bloc unique'', sans la possibilité de discriminer parmi les différences éléments/balises qui le composent.  
De ce fait, on peut accéder à ces éléments selon le même principe qu'on utilise pour accéder à des éléments HTML avec JavaScript. Une fois que la page a été téléchargée par le navigateur et le ''parsing'' du DOM effectué, dans le <code>document</code> de la page on retrouve également les éléments SVG.  
 
Il faut cependant faire attention à la modalité d'intégration du SVG dans la page : '''on ne peut pas intégrer SVG et JavaScript si le SVG est incorporé en tant que image''' (i.e. à travers la balise <code><nowiki><img></nowiki></code>). Pour être plus précis, si on incorpore un SVG en tant que "simple" image, c'est comme si on perdait la différence entre une [[image vectorielle]] et une [[image matricielle]]. En effet, le SVG serait traité comme un ''bloc unique'', sans la possibilité de discriminer parmi les différences éléments/balises qui le composent.  


{{ bloc important |  
{{ bloc important |  
L'intégration entre SVG et JavaScript se fait à travers le '''DOM''' de la page. Pour ce faire, il '''ne faut pas''' incorporer le SVG en tant que image.}}
L'intégration entre SVG et JavaScript se fait à travers le '''DOM''' de la page. Pour ce faire, il '''ne faut pas''' incorporer le SVG en tant que image.}}

Version du 15 mars 2018 à 10:11

Cet article est en construction: un auteur est en train de le modifier.

En principe, le ou les auteurs en question devraient bientôt présenter une meilleure version.


Introduction

SVG et JavaScript partagent une évolution assez similaire, car les deux technologies ont connu des hauts et des bas depuis leur créations, mais depuis quelques années elles ont été (ré)découvertes. La combinaison entre les deux représente donc un moyen pour améliorer les applications web interactives notamment en ce qui concerne :

  • Le design d'interfaces utilisateurs "graphiques" (e.g. dessin d'animaux, cartes géographiques, ...) ;
  • La création d'animations "stand-alone" ou qui s'intègrent avec le contenu d'une page web ;
  • La création de représentations graphiques dynamiques (e.g. visualisation de données) ;
  • L'adaptation des éléments graphiques à différents tailles et résolutions des écrans grâce à la nature vectorielle des SVG.

Cet article propose des éléments conceptuels et techniques qui aident l'intégration des deux technologies dans une version plus récente par rapport au Tutoriel SVG dynamique avec DOM.

Prérequis

Pour lire cet article, les connaissances suivantes sont nécessaires :

Il faut également une connaissance de bases des deux technologies, voir à ce propos surtout les pages :

Ces pages proposent également d'autres liens qui peuvent être utiles à la compréhension du contenu de l'article.

Exemples traités dans l'article

Les exemples proposées et analysées dans cet article sont disponibles dans un repository GitHub :

Comprendre l'intégration entre SVG et JavaScript

Le Document Object Model (DOM) d'une page web avec un élément SVG.

L'intégration entre SVG et JavaScript se fait tout simplement à travers le Document Object Model (DOM) de la page. Pour rappelle, le DOM représente l'arborescence hiérarchique des éléments/balises qui composent le code source d'une page HTML.

En raison du fait que SVG utilise une structure de type XML, basée donc sur des éléments/balises emboîtes, un SVG dans un document HTML5 n'est rien d'autres qu'un noeud/element dans le DOM. L'élément SVG "principale" représente le noeud de contact avec le DOM de la page, et tout les éléments qui se trouvent à l'intérieur du code SVG sont des sous-noeuds ou sous-éléments.

De ce fait, on peut accéder à ces éléments selon le même principe qu'on utilise pour accéder à des éléments HTML avec JavaScript. Une fois que la page a été téléchargée par le navigateur et le parsing du DOM effectué, dans le document de la page on retrouve également les éléments SVG.

Il faut cependant faire attention à la modalité d'intégration du SVG dans la page : on ne peut pas intégrer SVG et JavaScript si le SVG est incorporé en tant que image (i.e. à travers la balise <img>). Pour être plus précis, si on incorpore un SVG en tant que "simple" image, c'est comme si on perdait la différence entre une image vectorielle et une image matricielle. En effet, le SVG serait traité comme un bloc unique, sans la possibilité de discriminer parmi les différences éléments/balises qui le composent.

L'intégration entre SVG et JavaScript se fait à travers le DOM de la page. Pour ce faire, il ne faut pas incorporer le SVG en tant que image.