Joindre des lignes avec des svgs valait la peine d'essayer pour moi, et cela a parfaitement fonctionné... tout d'abord, Scalable Vector Graphics (SVG) est un format d'image vectorielle basé sur XML pour les graphiques bidimensionnels avec un support pour l'interactivité et l'animation. Les images SVG et leurs comportements sont définis dans des fichiers texte XML. Vous pouvez créer un svg en HTML à l'aide des éléments suivants <svg>
étiquette. Adobe Illustrator est l'un des meilleurs logiciels utilisés pour créer des svgs complexes à l'aide de chemins.
Procédure pour joindre deux divs en utilisant une ligne :
-
créez deux divs et donnez-leur la position que vous souhaitez
<div id="div1" style="width: 100px; height: 100px; top:0; left:0; background:#e53935 ; position:absolute;"></div>
<div id="div2" style="width: 100px; height: 100px; top:0; left:300px; background:#4527a0 ; position:absolute;"></div>
(pour des raisons d'explication, je fais un peu de style en ligne, mais il est toujours bon de créer un fichier css séparé pour le style).
-
<svg><line id="line1"/></svg>
La balise Line nous permet de tracer une ligne entre deux points spécifiés (x1,y1) et (x2,y2). (pour une référence visitez w3schools.) nous ne les avons pas encore spécifiés. parce que nous allons utiliser jQuery pour éditer les attributs (x1,y1,x2,y2) de la balise line.
-
sur <script>
tag écrire
line1 = $('#line1');
div1 = $('#div1');
div2 = $('#div2');
J'ai utilisé des sélecteurs pour sélectionner les deux divs et la ligne...
var pos1 = div1.position();
var pos2 = div2.position();
jQuery position()
nous permet d'obtenir la position actuelle d'un élément. Pour plus d'informations, consultez https://api.jquery.com/position/ (vous pouvez utiliser offset()
également)
Maintenant que nous avons obtenu toutes les positions dont nous avons besoin, nous pouvons dessiner la ligne comme suit...
line1
.attr('x1', pos1.left)
.attr('y1', pos1.top)
.attr('x2', pos2.left)
.attr('y2', pos2.top);
jQuery .attr()
est utilisée pour modifier les attributs de l'élément sélectionné.
Tout ce que nous avons fait dans la ligne ci-dessus est de changer les attributs de la ligne de
x1 = 0
y1 = 0
x2 = 0
y2 = 0
a
x1 = pos1.left
y1 = pos1.top
x2 = pos2.left
y2 = pos2.top
comme position()
retourne deux valeurs, l'une 'gauche' et l'autre 'haut', nous pouvons facilement y accéder en utilisant .top et .left en utilisant les objets (ici pos1 et pos2) ...
Maintenant, la balise de ligne a deux coordonnées distinctes pour tracer une ligne entre deux points.
Conseil : ajoutez des écouteurs d'événements aux divs selon vos besoins.
Conseil : assurez-vous d'importer la bibliothèque jQuery avant d'écrire quoi que ce soit dans la balise script.
Après ajouter des coordonnées par le biais de JQuery ... Cela ressemblera à quelque chose comme ceci
L'extrait suivant n'est fourni qu'à des fins de démonstration. Veuillez suivre les étapes ci-dessus pour obtenir une solution correcte.
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="div1" style="width: 100px; height: 100px; top:0; left:0; background:#e53935 ; position:absolute;"></div>
<div id="div2" style="width: 100px; height: 100px; top:0; left:300px; background:#4527a0 ; position:absolute;"></div>
<svg width="500" height="500"><line x1="50" y1="50" x2="350" y2="50" stroke="red"/></svg>