JS绘制一个从一个div指向另一个div的箭头

时间:2016-09-12 06:39:15

标签: javascript html css html5 svg

我有以下代码:

'.source.js':
  'CommonJS require':
    'prefix': 'req'
    'body': 'var ${1:module} = require(\'${1:module}\');'

我想使用svg从#air1中将箭头绘制到#glass中。我将以下代码添加到div中以绘制示例箭头:

<div id="parent">
  <div class="child" id="air1">Medium 1</div>
  <div class="child" id="glass">Medium 2</div>
  <div class="child" id="air2">Medium 1</div>
</div>

<style>
  #parent {
    background: #999;
    padding: 0px;
  }
  #glass {
    background: #666;
  }
  .child {
    background: #ccc;
    height: 200px;
    margin: 0px;
  }
</style>

我不希望箭头指向随机方向,我希望它指向#glass,如下所示:enter image description here

另外,我如何绘制这样一个不那么陡峭的箭头: enter image description here

我该怎么做?

1 个答案:

答案 0 :(得分:1)

您可以使用positioning(将svg插入第一部分并将其设置为position: absolute;)并调整路径元素的偏移量来实现。要使箭头指向下方,只需对路径描述属性的第二个值使用负值。

有关详细信息,请参阅w3schools about path

#parent {
  background: #999;
  padding: 0px;
}
#glass {
  background: #666;
}
.child {
  background: #ccc;
  height: 200px;
  margin: 0px;
  position: relative;
}
svg {
  position: absolute;
  left: 0;
}
<div id="parent">
  <div class="child" id="air1">Medium 1
    <svg width="400" height="200">
      <defs>
        <marker id="arrow" markerWidth="13" markerHeight="13" refx="2" refy="6" orient="auto">
          <path d="M2,2 L2,11 L10,6 L2,2" style="fill:red;" />
        </marker>
      </defs>
      <path d="M-600,-10 L300,195" style="stroke:red; stroke-width: 1.25px; fill: none; marker-end: url(#arrow);" />
    </svg>
  </div>
  <div class="child" id="glass">Medium 2</div>
  <div class="child" id="air2">Medium 1</div>
</div>