CSSでイメージマッピングを実装する方法

CSSでイメージマッピングを実装する方法

1. はじめに

イメージマップを使用すると、画像の領域をホットスポットとして指定できます。この領域にマウスを移動すると、いくつかのコンテンツ情報が表示されます。もちろん、この領域をクリックしてジャンプし、画像ナビゲーションと同様の機能を実装することもできます。

ここに画像の説明を挿入

私はインターネットで上記のような画像を見つけました。マウスを各人物の上に移動すると長方形のボックスが表示され、それをクリックすると対応する Web サイトにジャンプできるという機能を実現したいと考えています。

効果は以下のとおりです。

ここに画像の説明を挿入

2. コードの実装

1. 最初に行う必要があるのは、ページに画像を追加し、名前付き div に配置することです。

<div class="イメージマップ">
  <img 幅="500" 高さ="350" src="test.jpg">
</div>

2. 次に、画像の後に各人のウェブサイトリンクのリストを追加します。リスト項目内の人物を識別するために、各リスト項目にクラスを割り当てる必要があります。各リンクに人物の名前を含むtitle属性を付けることもできます。これにより、リンクにマウスを移動したときにほとんどのブラウザに表示されるツールチップにその人の名前が表示されます。

<div class="イメージマップ">
  <img 幅="500" 高さ="350" src="test.jpg">
  <ul>
    <li class="baidu">
      <a href="https://www.baidu.com" target="_blank">
        <span class="note">百度</span>
      </a>
    </li>
    <li class="tengxun">
      <a href="https://www.qq.com" target="_blank">
        <span class="note">テンセント</span>
      </a>
    </li>
    <li class="xinlang">
      <a href="https://www.sina.com.cn" target="_blank">
        <span class="note">シナ</span>
      </a>
    </li>
    <li class="taobao">
      <a href="https://www.taobao.com" target="_blank">
        <span class="note">タオバオ</span>
      </a>
    </li>
    <li class="jd">
      <a href="https://www.jd.com" target="_blank">
        <span class="note">京東</span>
      </a>
    </li>
  </ul>
</div>

マウスをホバーしたときに表示されるコンテンツのスタイルをカスタマイズしたいです。title属性は使用しないので、aタグにspanを追加します。

3. 外側の div の幅と高さを、画像のサイズと一致するように設定します。次に、div の位置プロパティを relative に設定します。これにより、含まれるリンクを div (つまり、画像) の端を基準にして絶対的に配置できるようになります。

リストの黒い点がページに表示されないようにし、リスト項目の内側と外側の余白も削除したいと思います。

.イメージマップ{
  幅: 500ピクセル;
  高さ: 350ピクセル;
  位置: 相対的;
}

.imagemap ul {
  マージン: 0;
  パディング: 0;
  リストスタイル: なし;
}

4. 次に、リンクにスタイルを適用します。リンクを絶対的に配置します (外側の div で position 属性を relative に設定しているため、ここでの配置は div に対して相対的であり、div と画像の幅と高さは同じで、画像の左上隅からの配置に相当します)。そして、対応する人物に配置してホットスポットを形成します。ただし、まず必要なクリック領域を作成するために、幅と高さを設定する必要があります。

.imagemap {
  位置: 絶対;
  /*領域を形成できるようにブロックレベル要素に変換します*/
  表示: ブロック;
  幅: 50px;
  高さ: 60px;
  テキスト装飾: なし;
}

.imagemap .baidu a {
  上: 70px;
  左: 65px;
}

.imagemap .tengxun a {
  上: 85px;
  左: 150px;
}

.imagemap .xinlang a {
  上: 70px;
  左: 230px;
}

.imagemap .taobao a {
  上: 70px;
  左: 305px;
}

.imagemap .jd a {
  上: 70px;
  左: 365ピクセル;
}

/*マウスを移動するとボックスが表示されます*/
.imagemap a:hover {
  境界線: 1px 白の実線;
}

5. 次に、マウスを移動したときに表示されるテキスト コンテンツのスタイルを設定する必要があります。文字の上に表示し、背景色とパディングを設定し、テキストを中央に配置するようにします。

