1. ホーム
  2. Web制作
  3. CSS

[CSSチュートリアル】CSSで実現するイメージマッピングメソッド

2022-01-12 03:45:53

I. 前書き

イメージマッピングにより、画像の一部の領域をホットスポットとして指定することができます。マウスをその領域上でスライドさせることで、何らかのコンテンツ情報を表示することができます。もちろん、その部分をクリックしてジャンプすることもでき、イメージナビゲーションと同様の機能を実現することができます。

インターネットから上記の画像を見つけ、以下の機能を実装したいと思いました。各人物の上にマウスを置くと、長方形のボックスが表示され、それをクリックすると対応するウェブサイトにジャンプするようにしたいのです。

効果は次のとおりです。

II. コードの実装

1. まず最初に、画像をページ内の名前付きdivに追加する必要があります。

ClassFile {
u4 magic;
u2 minor_version;
u2 major_version;
u2 constant_pool_count;
cp_info constant_pool[constant_pool_count-1];
u2 access_flags;
u2 this_class;
u2 super_class;
u2 interfaces_count;
u2 interfaces[interfaces_count];
u2 fields_count;
field_info fields[fields_count];
u2 methods_count;
method_info methods[methods_count];
u2 attributes_count;
attribute_info attributes[attributes_count];
}

2. そして、画像の後に各人のホームページへのリンク集を追加します。 リスト項目内の人物を特定するために、各リスト項目にクラスを割り当てる必要があります . また、各リンクに CONSTANT_Utf8 1 A UTF-8 encoded Unicode string  CONSTANT_Integer 3 An int literal value  CONSTANT_Float 4 A float literal value  CONSTANT_Long 5 A long literal value  CONSTANT_Double 6 A double literal value  CONSTANT_Class 7 A symbolic reference to a class or interface  CONSTANT_String 8 A String literal value  CONSTANT_Fieldref 9 A symbolic reference to a field  CONSTANT_Methodref 10 A symbolic reference to a method declared in a class  CONSTANT_InterfaceMethodref 11 A symbolic reference to a method declared in an interface  CONSTANT_NameAndType 12 Part of a symbolic reference to a field or method  属性を各リンクに設定し、その中に人物の名前を入れます。そうすれば、マウスがリンクの上に乗ったときに、ほとんどのブラウザで表示されるツールチップに人名が表示されるようになります。

field_info {
u2 access_flags;
u2 name_index;
u2 descriptor_index;
u2 attributes_count;
attribute_info attributes[attributes_count];
}

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

3. 外側のdivの幅と高さを設定します。 画像と同じ大きさになるように . 次に、divのpositionプロパティをrelativeに設定します。これにより、含まれるリンクがdiv(別名、画像)の端から絶対的に相対的な位置に配置されるようになるからです。

リストの黒い点をページに表示させたくない。さらに、リスト項目の内側と外側の余白を削除したい。

method_info {
u2 access_flags;
u2 name_index;
u2 descriptor_index;
u2 attributes_count;
attribute_info attributes[attributes_count];
}

4. 次に、リンクにスタイルを適用することです。リンクは絶対位置(外側のdivでpositionプロパティをrelativeにしているので、ここではdivに対する相対位置で、divと画像の幅と高さが同じなので、画像の左上から配置しています)を決めて、対応する人に別々に配置して、ホットスポットを作成します。しかし、まず、目的のクリック領域を作るように、それらの幅と高さを設定する必要があります。

attribute_info {
u2 attribute_name_index;
u4 attribute_length;
u1 info[attribute_length];
}

5. 次に、マウスをスライドさせたときに表示されるテキストコンテンツのスタイルを設定する必要があります。文字の上に表示され、背景色や内余白などのスタイルが設定され、テキストが中央に配置されるようにします。

.imagemap a .note {
  position: absolute;
  top: -2em;
  left: -100em;
  background-color: #42b983;
  color: white;
  width: 2em;
  text-align: center;
  padding: 0.2em 0.5em;
  border-radius: 5px;
}

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

注意

  • position属性がabsolute positioningの値をとる場合、その要素は通常のドキュメントフローから外れたところに移動されます。 は、静的に配置されていない最も近い祖先要素からの相対的な要素のオフセットを指定することによって、要素の位置を決定します。 リスト内にリンクされたaタグがあるため、絶対位置指定にしているので、aタグ内のspanは、リンク先のa
  • ここでtopに負の値を設定したのは、要素を少し上に移動させるためで、leftの値を-100emにしたのは、スパンを最初は可視領域から出さないようにするためです。そして、マウスがその上を通過すると、leftの値が正しい位置にリセットされます。

また、通常、インライン要素に幅や高さを設定することは無意味ですが、上記のコードでは、スパンがすでに絶対位置決めされており、インライン要素は絶対位置決め後に幅や高さを設定できるため、スパンにうまく幅と高さを設定することができます。

知識を得ることができます。インライン要素の幅と高さを設定するいくつかの方法

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

  • 表示: display:block / inline-block を使用します。
  • 使用位置:position:absolute / fixed {を使用します。 {を使用します。 フロート使用: float:left / right {を使用します。

6. もういいや、簡単なイメージマッピングが実装されたことを確認するためのテストができます。

今回はイメージマッピングを実現するCSSの記事を紹介しましたが、より関連するイメージマッピングを実現するCSSのコンテンツは、スクリプトハウスの過去記事を検索するか、引き続き以下の関連記事を閲覧してください、今後ともスクリプトハウスをよろしくお願いします!