2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【ReactとTypeScript】leader-line-newを使って要素間を線でつなぐ

Posted at

はじめに

leader-line-newを使って要素間を線でつなぐとのメモ
線を引くライブラリをいくつか存在したが、
その中でも使いやすそうで見た目も良かったライブラリをReactで使って見たときのメモ

ライブラリの説明

leader-lineとleader-line-newで似たライブラリがあった
TypeScriptで使うときはleader-line-newを使うらしい
※ 詳しい説明は下記参照
https://www.npmjs.com/package/leader-line-new
https://anseki.github.io/leader-line/

いろんな種類の線が引ける。
色変えたり、グラデーション付けたり、動いているようにアニメーション付けたり、ホバー時に線を引いたり、矢印の形を変えたり
スクリーンショット 2021-11-17 17.23.53.png
スクリーンショット 2021-11-17 17.24.35.png
スクリーンショット 2021-11-17 17.24.59.png

線を引く

import React, { useEffect, useRef } from "react";
import LeaderLine from "leader-line-new";

・・・・
  const div1Ref = useRef<HTMLDivElement>(null);
  const div2Ref = useRef<HTMLDivElement>(null);

  useEffect(() => {
        new LeaderLine(
            div2Ref.current,
            div2Ref.current
        )
  }, [div1Ref, div2Ref]);

 return (
    <div ref={div1Ref}>
       div1
    </div>
    <div ref={div2Ref}>
       div2
    </div>
  );
};
・・・・

オプションめも

コメントのところは、検証した時の形跡

      new LeaderLine(
        LeaderLine.mouseHoverAnchor(div1Ref.current), // mouseHoverAnchor hoverで表示
        LeaderLine.pointAnchor(div2Ref.current, {
          x: 50,
          y: 30
        }), // pointAnchor 位置の変更
        {
          // color: "red",
          size: 6,
          dropShadow: true, // 影
          // outline: true,
          // endPlugOutline: true,
          // endPlugSize: 1,
          dash: {
            animation: {
              duration: 1000, // アニメーションの速さ(減らすごとに早くなる)
              timing: "ease-in-out" // アニメーションの動き方
            }
          },
          startPlugColor: "#1a6be0", // グラデーション時のスタートの色
          endPlugColor: "#1efdaa", // グラデーション時のエンド色
          gradient: true, // グラデーション
          path: "grid", // 曲線、角線など straight, arc, fluid, magnet, grid
          // startPlug: "square", // スタートの矢印などの表示
          endPlug: "arrow3" // エンドの矢印などの表示
          // startLabel: LeaderLine.captionLabel("START"), // スタートラベル
          // middleLabel: LeaderLine.captionLabel("MIDDLE"), // 中間ラベル
          // endLabel: LeaderLine.pathLabel("This is additional label") // エンドラベル
        }
      );

最後に

まだ編集中です。

2
2
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
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?