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ページの読み込み速度を上げる方法

推薦する

MySQL 20 の高性能アーキテクチャ設計原則 (収集する価値あり)

オープンソース データベース アーキテクチャの設計原則01. 技術の選択最も使い慣れていて、最大限に...

JS配列重複排除の詳細

目次1 テストケース2 JS配列重複排除4種類2.1 要素の比較2.1.1 二重層 for ループ比...

CSSを使用してすべての子要素を選択する方法の詳細な説明

CSS を使用してすべての子要素を再帰的に選択するにはどうすればよいですか?以下の記事では、CSS ...

Linux で見つけるためのフレンドリーな代替手段 (fd コマンド)

fd コマンドは、Linux ファイル システムを検索するためのシンプルで簡単な方法を提供します。...

JS ES の新機能、変数分離割り当て

目次1. 配列の分離割り当て1.1 配列分離割り当てとは何ですか? 1.2 配列分離割り当てに失敗し...

Vue の高度な構築プロパティの詳細な説明

目次1. ディレクティブカスタムディレクティブ2. ミックスイン3. 継承を拡張する4. 提供して注...

JavaScript で虫眼鏡の特殊効果を実現

達成される効果:マウスを小さな画像の上に置くと、小さなブロックが小さな画像の上に表示され、この小さな...

HTML で Web ページに動的な時計を書く

HTML を使用して動的な Web クロックを作成します。コードは次のとおりです。 <!DOC...

WeChatアプレット実装アンカー位置決め機能の例

序文小規模なプログラムの開発では、リストをスクロールして表示する必要性に遭遇することがよくあります。...

Docker を使用して Redis マスター スレーブ レプリケーション クラスターを構築する

マスタースレーブレプリケーションモードのクラスターでは、通常、1 つのマスターノードと 2 つ以上の...

HTML テキストエスケープのヒント

今日、CSDN で HTML テキスト エスケープのちょっとしたトリックを見ましたが、とても簡単です...

Dockerを使用してシンプルなJava開発およびコンパイル環境を構築する方法の詳細な説明

Java 言語には多くのバージョンがあります。一般的に使用されている Java 8 に加えて、一部の...

HTML で色を表すには、6 桁の 16 進コード、RGB、またはキーワードを使用します。

HTML で色を表す方法は 3 つありますが、最もよく使われるのは 6 桁の 16 進コード表現です...

Linux で履歴コマンドを表示および実行する方法

履歴コマンドを表示し、指定されたコマンドを実行します owen@owen:~/owen/softwa...

Linux で MongoDB のリモート自動バックアップを実装する方法

序文古いプロジェクトを引き継ぐ苦労 - MongoDB クラスターの学習と構築に関する前回の記事を読...