2017-11-17 14 views
0

1つのDiv要素に1つのアイコンを表示しました。私はそれらのアイコンの間に接続線を描く必要があります。ディビジョンはダイナミックな要素であることに注意してください。2つの異なるdivに表示された2つのアイコンの間にラインコネクタを描画する方法。

下記の画像を表示しました。

下記の画像が表示されます。

enter image description here

それを行う方法を私を導いてください。前もって感謝します。

+0

https://jsplumbtoolkit.com/ – Manish

+0

これに似たようなものがあります[https://stackoverflow.com/questions/19382872/how-to-connect- html-divs-with-lines(https://stackoverflow.com/questions/19382872/how-to-connect-html-divs-with-lines) –

+0

「HTML Divs with Linesとの接続方法」(https ://stackoverflow.com/questions/19382872/how-to-connect-html-divs-with-lines) – bhansa

答えて

2

jsPlumbの使い方を知るのに役立つ小さなデモはこちらです。

jsPlumb.ready(function() { 
 
      jsPlumb.connect({ 
 
       source:"firstItem", 
 
       target:"secondItem", 
 
       endpoint:"Dot" 
 
      }); 
 
     });
span{ 
 
    display:inline-block; 
 
    height:50px; 
 
    width:100px; 
 
    background-color:yellow; 
 
}
 <script src="//cdnjs.cloudflare.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
 
    <script src="//cdnjs.cloudflare.com/ajax/libs/jqueryui/1.9.2/jquery-ui.min.js"></script> 
 
    <script src="//cdnjs.cloudflare.com/ajax/libs/jsPlumb/1.4.1/jquery.jsPlumb-1.4.1-all-min.js"></script> 
 
<div id="diagramContainer"> 
 
     <div > 
 
     <span id="firstItem">Smiley1</span> 
 
     </div> 
 
     <div > 
 
     <span style="float:right" id="secondItem">Smiley2</span> 
 
     </div> 
 
    </div>
はそれが役に立てば幸い:)

+0

複数の要素はどうですか? 2つ以上。 – bhansa

+0

@bhansa thatsも可能です。詳細は、ドキュメントを参照してください。あなたが助けを必要とするかどうか教えてください。 – Manish

2

コンセプトは「開始点」の内部の絶対位置でのdivを描くことで、2点間の角度でそれを回転させる:

// a,b = jquery results i.e. a=$('#smile1'), b=$('#smile2'), 
    function dist(a,b) { 
     let o1 = a.offset(), o2 = b.offset(); 
     return Math.sqrt(Math.pow(o1.top - o2.top,2) + Math.pow(o1.left - o2.left,2)); 
    } 
    function angle(a, b) { 
     let ao = a.offset(), bo = b.offset(); 
      dx = ao.left-bo.left, dy = ao.top-bo.top; 
     return Math.PI + Math.atan2(dy, dx); 
    } 
    function drawConnection(a,b) { 
     $('.line').remove(); 
     let d = dist(a,b); 
     a.removeClass('first'); 
     let ang = d<10 
      ? 0 
      : (angle(a,b) * 180)/ Math.PI; 
     a.append(
      $('<div>').addClass('line') 
       .css({ 
        width: Math.round(d) +'px', 
        transform: 'rotate(' + Math.round(ang) + 'deg)' 
       }) 
     ); 
     return ang; 
    } 

行のCSSは、次のとおりです。

.line { 
    position: absolute; 
    transform-origin: top left; // to make it rotate around top-left 
    border-top: solid 2px blue; // set any color 
    top: 10px; // center of your "smile" 
    left: 10px; 
} 

ここにはworking example

+0

あなたの努力を感謝します。これは非常に役に立ちます。しかし、私はそれらを接続する2つのアイコンを選択したくないです。私はそれらがページの負荷自体に接続されることを望みます。何か提案してください? – Karthik

+0

私が書いたように、ページロード時に2つのアイコンを選択するだけです。 jqueryを有効にしている場合、このコードをコピーして、下に追加することができます。drawConnection($( '$ id_of_icon1')、$( '$ id_of_icon2')); – 2oppin

+0

あなたには恥知らずです))https://jsfiddle.net/oppin/5vv2xbuo/ – 2oppin

関連する問題