css实现两点之间的连线

思路:在一个定位元素中找到两个点的坐标,新创建一个div,然后使用数学运算,算出长度,角度deg,把长度给这个div,使用css反转deg角度,通过两个点左边计算div中心点坐标,由此可得div坐标

 

drawLine = (startObj, endObj, index) => {
        // 起点元素中心坐标
        const startY = startObj.y;
        const startX = startObj.x;

        // 终点元素中心坐标
        const endY = endObj.y;
        const endX = endObj.x;

        // 用勾股定律计算出斜边长度及其夹角(即连线的旋转角度)
        const lx = endX - startX;
        const ly = endY - startY;
        // 计算连线长度
        const length = Math.sqrt(lx * lx + ly * ly);
        // 弧度值转换为角度值
        const c = 360 * Math.atan2(ly, lx) / (2 * Math.PI);

        // 连线中心坐标
        const midX = (endX + startX) / 2;
        const midY = (endY + startY) / 2
        const deg = c <= -90 ? (360 + c) : c; // 负角转换为正角

        return (
          <div
            className="line"
            style={{
 top: midY, left: midX - length / 2, width: length, transform: `rotate(${deg}deg)`, borderColor: colorList[index],
}}
          />
)
    }

  

posted @ 2021-03-24 23:18  二双  阅读(1427)  评论(0编辑  收藏  举报