vvvw/index.html
2020-10-06 13:08:17 +02:00

84 lines
1.8 KiB
HTML

<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title></title>
<style media="screen">
svg{ width:100%; height:100%; }
path{
fill: transparent;
stroke: #000;
stroke-dasharray:6px;
}
div{
position:absolute;
top:20px;
left:0;
right:0;
margin:auto;
height:500px;
width:700px;
}
p{ position:absolute; padding:30px; top:200px; width:0; height:0; border-radius:50%; }
.c1{ padding:20px; top:220px; left:10%; background:red; }
.c2{ left:50%; background:blue; }
.c3{ left:30%; background: yellow;}
</style>
</head>
<body>
<div>
<svg>
<path class='p1'></path>
<path class='p2'></path>
</svg>
<p class='c1'>bha</b>
<p class='c2'>etc</b>
<p class='c3'>hello</p>
</div>
<script
src="https://code.jquery.com/jquery-3.5.1.slim.min.js"
integrity="sha256-4+XzXVhsDmqanXGHaHvgh1gMQKX40OUvDEBTu8JcmNs="
crossorigin="anonymous"></script>
<script type="text/javascript">
var path1 = document.querySelector(".p1"),
path2 = document.querySelector(".p2");
var c1 = document.querySelector(".c1"),
c1Pos = getPointPos(c1),
c2 = document.querySelector(".c2"),
c2Pos = getPointPos(c2),
c3 = document.querySelector(".c3"),
c3Pos = getPointPos(c3);
function getPointPos(point){
var pos = $(point).position();
pos.left += point.clientWidth/2;
return pos;
}
path1.setAttribute('d', createLine([c1Pos.left, c1Pos.top], [c2Pos.left, c2Pos.top]));
path2.setAttribute('d', createLine([c3Pos.left, c3Pos.top], [c2Pos.left, c2Pos.top]));
function createLine(source, target){
var dx = target[0] - source[0],
dy = target[1] - source[1],
dr = Math.sqrt(dx * dx + dy * dy)/1.5;
return "M" +
source[0] + "," +
source[1] + "A" +
dr + "," + dr + " 0 0,1 " +
target[0] + "," +
target[1];
}
</script>
</body>
</html>