Jak připojit linku k lince?
Vyskytl se problém, mám 2 bloky, které lze po stránce přesouvat pomocí Drag and Drop. Nemohu přijít na to, jak mezi nimi implementovat přímku, která bude překreslena v závislosti na poloze bloků. Co je pro to lepší použít svg nebo canvas? Jak to lze implementovat?
4,992 1 1 9 zlatý odznak 9 28 stříbrných odznaků 28 XNUMX bronzových odznaků
zeptal se 11. května 2020 v 22:09
89 1 1 stříbrný odznak 7 7 bronzových odznaků
„Mám 2 bloky, které lze po stránce přesouvat pomocí Drag and Drop“© – ale nemám, navrhujete, abych napsal, co už máte!? : / .
Komentář 12. května 2020 v 6:33
2 odpovědi 2
Řadit: Obnovit výchozí
const el1 = document.getElementById('el1') const el2 = document.getElementById('el2') const size = 50 const canvas = document.getElementById('canvas') const context = canvas.getContext('2d') let width = canvas.width = innerWidth let height = canvas.height = innerHeight /*------------------------------------*/ let current = null const elements = < el1: < x: Math.random() * (width - size), y: Math.random() * (height - size), startX: 0, startY: 0 >, el2: < x: Math.random() * (width - size), y: Math.random() * (height - size), startX: 0, startY: 0 >> // начальное положение translate(el1, elements.el1.x, elements.el1.y) translate(el2, elements.el2.x, elements.el2.y) drawLine( elements.el1.x, elements.el2.x, elements.el1.y, elements.el2.y ) /*------------------------------------*/ el1.addEventListener('mousedown', onMouseDown) el2.addEventListener('mousedown', onMouseDown) function onMouseDown(e) < e.preventDefault() // координаты нажатия мыши внутри элемента elements[e.target.id].startX = e.x - elements[e.target.id].x elements[e.target.id].startY = e.y - elements[e.target.id].y current = e.target document.body.addEventListener('mousemove', onMouseMove) document.body.addEventListener('mouseup', onMouseUp) >function onMouseMove(e) < const x = elements[current.id].x = e.x - elements[current.id].startX const y = elements[current.id].y = e.y - elements[current.id].startY translate(current, x, y) drawLine( elements.el1.x, elements.el2.x, elements.el1.y, elements.el2.y ) >function onMouseUp() < document.body.removeEventListener('mousemove', onMouseMove) document.body.removeEventListener('mouseup', onMouseUp) >/*------------------------------------*/ function translate(el, x, y) < el.style.transform = `translate($px, $px)` >function drawLine(x1, x2, y1, y2) < context.clearRect(0, 0, width, height) context.beginPath() // из центра квадрата context.moveTo(x1 + size / 2, y1 + size / 2) // в центр другого квадрата context.lineTo(x2 + size / 2, y2 + size / 2) context.stroke() > html, tělo < okraj: 0; >plátno < zobrazení: blok; >div < pozice: absolutní; šířka: 50px; výška: 50px; >div:nth-of-type(1) < background-color: tomato; >div:nth-of-type(2)
const canvas = document.getElementById('canvas') const context = canvas.getContext('2d') let width = canvas.width = innerWidth let height = canvas.height = innerHeight /*----------- --------------------------*/ const elements = <> const num = 7 const size = 50 nechť proud = null for (ať i = 0 i < num; i++) < // vytvoření prvku dom const element = document.createElement('div') element.addEventListener('mousedown', onMouseDown) const + i element.id = id document.body.prepend(element) // zde budou uloženy a změněny všechny jeho souřadnice elementy[ id ] = < x: Math.random() * (šířka - velikost), y: Math.random() * (výška - velikost), startX: 0, startY: 0 >// počáteční pozice translate(element, elements[id].x, elements[id].y) > // connect with lines connect(elements) /*--------------- - --------------------*/ function onMouseDown(e) < e.preventDefault() // souřadnice kliknutí myší uvnitř elementů [e.target.id] .startX = ex - elements[e.target.id].x elements[e.target.id].startY = ey - elementy[e.target.id].y current = e.target document.body.addEventListener('mousemove', onMouseMove) document.body.addEventListener('mouseup', onMouseUp) >funkce onMouseMove(e) < const x = prvky [current.id].x = ex - elements[current.id].startX const y = elements[current.id].y = ey - elementy[current.id].startY translate(current, x, y) connect(elements) >function onMouseUp() < document.body.removeEventListener('mousemove', onMouseMove) document.body.removeEventListener('mouseup', onMouseUp) >>*-----------------------------------*/ function translate(el, x, y) < el.style.transform = `translate($px, $px)` >function connect(elements) < context.clearRect(0, 0, width, height) for (nech i = 0; i < num - 1; i++) < drawLine( prvky['el' + i].x, prvky['el' + (i + 1)].x, prvky['el' + i].y, prvky['el' + (i + 1)].y ) >> funkce drawLine(x1, x2, y1, y2) < context.beginPath() // ze středu čtverce context.moveTo(x1 + velikost / 2, y1 + velikost / 2) // komu střed dalšího čtverce context.lineTo(x2 + velikost / 2, y2 + velikost / 2) context.stroke() >/*---------------------- - -------------*/ onresize = () => html, tělo < okraj: 0; >plátno < zobrazení: blok; >div
Můžete přidat nebo odebrat čáry a spojit tvary nebo zvýraznit data.
- Informace o kreslení tvarů najdete v tématu Kreslení a úprava tvaru pomocí křivek.
- Pokud máte potíže s odstraněním vodorovné čáry, přečtěte si část Odstranění čar níže.
Kreslení čáry se spojovacími body
spojovací vedení nazývaná čára, na jejíchž koncích jsou spojovací body sloužící k jejímu připojení k obrazcům. Existují přímé


