SYNCERのロゴ
アイキャッチ画像

area要素 - ハイパーリンクの領域

area要素はmap要素のハイパーリンクの各領域を表す要素です。どの部分をクリックした時に、どのアドレスに移動するのか設定できます。

概要

名前
area (Area)
カテゴリ
Flow content
Phrasing content
配置できる場所
Phrasing contentが期待される場所。map要素の子孫でなければいけない。
コンテンツモデル
子要素を持ちません。
タグの省略
この要素は終了タグを持ちません。
コンテンツ属性
alt - area要素のハイパーリンクのテキスト。
coords - area要素の座標。
shape - area要素の領域の種類。
target - リンクを開くコンテキスト。
download - リンク先のリソースをダウンロードする。
ping - リンクをクリックした時のpingの送信先。
rel - リンク先のリソースとの関係。
referrerpolicy - リンク先にアクセスする時のリファラーポリシー。
DOM Interface
HTMLAreaElement
デフォルトのスタイル

Chrome / Firefox / Safari

:focus {
    outline: -webkit-focus-ring-color auto 5px;
}
area {
    display: inline;
    cursor: pointer;
}
*|*:any-link:not(svg|a) {
    text-decoration: underline;
}
*|*:link {
    color: rgb(0, 0, 238);
}
:any-link {
    cursor: pointer;
}
area {
    display: none !important;
}
:focus {
	outline-color: -webkit-focus-ring-color;
	outline-style: auto;
	outline-width: 5px;
}
area {
	display: none;
}
仕様書
https://html.spec.whatwg.org/multipage/image-maps.html#the-area-element

属性

alt属性

ハイパーリンクのテキスト。href属性がある場合、この属性も必要。

coords属性

ハイパーリンクの領域。座標を表す数字をコンマ(,)で区切って必要な数だけ指定する。shape属性によって指定方法が違う。

shape属性構文説明
circlex,y,r円の中心x、円の中心y、半径r、の3つの数値を指定する。
rectx1,y1, x2,y2レクタングルの左上(x1,y1)、右上(x2, y2)、の4つの数値を指定する。
polyx1,y1, x2,y2, x3,y3, ...座標1(x1,y1)、座標2(x2,y2)、座標3(x3,y3)、と任意の数だけ座標を指定する。

shape属性

領域の種類を表すキーワードを下記の中から指定する。

circle
円。
rect
レクタングル。
poly
多角形。
default
全体。

target属性

ハイパーリンクを開くコンテキスト。a要素target属性と仕組みは同じです。

download属性

この属性を付けると、リンク先に移動するのではなくリンク先のリソースをダウンロードするようユーザーエージェントに促します。値を指定した場合はその値が、値を指定しない場合はリソース本来のファイル名が、ローカルに保存されるファイル名となります。基本的に、JavaScriptなどで作成したBlobや、インラインのData URI、同じオリジンの元にあるリソースに対して有効です。

ping属性

この属性を指定するとarea要素をクリックした時に、値に指定したURLにpingが送信される。このリクエストはPOSTメソッドで、ping-from(リンク元)、ping-to(リンク先)のカスタムヘッダーを持つ。href属性を持っていないと、クリックしてもpingは送信されない。

rel属性

ドキュメントと、リンク先のリソースとの関係をキーワードで指定する。半角スペース( )で区切って複数指定可。仕様書はLink typesを参考。仕様書以外でも広く使われているキーワードはmicroformats.orgを参照。

