Maison > interface Web > js tutoriel > le corps du texte

Comment utiliser SVG avec JS pour dessiner des images

不言
Libérer: 2018-07-17 17:40:20
original
6684 Les gens l'ont consulté

Cet article présente principalement comment utiliser SVG avec JS pour dessiner des images. Maintenant, je le partage avec tout le monde. Les amis dans le besoin peuvent s'y référer

Contexte :

Total Il y a 3 fichiers : fichier svg, fichier html, fichier js.

Il existe une image SVG, qui est introduite dans le fichier HTML à l'aide de la balise embed

Fichier SVG :

<svg width="640" height="400" xmlns="http://www.w3.org/2000/svg" id="svgColumn">

    <text x="200" y="20" font-size="20">SVG 华东地区手机12个月的数据 柱状图</text>
    <line x1="20" y1="380" x2="620" y2="380" stroke="black" stroke-width="1.5" />
    <line x1="20" y1="380" x2="20" y2="1" style="stroke: black; stroke-width: 1.5" />
    <path d="M600 360 L620 380 L600 400 Z" style="stroke: black; stroke-width: 1" />
    <path d="M1 20 L20 1 L40 20 Z" style="stroke: black; stroke-width: 1" />
</svg>
Copier après la connexion
Fichier HTML :

<p id="svg1">
    <embed src="./baidu34-36(svg-canvas)/column.svg" id="embed" width="640" height="400"
           type="image/svg+xml">
</p>
Copier après la connexion
Utilisez ensuite les fichiers js pour manipuler le svg et insérer des graphiques.

Le premier obstacle : obtenir le svg dom,

Si votre svg est écrit directement dans le fichier html, alors svg et HTML partagent un document, vous pouvez directement utiliser document.getElementById(svg id) peut être obtenu.

Cependant, dans des circonstances normales, il n'est pas recommandé de les mélanger. Par exemple, l'image de la colonne ici est un fichier svg séparé, puis inséré dans HTML à l'aide de l'intégration.

Remarque : les fichiers SVG insérés via embed et object ont leur propre document :

À ce moment, encore une fois Si vous le souhaitez get svg, vous devez utiliser :

getSVGDocument();

Utilisation : obtenez d'abord le nœud d'intégration, puis le document svg, puis le nœud svg :

function drawColumn(data) {    var nameSpace = &#39;http://www.w3.org/2000/svg&#39;;    var max = Math.max.apply(null, data);    var proportion = 350/max;    var interval = 35; //column间隔
    var columnStyle = &#39;stroke: blue; fill: orange&#39;;    var embedSVG = document.getElementById(&#39;embed&#39;).getSVGDocument().getElementById(&#39;svgColumn&#39;);//关键代码:embedSVG的赋值。最后的getElementById(&#39;svgColumn&#39;),是svg文件中,svg标签的id
    for (let singleColumn of data) {        var rect = document.createElementNS(nameSpace,&#39;rect&#39;);//creat新的svg节点,rect。
        rect.style = columnStyle; //给rect节点设置style
        height = singleColumn*proportion;
        rect.setAttribute(&#39;width&#39;, &#39;30&#39;); //使用setAttribute来设置rect节点属性
        rect.setAttribute(&#39;height&#39;, height);
        rect.setAttribute(&#39;x&#39;, interval);
        rect.setAttribute(&#39;y&#39;, 380-height);
        embedSVG.appendChild(rect); //将这个新的rect节点 添加到svg节点里
        interval += 45
    }
}
Copier après la connexion
Remarque :

De plus, contrairement aux objets élément HTML qui peuvent attribuer directement des valeurs à certains attributs, les objets élément SVG doivent définir les valeurs d'attribut en appelant la méthode

. setAttribute()

Utiliser rect.width = 30 ne fonctionne pas.

Recommandations associées :


Comment implémenter une liaison unidirectionnelle en js (avec code)

Comment utiliser JS Obtenez la latitude et la longitude locales

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!