.imagemap .note {
  位置: 絶対;
  上: -2em;
  左: -100em;
  背景色: #42b983;
  色: 白;
  幅: 2em;
  テキスト配置: 中央;
  パディング: 0.2em 0.5em;
  境界線の半径: 5px;
}

.imagemap a:hover .note {
  左: 0;
}

知らせ:

  • 位置プロパティが absolute に設定されている場合、要素は通常のドキュメント フローから移動され、要素の位置は、最も近い非静的配置の祖先要素に対する要素のオフセットを指定して決定されます。リスト内のリンク a タグを絶対的に配置したため、a タグ内の span はリンク a に対して相対的に配置されます。
  • ここで、top を負の値に設定すると、要素が一定の距離だけ上に移動し、left の値が -100em になるため、span は最初は表示領域内にありません。次に、マウスが通過したときに、左の値を正しい位置にリセットします。

また、通常であれば、インライン要素の幅と高さを設定するのは意味がありません。しかし、上記のコードでは、ここで span が絶対配置されているため、span の幅をうまく設定できます。絶対配置後のインライン要素の幅と高さを設定できます。

知識ポイント: インライン要素の幅と高さを設定するいくつかの方法

インライン要素の幅と高さを設定する3つの方法

  • ディスプレイ: display:block / inline-block を使用します
  • 位置を使用します: position:absolute / fixed
  • float を使用: float:left / right

6. いいえ、テストできます。これで、簡単なイメージ マッピングが実装されました。

CSS でイメージ マッピングを実装する方法についての記事はこれで終わりです。CSS でイメージ マッピングを実装する詳細については、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

<<:  Linux の GRUB ブート プログラムの暗号化の概要

>>:  HTMLページの読み込み速度を上げる方法

推薦する

HTML の基本概要推奨事項 (段落)

HTML段落段落は <p> タグによって定義されます。例<p>これは段落で...

JavaScript の重要なブレークポイント デバッグ手法の概要 (推奨)

目次デバッガーを使用する理由は何ですか? Chromeデバッガーの基本的な使い方VS Code によ...

display:olck/none を使用してメニューバーを作成する方法

display:bolck/none によるメニューバーの完成の効果 図 1:まず、完成したエフェク...

MySQL での大規模トランザクションによって発生する挿入の遅延ケースの分析

【質問】 INSERT 文は最も一般的な SQL 文の 1 つです。最近、MySQL サーバーが同時...

Nginx_geo モジュールを使用して CDN スケジュールを設定する方法

NginxのGeoモジュールの紹介geo ディレクティブは、ngx_http_geo_module ...

js 実行コンテキストとスコープの概要

目次序文文章1. JavaScriptコードの実行プロセスに関連する概念2. 実行コンテキストと実行...

Ubuntu 18.04 (コミュニティ エディション) に Docker CE をインストールする方法

古いバージョンをアンインストールする以前に古いバージョンをインストールしたことがある場合は、まずそれ...

MySQL のキーとインデックスの違い

まずはコードを見てみましょう: ALTER TABLE reportblockdetail ADD ...

Windows Server 2008 R2 で忘れたパスワードを処理する方法

Windows Server 2008R2を忘れた場合の対処方法サーバーの数が多すぎる、サーバーが多...

Dockerコンテナはルーティングを介して直接通信し、ネットワーク通信を実現します。

概要Docker 自体の現在のデフォルト ネットワークについては、単一ホスト上の異なる Docker...

Vue の foreach 配列と js の traversal 配列の書き方の説明

Vue foreach配列を記述し、jsで配列をトラバースする方法シナリオVueでAxiosを使用し...

Vue におけるキープアライブ マルチレベル ルーティング キャッシュの問題

目次1. 問題の説明2. 原因分析3. 解決策4. 処理1. 問題の説明調整センターでは、最後の 2...

MySQLの結合クエリ、ユニオンクエリ、サブクエリの原理と使用例の詳細な説明

この記事では、例を使用して、MySQL の結合クエリ、結合クエリ、サブクエリの原理と使用方法を説明し...

シームレスなカルーセルを実現するjQueryプラグイン

シームレス カルーセルは非常に一般的なエフェクトであり、ロジックを理解すれば非常に簡単です。効果は以...