当前位置: 首页 > 知识库问答 >
问题:

在2个div之间连接一条线

谷梁嘉悦
2023-03-14

我试图用divs和每两个div之间的连接线来进行类似网络的设计,但是当我用下面的JS函数使用svgline标记时,控制台显示了一个错误

```
  $(function() {
var orgs = document.getElementsByClassName('org'),
    lines = document.getElementsByClassName('con-line'),
    org1,
    org2,
    line,
    pos1,
    pos2,
    count = 0;

for (let i = 0; i < orgs.length; i++) {
    
    org1 = orgs[i];

    for (let j = 0; j < orgs.length; j++) {

        org2 = orgs[j];
        line = lines[count];


        if (j != i)
        {
            pos1 = org1.position();
            pos2 = org2.position();

            line
                .attr('x1', pos1.left)
                .attr('y1', pos1.top)
                .attr('x2', pos2.left)
                .attr('y2', pos2.top)
                .attr('stroke', 'red')
                .attr('stroke-width', 2);

                count++;
        }
      }

  }    
  });
```

共有1个答案

晋鹤轩
2023-03-14

>

  • 尝试将代码包装成“文档就绪”结构。这将确保在加载jQuery之后执行代码。

    定义strokestroke-width属性以使线条可见。

    $(function() {
      var line1= $('#line1');
      var div1 = $('#org1');
      var div2 = $('#org2');
    
      var l1pos1 = div1.position();
      var l1pos2 = div2.position();
    
      line1
        .attr('x1', l1pos1.left)
        .attr('y1', l1pos1.top)
        .attr('x2', l1pos2.left)
        .attr('y2', l1pos2.top)
        .attr('stroke', 'red')
        .attr('stroke-width', 10);
    });
    .con{
        margin-top: 50px;
    }
    
    .con-title{
        width: 100%;
        text-align: center;
        color: #4E4E50;
        font-size: 40px;
        font-weight: bold;
    }
    
    .org-map{
        position: relative;
        width: 300px;
        height: 300px;
        margin: 40px auto 0 auto;
    }
    
    .org{
        position: absolute;
    }
    
    .org .org-box{
        position: relative;
        bottom: 0px;
        width: 15px;
        height: 15px;
        border-radius: 20px;
        background: #4E4E50;
        transition: 0.6s;
    }
    
    #org1{
        transform: translate(-50%, 0%);
        bottom: 80%;
        left: 50%;
    }
    
    #org2{
        transform: translate(-50%, 0%);
        bottom: 65%;
        left: 20%;
    }
    
    #org3{
        transform: translate(-50%, 0%);
        bottom: 35%;
        left: 20%;
    }
    
    #org4{
        transform: translate(-50%, 0%);
        bottom: 50%;
        left: 50%;
    }
    
    #org5{
        transform: translate(-50%, 0%);
        bottom: 65%;
        left: 80%;
    }
    
    #org6{
        transform: translate(-50%, 0%);
        bottom: 35%;
        left: 80%;
    }
    
    #org7{
        transform: translate(-50%, 0%);
        bottom: 20%;
        left: 50%;
    }
    
    .org:hover .org-box{
        background: #C3073F;
        animation: org 1s;
        animation-fill-mode: forwards;
    }
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    
    <div class="con">
      <div class="con-title">Contributions</div>
      <div class="org-map">
        <div class="org" id="org1">
            <div class="org-box">
                <img src="" alt="">
            </div>
        </div>
        <div class="org" id="org2">
            <div class="org-box">
                <img src="" alt="">
            </div>
        </div>
        <div class="org" id="org3">
            <div class="org-box">
                <img src="" alt="">
            </div>
        </div>
        <div class="org" id="org4">
            <div class="org-box">
                <img src="" alt="">
            </div>
        </div>
        <div class="org" id="org5">
            <div class="org-box">
                <img src="" alt="">
            </div>
        </div>
        <div class="org" id="org6">
            <div class="org-box">
                <img src="" alt="">
            </div>
        </div>
        <div class="org" id="org7">
            <div class="org-box">
                <img src="" alt="">
            </div>
        </div>
        <svg width="500" height="500">
            <line id="line1"/>
            <line id="line2"/>
        </svg>
      </div>
    </div>

  •  类似资料:
    • 问题内容: 我如何(或可以使用哪些工具)在两个或多个元素之间画线以连接它们?HTML / CSS / JavaScript / SVG / Canvas的任何组合都可以。 如果您的答案支持以下任何一项,请提及: 可拖动元素 可拖动/可编辑的连接 避免元素重叠 该问题已更新,以巩固其众多变体。 问题答案: 是一个支持拖放的可用选项,从其众多演示包括Flowchart演示可以看出。 它提供免费的社区版

    • 问题内容: 我目前正在尝试在一个div的右下角到另一个div的右上角之间绘制一条对角线。如果可能的话,我想不用jQuery。这可能吗? 问题答案: 由于CSS限制,这不适用于IE8或更低版本。 距离公式 寻找两点的中心 寻找两点之间的角度 CSS转换:旋转 HTML元素的offset [Width | Height | Top | Left]属性 编辑(对于其他有相同问题的用户) : 例如,如果需

    • Flink社区! 我有一个关于在Flink中连接相同键上的多个流的问题(等连接)。我还是一个新手,正在为我的团队评估Flink,将我们的Spark批处理应用程序迁移到流处理。 注意:我看了FabianHüske的这篇关于加入处理的文章:窥视Apache Flink的引擎室。 为了简化问题,假设您有3个流,每个流都有唯一的记录,可以通过id字段进行键控。对于流中的每条记录,您将在其他流中找到相应的记

    • 在这段代码中,我试图将一个导航栏(content1)覆盖在另一个导航栏(content)之上,但似乎什么都不起作用。我做错了什么?即使我可以使其覆盖,它们也不是以容器为中心放置的。 null null 只是想知道如何将我的导航条覆盖在另一个导航条之上并使其在容器中居中,

    • 在div中有一个和可点击的图像,称为(不幸的是,我不知道在哪里添加相关的图像。抱歉)我想像我做的那样将它们分开。我想知道有没有更简单、更好的解决方案来缩短CSS代码。谢谢。 null null

    • 我有一个网站,它包括index.html和style.css和images文件夹。并且,我想在我的网站的主页面上创建一个按钮“切换到另一个主题”(所以index.html),它将在两个CSS之间切换。你能告诉我吗: > 是否需要有两个css,如-style1.css和style2.css? 我是否需要有2个索引页 a)link href=“css/style1.css”rel=“styleshee