SYNCER

SYNCER

<amp-image-lightbox> - 画像用のライトボックスを設置する

1件

公開日:

AMPのamp-image-lightboxは、画像専用のライトボックスを設置するための要素です。画像をクリックすると拡大できます。コンテンツの内容は、テキスト、画像など自由です。画像以外を表示する場合は、amp-lightbox要素を利用します。

概要

名前
amp-image-lightbox
可用性
Stable (安定)
サポートするレイアウト
nodisplay
必要なスクリプト
<script async custom-element="amp-image-lightbox" src="https://cdn.ampproject.org/v0/amp-image-lightbox-0.1.js"></script>
検証
https://github.com/ampproject/amphtml/blob/master/extensions/amp-image-lightbox/0.1/validator-amp-image-lightbox.protoascii
ドキュメント
https://www.ampproject.org/docs/reference/extended/amp-image-lightbox.html

属性

layout

指定例: nodisplay

layout属性にnodisplayを指定しなければいけない。

共通属性

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

説明

ライブラリの読み込み

amp-image-lightboxを利用するには、専用のライブラリを読み込む必要があります。

HTML

<script async custom-element="amp-image-lightbox" src="https://cdn.ampproject.org/v0/amp-image-lightbox-0.1.js"></script>

基本的な使い方

ライトボックスの用意

ライトボックスを用意します。id属性に一意のid名、layout属性にnodisplayを指定して下さい。子要素は必要ありません。この要素は画像を拡大した時に利用されるもので、通常は非表示です。

HTML

<!-- ライトボックス -->
<amp-image-lightbox
	id="syncer"
	layout="nodisplay">
</amp-image-lightbox>

画像にon属性を付ける

ライトボックスで拡大表示させたいamp-img要素にon属性を追加します。on属性の内容はtap:syncerです。これは、「タップ(tap)をしたらsyncerというid名のライトボックスを開く」という内容です。複数の画像で同じライトボックス(id属性)を対象にできます。amp-img要素にon属性を付ける場合、role属性とtabindex属性も付けないと検証エラーになります。

HTML

<!-- 画像1 -->
<amp-img
	src="/image/photo/1.jpg"
	width="160"
	height="120"
	on="tap:syncer"
	role="button"
	tabindex>
</amp-img>

<!-- 画像2 -->
<amp-img
	src="/image/photo/2.jpg"
	width="160"
	height="120"
	on="tap:syncer"
	role="button"
	tabindex>
</amp-img>

設置例

HTML

<!-- ライトボックス -->
<amp-image-lightbox
	id="syncer"
	layout="nodisplay">
</amp-image-lightbox>

<!-- 画像1 -->
<amp-img
	src="/image/photo/1.jpg"
	width="160"
	height="120"
	on="tap:syncer"
	role="button"
	tabindex>
</amp-img>

<!-- 画像2 -->
<amp-img
	src="/image/photo/2.jpg"
	width="160"
	height="120"
	on="tap:syncer"
	role="button"
	tabindex>
</amp-img>

デモを開く

スタイリング

ライトボックスに背景色を指定するには、amp-image-lightboxをセレクタにして下さい。デフォルトでは背景色は黒です。

CSS

amp-image-lightbox {
	background-color: #d36015 ;
}

サンプルコード

HTML

<!doctype html>
<html amp>
	<head>
		<meta charset="utf-8">
		<title>【デモ】<amp-image-lightbox> - 画像用のライトボックスを設置する</title>
		<link rel="canonical" href="https://syncer.jp/Web/AMP/Component/amp-image-lightbox/">
		<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>
		<script async custom-element="amp-image-lightbox" src="https://cdn.ampproject.org/v0/amp-image-lightbox-0.1.js"></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>

<p>タッチデバイス以外でライトボックスを閉じるには、<kbd>ESC</kbd>を押すか、画像以外の部分をクリックします。</p>
<amp-img
	src="/image/photo/10.jpg"
	width="160"
	height="120"
	on="tap:syncer"
	role="button"
	tabindex>
</amp-img>

<amp-img
	src="/image/photo/11.jpg"
	width="160"
	height="120"
	on="tap:syncer"
	role="button"
	tabindex>
</amp-img>

<amp-image-lightbox
	id="syncer"
	layout="nodisplay">
</amp-image-lightbox>

	</body>
</html>

デモを開く

デモ

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

</body> </html>

<style amp-custom>

</style>