SYNCER

SYNCER

<amp-img> - 画像を表示する

1件

公開日:

AMPのamp-imgは、画像を表示するための要素です。img要素の置き換えです。アニメーションGIF画像を表示するには、amp-anim要素を利用して下さい。

概要

名前
amp-img
可用性
Stable (安定)
サポートするレイアウト
fill,fixed,fixed-height,flex-item,nodisplay,responsive
必要なスクリプト
なし。
検証
https://github.com/ampproject/amphtml/blob/master/validator/validator-main.protoascii
ドキュメント
https://www.ampproject.org/docs/reference/amp-img.html

属性

alt

指定例: 芝犬の逆立ち

画像ファイルを表示できなかったり、見えなかったりする場合の代替テキスト。

attribution

指定例: CC BY

画像の属性。ライセンスの内容などを指定する。

height

指定例: 150

高さ。画像が表示される前にアスペクト比を決定できるよう、指定する必要がある。

src

指定例: ./image.png

画像ファイルのURL。公的にキャッシュできるURLでなければならない。リクエストによってはAMP側がURLを書き換えることもある。

srcset

指定例: /small.jpg 480w,/large.jpg 1130w

HTMLと同じsrcset属性の記法で、デバイスの解像度(画面幅)によって、違う画像を表示できる。

width

指定例: 200

横幅。画像が表示される前にアスペクト比を決定できるよう、指定する必要がある。

共通属性

AMPの全てのタグで利用できる共通属性を指定できます。

説明

アスペクト比の明示

amp-img要素で表示する画像は、自動的にレイジーロード処理になります。表示される前は空白状態です。ブラウザがまだ画像を取得できていない段階でもアスペクト比の情報を伝えるために、width属性とheight属性は明示的に指定しなければいけません。実際に表示されるサイズは、スタイルシートやlayout属性で調整できます。

layout属性

サイズの調整は、グローバル属性のlayout属性で手軽に調整できます。例えばresponsiveを指定すれば、ブラウザの幅に合わせてアスペクト比を保ったまま拡大、縮小してくれるので便利です。width属性を無視してコンテナ要素の横幅いっぱいに広がるなど、癖もあるのでご注意下さい。

HTML

<p>ブラウザの横幅に合わせて画像がアスペクト比を保ったまま拡大、縮小します。</p>
<amp-img
	src="/image/logo/square.jpg"
	width="200"
	height="200"
	layout="responsive">
</amp-img>

デモを開く

フォールバック

スタイルシートで背景色を指定すれば、画像が表示される前のプレースホルダー、画像を表示できない場合のフォールバックの役割を果たします。

CSS

amp-img {
	background-color: grey ;
}

デモを開く

figureの利用

AMPではfigure要素の使用に制限がありません。figure要素内の、本来はimg要素の部分をamp-img要素に置き換えて利用できます。

HTML

<figure>
	<amp-img
		src="/image/logo/square.jpg"
		width="200"
		height="200"
		layout="fixed">
	</amp-img>
	<figcaption>SYNCERのロゴ</figcaption>
</figure>

デモを開く

サンプルコード

HTML

<!doctype html>
<html amp>
	<head>
		<meta charset="utf-8">
		<title>【デモ】<amp-img> - 画像を表示する</title>
		<link rel="canonical" href="https://syncer.jp/Web/AMP/Component/amp-img/">
		<meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1">
		<style amp-custom>
			body {
				padding: 12px ;
				background-color: #fff ;
			}
		</style>
		<script type="application/ld+json">
			{
				"@context": "http://schema.org",
				"@type": "NewsArticle",
				"headline": "記事のタイトル",
				"image": [
					"eyecatch.jpg"
				],
				"datePublished": "2017-08-23T00:00:00+0900"
			}
		</script>
		<style amp-boilerplate>body{-webkit-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-moz-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-ms-animation:-amp-start 8s steps(1,end) 0s 1 normal both;animation:-amp-start 8s steps(1,end) 0s 1 normal both}@-webkit-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-moz-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-ms-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-o-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}</style><noscript><style amp-boilerplate>body{-webkit-animation:none;-moz-animation:none;-ms-animation:none;animation:none}</style></noscript>
		<script async src="https://cdn.ampproject.org/v0.js"></script>
	</head>
	<body>

<amp-img
 	alt="SYNCERのマスコット"
	src="/image/mascot/200.png"
 	width="200"
 	height="200"
 	layout="fixed">
</amp-img>

	</body>
</html>

デモを開く

デモ

</head><body>までを含めて下さい。

</body> </html>

<style amp-custom>

</style>