LoginSignup
6
3

More than 3 years have passed since last update.

SVG要素の重なり順を動的に変える

Last updated at Posted at 2019-05-27

SVG要素にz-indexが使えないことで一瞬戸惑ってしまいますが、要素の並び順=重なり順であるので、要素を並び替えればいい。
ということでそれが実現できるSVG-Z-ORDERを利用します。

利用パッケージ

SVG-Z-ORDER
https://takamin.github.io/svg-z-order/
https://takamints.hatenablog.jp/entry/npm-svg-z-order-js

機能

  • SVGZElement.toTop() - 指定した要素の並び順を一番先頭に持ってくる(一番手前に表示される)
  • SVGZElement.toBottom() - 指定した要素の並び順を一番末尾へ変更する(一番後ろに表示される)
  • SVGZElement.moveUp(element/n) - 指定されたターゲット要素の前またはn回、要素を手前へ移動する
  • SVGZElement.moveDown(element/n) - 指定されたターゲット要素の後またはn回、要素を奥へ移動する
  • SVGZElement.moveTo(element/index) - Moves the element to the specified position.ターゲット要素を指定された場所へ移動する

コード例

require使う場合

var svgz = require("svg-z-order");
var g = svg.getElementById("foo");
svgz.element(g).toTop();

require使えない/使わない場合

読み込みます。

<script type="text/javascript" src="svg-z-order.js"></script>

D3.jsとあわせて利用し、マウスオーバーした要素の重なり順を一番手前にするには、たとえばこんな感じで。

.on("mouseover", function() {
    var d3g = d3.select(this);
    svgz_element(d3g.node()).toTop();          
})
6
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3