spojovací a římsové linie

. Když vyberete spojovací čáru, na obrysu tvaru se objeví tečky. Ukazují, kam lze vlasec připevnit.
Je důležité, aby se: Ve Wordu a Outlooku lze spojovací body použít pouze tehdy, když jsou umístěny čáry a objekty, ke kterým jsou připojeny plátno. Chcete-li vložit plátno, na kartě vložit zmáčknout tlačítko Obrázky a klikněte Nové plátno ve spodní části nabídky.
Chcete-li přidat čáru, která se připojuje k jiným objektům, postupujte takto:

- V záložce vložit ve skupině prvků Ilustrace zmáčknout tlačítko Obrázky.

skupinu Linka vyberte konektor, který chcete přidat.
Poznámka: V sekci Struny Prvky zvýrazněné na obrázku výše jsou konektory. Poslední tři uvedené styly (křivka, volný tvar a klikyháky) ne jsou konektory. Před kliknutím myší na typ zobrazíte jeho název.

Chcete-li nakreslit čáru spojující tvary, najeďte myší na první tvar nebo objekt. Objeví se spojovací body označující, že čáru lze připojit k tvaru. (Barva a typ těchto bodů se liší v závislosti na verzi Office.)
Poznámka: Pokud se spojovací body nezobrazí, buď jste vybrali čáru, která není spojnicí, nebo nepracujete na plátně (Word nebo Outlook).
Klikněte na první tvar a přetáhněte ukazatel na spojovací bod na druhém objektu.
Poznámka: Když změníte polohu obrazců spojených spojnicemi, spojnice se neodpojí od obrazců a nepohybují se s nimi. Pokud posunete konec konektoru, uvolní se z tvaru a lze jej připojit k jinému spojovacímu bodu na stejném tvaru nebo k jinému tvaru. Pokud je spojka připojena ke spojovacímu bodu, zůstane připojena k tvaru bez ohledu na to, jak ji posunete.
Kreslení čáry bez spojovacích bodů
Chcete-li přidat čáru, která není připojena k jiným objektům, postupujte takto:

- V záložce vložit ve skupině prvků Ilustrace zmáčknout tlačítko Obrázky.

skupinu Linka, vyberte libovolný typ čáry.
Duplikace řádků
Pokud potřebujete do dokumentu přidat stejný řádek vícekrát, můžete to rychle udělat pomocí příkazu Zamknout režim kreslení.

- V záložce vložit ve skupině prvků Ilustrace zmáčknout tlačítko Obrázky.

V sekci Linka Klikněte pravým tlačítkem na čáru nebo tvar, který chcete přidat, a vyberte Zamknout režim kreslení.
Přidejte, upravte nebo odstraňte tvar šipky nebo čáry

- Vyberte řádek, který chcete změnit.
Chcete-li pracovat s více řádky, vyberte první řádek a poté stiskněte a podržte klávesu CTRL při výběru dalších řádků. - V záložce Formát klikněte na šipku Obrys obrázku.

Pokud karta Formát se nezobrazuje, ujistěte se, že je řádek vybrán. Chcete-li to provést, možná na něj budete muset dvakrát kliknout.
Umístěte ukazatel myši na položku šipky a klepněte na požadovaný typ šipky. Chcete-li změnit typ nebo velikost šipky a také typ, šířku a barvu čáry, klikněte Jiné šipky a nastavte potřebné parametry.
Odstraňování linek
- Klepněte na čáru, spojnici nebo obrazec, který chcete odstranit, a stiskněte klávesu DELETE.
Pokud chcete odstranit více řádků nebo spojnic, vyberte první řádek, stiskněte a podržte klávesu CTRL a poté stiskněte klávesu DELETE.
Pro více informací
- Vkládání nebo mazání vodorovných čar
- Nakreslete a upravte tvar pomocí křivek
- Změňte barvu, styl a tloušťku čáry
- Seskupování nebo oddělování tvarů, obrázků a dalších objektů
- Odebrat podtržení z textu hypertextového odkazu (PowerPoint)
- Zobrazení nebo skrytí mřížky ve Wordu, PowerPointu a Excelu
- Nakreslete dekorativní čáru ve Wordu nebo Outlooku