draw svg line between elements in array
by John Doe
HTML
<div class="wrap">
<div class="cont">
<ul>
<li>ipsum</li>
<li>doloren</li>
<li>set</li>
<li id="c1">lorem</li>
<li id="c11">amet</li>
</ul>
<ul>
<li>ipsum</li>
<li id="c2">lorem</li>
<li>doloren</li>
<li id="c22">amet</li>
<li>set</li>
</ul>
<ul>
<li id="c3">lorem</li>
<li>ipsum</li>
<li>doloren</li>
<li>set</li>
<li id="c33">amet</li>
</ul>
<ul>
<li>ipsum</li>
<li id="c4">lorem</li>
<li>doloren</li>
<li>set</li>
<li id="c44">amet</li>
</ul>
<p>
<button class="btn">Összeköt</button>
</p>
</div>
<svg id="svg" class="svg">
<line class="sample"></line>
</svg>
</div>
CSS
*{
box-sizing: border-box;
}
p{
text-align: center;
}
html{
height: 100%;
}
body {
min-height: 100%;
margin: 0;
background: #20262e;
padding: 20px 0 0 50px;
position: relative;
}
.wrap{
z-index: 100;
}
ul{
display: inline-block;
margin: 30px 50px 0 0;
margin: 0px 50px 0 0;
padding: 0;
}
ul li {
display: block;
list-style-type: none;
text-align: center;
padding: 0 10px;
width: 100px;
margin-bottom: 20px;
height: 50px;
line-height: 50px;
background-color: #ffffff;
border: 2px solid #0000002b;
color: #000000;
font-weight: bold;
font-family: arial;
text-shadow: 1px 1px 2px #ffffffad;
border-radius: 5px;
font-size: 12px;
box-shadow: 1px 2px 4px 0px rgba(0, 0, 0, 0);
}
.cont{
position: relative;
z-index: 2;
}
.example{
margin-top: 30px;
position: relative;
}
.svg {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
JavaScript
function drawSvgLine(t,color){
var i = 0;
$(t).each(function(){
if( i < t.length - 1 ){
if($(t[i]).length && $(t[i+1]).length){
var e1= $(t[i]);
var e2= $(t[i+1]);
var x1 = $(e1).offset().left + $(e1).outerWidth();
var y1 = $(e1).offset().top + ($(e1).outerHeight()/2);
var x2 = $(e2).offset().left;
var y2 = $(e2).offset().top + ($(e1).outerHeight()/2);
$('#svg .sample').clone().removeClass('sample').attr('x1',x1).attr('y1',y1).attr('x2',x2).attr('y2',y2).attr('stroke',color).insertAfter($('#svg .sample'));
}
i++;
}
});
}
$('.btn').click(function(){
drawSvgLine(['#c1','#c2','#c3','#c4'],'#64b448');
drawSvgLine(['#c11','#c22','#c33','#c44'],'#b9f');
//drawSvgLine('.e1', '.e2');
})