Blog

ブログ

  1. HOME
  2. ブログ
  3. 【ページ内リンク】SVGでフロアマップ(フロアガイド)を簡単にリンクさせる

【ページ内リンク】SVGでフロアマップ(フロアガイド)を簡単にリンクさせる

2023.01.25(水) 03:22

こちらの記事は

  • CSS
  • JS
  • jQuery
  • svg

の知識がある方向けの記事です。

フロアマップ(フロアガイド)を簡単にページ内リンクさせたい

まずは下記をご覧下さい。

赤い部分を押すとここにスクロールしたと思います。

こちらの方法を開設します。

表示の流れ

ベクターデータ(SVGデータ)でフロアマップを作成する

aタグでリンクさせる

必要なJS(スクリプト)を流し込む

ベクターデータ(SVGデータ)でフロアマップを作成する

イラレでもなんでもいいのでフロアガイドのデータを作成してsvgデータで保存して下さい。

その時にsvgのバージョンがversion=”1.0″になっている方はversion=”1.1″に変更して下さい。

※理由はdesvgと併用させてリンク機能を使用する場合xlinkに対応させなければならないからです。

//修正前(例)
<?xml version="1.0" encoding="UTF-8"?>
<svg id="_レイヤー_2" data-name="レイヤー 2" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 96.39 57.53">
//修正後(例)
<svg version="1.1" id="_レイヤー_2" data-name="レイヤー 2" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 96.39 57.53">

aタグでリンクさせる

先程のSVGデータをテキストエディタで開いていただき、リンクさせたい箇所を<a xlink:href=”ページ内リンクさせたいコンテンツのID名”></a>タグで包んで下さい。

※リンクさせたい箇所の探し方はwebページにインラインSVG状態で表示させて開発ツール(デペロッパーツール)を開いて選択すると早いかもしれません。

必要なJS(スクリプト)を流し込む

最後にページ内リンクを作動させるjsを追記します。

※先頭に書いてあるjQueryのCDNがいらない方は省略可能です。

<script src="https://code.jquery.com/jquery-3.3.1.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/protonet-jquery.inview/1.1.2/jquery.inview.min.js"></script> 
jQuery(window.onload = function() {
jQuery("svg a").click(function() {
//スクロールのスピード
var speed = 500;
//リンク元を取得
var href = jQuery(this).attr("xlink:href");
//リンク先を取得
var target = jQuery(href == "#" || href == "" ? 'html' : href);
//リンク先までの距離を取得
var position = target.offset().top;
//スムーススクロール
jQuery("html, body").animate({
scrollTop: position
}, speed, "swing");
return false;

});
});

上記のスクリプトはこのページでも使用しているSVGをimgタグで設置した方法でも併用可能です。

後はページ内リンクさせたいコンテンツにID名を入れたら完成です。

//(例)
<h5><strong><span style="color: #ff0000;" id="ページ内リンクさせたいコンテンツにID名" class="pagescroll">赤い部分を押すとここにスクロールしたと思います。</span></strong></h5>

“【ページ内リンク】SVGでフロアマップ(フロアガイド)を簡単にリンクさせる” への2件のフィードバック

  1. kishidawataru より:

    こちらにコメントができます!

  2. さなわさな より:

    さなやさかや

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA