Łączenie linii za pomocą svg było dla mnie warte strzału i zadziałało idealnie ... po pierwsze, Scalable Vector Graphics (SVG) to oparty na XML format obrazu wektorowego dla grafiki dwuwymiarowej z obsługą interaktywności i animacji. Obrazy SVG i ich zachowanie są zdefiniowane w plikach tekstowych XML. możesz stworzyć svg w HTML za pomocą <svg>
tagu. Adobe Illustrator to jedno z najlepszych programów służących do tworzenia złożonych plików SVG przy użyciu ścieżek.
Procedura łączenia dwóch elementów div za pomocą linii:
utwórz dwa elementy div i nadaj im dowolną pozycję, jaką potrzebujesz
<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>
(ze względu na wyjaśnienie robię pewne style w wierszu, ale zawsze dobrze jest utworzyć osobny plik css do stylizacji)
<svg><line id="line1"/></svg>
Znacznik linii pozwala nam narysować linię między dwoma określonymi punktami (x1, y1) i (x2, y2). (w celach informacyjnych odwiedź w3schools). Nie określiliśmy ich jeszcze. ponieważ będziemy używać jQuery do edycji atrybutów (x1, y1, x2, y2) znacznika linii.
w <script>
tagu pisać
line1 = $('#line1');
div1 = $('#div1');
div2 = $('#div2');
Użyłem selektorów do wybrania dwóch elementów div i linii ...
var pos1 = div1.position();
var pos2 = div2.position();
position()
Metoda jQuery pozwala na uzyskanie aktualnej pozycji elementu. Aby uzyskać więcej informacji, odwiedź https://api.jquery.com/position/ (możesz też użyć offset()
metody)
Teraz, gdy otrzymaliśmy wszystkie potrzebne pozycje, możemy narysować linię w następujący sposób ...
line1
.attr('x1', pos1.left)
.attr('y1', pos1.top)
.attr('x2', pos2.left)
.attr('y2', pos2.top);
.attr()
Metoda jQuery służy do zmiany atrybutów wybranego elementu.
Wszystko, co zrobiliśmy w powyższej linii, to zmieniliśmy atrybuty linii z
x1 = 0
y1 = 0
x2 = 0
y2 = 0
do
x1 = pos1.left
y1 = pos1.top
x2 = pos2.left
y2 = pos2.top
as position()
zwraca dwie wartości, jedną 'left', a drugą 'top', możemy łatwo uzyskać do nich dostęp używając .top i .left używając obiektów (tutaj pos1 i pos2) ...
Teraz znacznik linii ma dwie różne współrzędne, aby narysować linię między dwoma punktami.
Wskazówka: dodawaj detektory wydarzeń zgodnie z potrzebami do elementów div
Wskazówka: upewnij się, że najpierw zaimportujesz bibliotekę jQuery przed napisaniem czegokolwiek w tagu script
Po dodaniu współrzędnych przez JQuery ... Będzie to wyglądało mniej więcej tak
Poniższy fragment służy wyłącznie do celów demonstracyjnych. Wykonaj powyższe kroki, aby uzyskać prawidłowe rozwiązanie
<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>