こんにちは、Enigmo 新卒エンジニアの@sean0628_iです。 Enigmo Advent Calendar 2018 2日目の記事です。
初めに
Accelerated Mobile Pages の略であり、高速でスムーズにWeb ページを表示するためのライブラリー、或いはその仕組みのことです。 通常のHTML に比べて、制限が多く存在します。 今回はAMP 公式のドキュメントの仕様に関する箇所が英語だったので、読解し要点をまとめます。
AMP 制限
- 特定の要素をマークアップに含める。
- JavaScript は利用不可。
- inline CSS のみ利用可。 -> 50KB の制限付き
- 特定のHTML tag は利用不可。
- HTML 内、コメント不可。
- 特定のCSS properties は利用不可。
必要なマークアップ
- <!doctype html> でHTML を書き始める。
- <html ⚡> tag を含める。(<html amp> でも代用可能)
- <head> tag と<body> tag を含める。(通常のHTML では任意)
- <head> tag 内の一番初めに、<meta charset="utf-8"> を含める。
- <head> tag 内に、<link rel="canonical" href="$SOME_URL"> を含める。(
$SOME_URL
は通常版のHTML のURL、通常版のHTML が存在しない場合はAMP のURLを入れる。) - <head> tag 内に、<meta name="viewport" content="width=device-width"> を含める。
minimum-scale=1
および、initial-scale=1
も含めることが勧められる。 - <head> tag 内に、<script async src="https://cdn.ampproject.org/v0.js"></script> を含める。
- <head> tag 内に、AMP Boilerplate Code(head > style[amp-boilerplate] と noscript > style[amp-boilerplate])を含める。
HTML tags
tag | 適正 |
---|---|
script | ×(type がapplication/ld+json の場合のみ○) |
noscript | ○ |
base | × |
img | amp-img にて代用 |
video | amp-video にて代用 |
audio | amp-audio にて代用 |
iframe | amp-iframe にて代用 |
frame | × |
frameset | × |
object | × |
param | × |
applet | × |
embed | × |
form | ○(amp-form extension を含めることで利用可) |
input elements | 一部(<input[type=image]>、<input[type=button]>、<input[type=password]>、<input[type=file]>)を除いて○<fieldset>、<label> は○ |
button | ○ |
style | <head> tag 内に、一つのみ追加可。amp-custom attribute を持たせる必要あり。 |
link | microformats.org に、登録されているrel は○ |
meta | http-equiv attribute が特定の値に利用可。詳細: AMP validator specification |
a | ○ href attribute をjavascript: から始めてはいけない。target を設定する場合、_blank を利用。 |
svg | 殆どのSVG は利用可 |
Comments
- HTML 内でコメントは利用できない。
CSS
- 50,000 bytes の上限を超えてはいけない。
!important
は利用できない。- transition および、animation 関連は
opacity
、transform
properties のみ利用可。