alternate
リンク先のリソースが、現在のリソースの代替表現であることを示す。
author
リンク先のリソースが、現在のリソースの著者を説明するページ、または著者との連絡先であることを意味する。
bookmark
リンク先のリソースが、現在のリソースのパーマリンクであることを意味する。
external
リンク先のリソースが、外部のリソースであることを意味する。
help
リンク先のリソースが、現在のリソースの内容についての説明であることを意味する。
license
リンク先のリソースが、現在のリソースのライセンスの説明であることを意味する。
next
リンク先のリソースが、現在のリソースの次に参照すべきであることを意味する。
nofollow
リンク先のリソースが、現在のリソースとは無関係であることを意味する。一般的な検索エンジンはリンク先を辿らないためSEOの評価に貢献しない。資料提示のために有害サイトにリンクする場合などに用いる。
noopener
新しいコンテキストでリンクを開いた時に、開かれたコンテキストと現在のコンテキストとの関係を断ち切るようユーザーエージェントに指示する。開かれたコンテキストのwindow.openerの値がなくなる。フィッシングサイト対策に有効なので、新しいコンテキストで外部サイトを開くリンクには常にこの値を付与することが推奨される。特にユーザーが自由にURLを投稿できるコメントシステムなどで有用。(noopenerに関するさらに詳しい説明)
noreferrer
リンク先のリソースに、リファラーを送らないようにユーザーエージェントに指示する。
prev
リンク先のリソースが、現在のリソースの前に参照すべきであることを意味する。
search
リンク先のリソースが、現在のリソース、及び、その関連リソースを検索するためのページであることを意味する。
tag
リンク先のリソースが、現在のリソースが紐付けられているタグのページであることを意味する。

referrerpolicy属性

リソースにアクセスする際のリファラーポリシーをキーワードで指定する。Referrer Policiesを参考。

no-referrer
いずれの場合もリファラーを送信しない。
no-referrer-when-downgrade
httpsからhttpに移動する時はリファラーを送信しない。ブラウザのデフォルトの挙動。
same-origin
同一オリジン間の移動時にだけ、リファラーを送信する。
origin
スキーム、ホスト、ポートのみをリファラーに含める。パスは含めない。
strict-origin
httpsからhttpに移動する時はリファラーを送信しない。それ以外では、originと同じ。
origin-when-cross-origin
同一オリジン間の移動時には、完全なリファラーを送信する。それ以外では、originと同じ。httpからhttpsへのアクセスはドメインが同じでもクロスオリジンとみなされる。
strict-origin-when-cross-origin
httpsからhttpに移動する時はリファラーを送信しない。同一オリジン間の移動時には、完全なリファラーを送信する。それ以外では、originと同じ。httpからhttpsへのアクセスはドメインが同じでもクロスオリジンとみなされる。
unsafe-url
いずれの場合も完全なリファラーを送信する。

グローバル属性

全てのタグで利用できるグローバル属性を指定できます。

チュートリアル

area要素の基本的な使い方を説明します。さらに詳しい使い方は、各属性の説明をご参考下さい。

map要素

area要素はmap要素の子要素にします。任意の数だけ配置できます。例えば、日本地図の画像で都道府県の数だけクリック領域を作成したい場合は最低でも47個のarea要素が必要になります。

<img src="./image.png" usemap="hoge">

<map name="hoge">
	<area shape="..." coords="...">
	<area shape="..." coords="...">
	<area shape="..." coords="...">
	<area shape="..." coords="...">
</map>

state

領域のstateをshape属性で指定します。それぞれのstateは次の特徴を持っています。

Circle state
正円の形をした領域を作成できる。
Default state
map要素の全体が領域となる。
Polygon state
多角形の形をした領域を作成できる。
Rectangle state
矩形(長方形)の形をした領域を作成できる。
<!-- Circle state -->
<area shape="circle">

<!-- Default state -->
<area shape="default">

<!-- Polygon state -->
<area shape="poly">

<!-- Rectangle state -->
<area shape="rect">

座標とは?

領域を作成するには、座標という概念を理解しなければいけません。といっても仕組みは単純です。次の画像を例に説明します。横幅が200px、高さが200pxの画像です。なお、ここでいうサイズは表示した時のサイズです。本来の画像のサイズではありません。

横幅200px 高さ200px

画像の左上の座標が(0, 0)です。座標の単位はピクセルです。なので例の画像では右下の座標は(200, 200)ということになります。この座標を元に、領域を指定していくというわけです。

area要素の座標
area要素の座標

円 (Circle state)

shape属性にcircleを指定した時、領域は「円」となります。coords属性には、円のルールに従った方法で座標を指定しなければいけません。具体的には、「円の中心を表すX座標、円の中心を表すY座標、円の半径」の順に3つの数値を指定します。数値の間は半角コンマ(,)で区切ります。

<!-- 中心が(100, 100)、半径が50pxの正円 -->
<area shape="circle" coords="100,100, 50">
shape=circle、coords=100,100, 50
shape=circle、coords=100,100, 50

実際に領域が反映されているかを確認してみて下さい。クリックすると画像が反応します。

対象のオブジェクト

全体 (Default state)

shape属性にcircleを指定した時、領域は「全体」となります。coords属性は省略しなければいけません。

<area shape="default">

実際に領域が反映されているかを確認してみて下さい。クリックすると画像が反応します。

対象のオブジェクト

ポリゴン (Polygon state)

shape属性にpolyを指定した時、領域は「ポリゴン」となります。coords属性には、ポリゴンのルールに従った方法で座標を指定しなければいけません。ポリゴンは多角形です。多角形の角となる座標を任意の数だけcoords属性で指定します。X座標、Y座標を1セットとして、最低でも3セット以上、つまり6個以上の偶数個、数値を指定して下さい。各座標が指定した順に結ばれて、それが領域になります。下記の例では3つの座標を指定しています。

<!-- (0, 0)、(200, 0)、(0, 200)を結んだ多角形 -->
<area shape="poly" coords="0,0, 200,0, 0,200">
shape=poly、coords=0,0, 200,0, 0,200
shape=poly、coords=0,0, 200,0, 0,200

実際に領域が反映されているかを確認してみて下さい。クリックすると画像が反応します。

対象のオブジェクト

レクタングル (Rectangle state)

shape属性にrectを指定した時、領域は「レクタングル」となります。coords属性には、レクタングルのルールに従った方法で座標を指定しなければいけません。レクタングルとは、長方形(矩形)のことです。具体的には、「図形の左上のX座標、図形の左上のY座標、図形の右下のX座標、図形の右下のY座標」の順に4つの数値を指定します。数値の間は半角コンマ(,)で区切ります。

<!-- 左上が(50, 25)、右下が(150, 185)の長方形 -->
<area shape="rect" coords="50,25, 150,185">
shape=rect、coords=50,25, 150,185
shape=rect、coords=50,25, 150,185

実際に領域が反映されているかを確認してみて下さい。クリックすると画像が反応します。

対象のオブジェクト

デモ

area要素のデモです。それぞれ、クリックできる領域の形が違います。

<!-- このコードは編集できます。 -->

<h2>circle</h2>
<img src="./image.png" usemap="#my-circle" width="200" height="200">
<map name="my-circle">
	<area shape="circle" coords="100,100, 50" href="https://syncer.jp/" target="_blank">
</map>

<h2>default</h2>
<img src="./image.png" usemap="#my-default" width="200" height="200">
<map name="my-default">
	<area shape="default" href="https://syncer.jp/" target="_blank">
</map>

<h2>poly</h2>
<img src="./image.png" usemap="#my-poly" width="200" height="200">
<map name="my-poly">
	<area shape="poly" coords="0,0, 200,0, 0,200" href="https://syncer.jp/" target="_blank">
</map>

<h2>rect</h2>
<img src="./image.png" usemap="#my-rect" width="200" height="200">
<map name="my-rect">
	<area shape="rect" coords="50,50, 150,150" href="https://syncer.jp/" target="_blank">
</map>

サポート状況

クリックすると、バージョンごとの対応状況を確認できます。

FeaturesChromeFirefoxSafariEdgeIEOperaiOS SafariAndroid
area要素
alt属性
coords属性
shape属性
target属性
download属性 54+ 20+ 10+× 41+××
ping属性 5.1+×× 15+ 4.0+
rel属性 54+ 30+ 9.1+ 11+ 41+ 9.1+×
referrerpolicy属性 53+ 50+××× 40+××
  • Twitterでシェア
  • Facebookでシェア
  • Google+でシェア
  • はてなブックマークでシェア
  • pocketに保存
  • LINEでシェア
更新履歴
2017年2月9日 (木)
コンテンツを公開しました。