Do you build things with AMP? Fill out the AMP Developer Survey!
AMP
  • email

amp-img

Introduction

AMP HTML files don't support the normal HTML img tag. With amp-img AMP provides a powerful replacement.

Setup

amp-img is a built-in element and is automatically imported via the AMP runtime.

<script async src="https://cdn.ampproject.org/v0.js"></script>

You can use the amp-bind extension for dynamically changing an image.

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

Basic usage

A simple responsive image - width and height are used to determine the aspect ratio. Use alt to specify text that can act as an alternative for the image.

AMP
<amp-img src="https://amp.dev/static/samples/img/amp.jpg"
  width="1080"
  height="610"
  layout="responsive"
  alt="AMP"></amp-img>

Offline fallback

amp-img supports AMP's common attributes, which means you can show a fallback in case the image couldn't be loaded. This is great for adding offline support to your AMPs.

offline
<amp-img src="https://amp.dev/static/samples/img/does-not-exist.jpg"
  width="300"
  height="100"
  layout="responsive"
  alt="a non-existent image">
  <div fallback>offline</div>
</amp-img>

No script

If you want to ensure that users with JavaScript disabled can see your images, you can add an additional img element inside a noscript tag. This also makes it possible for webcrawlers without JavaScript runtime to discover your images.

<amp-img src="https://amp.dev/static/samples/img/amp.jpg"
  width="475"
  height="268"
  layout="responsive"
  alt="AMP">
</amp-img>

Hiding the loading indicator

Use the noloading attribute to hide the loading indicators on page load. This is recommended for logos and small images/icons.

<amp-img src="https://amp.dev/static/samples/img/amp_by_example_logo.svg"
  width="208"
  height="40"
  alt="AMP by Example"
  noloading></amp-img>

Vertically centering an amp-img

Here is a simple approach to vertically center an amp-img using the flex layout (src):

<div class="outer">
  <amp-img class="inner"
    layout="responsive"
    src="https://unsplash.it/300/200"
    width="3"
    height="2"
    alt="a vertically centered amp-img">
  </amp-img>
</div>

...and here is the CSS:

.inner{
  flex-basis: 0;
  -ms-flex-preferred-size: 0;
  -webkit-box-flex: 1;
  -ms-flex-positive: 1;
  flex-grow: 1;
}
.outer {
  height: 320px; /* adjust to your needs */
  display: flex;
  flex-wrap: wrap;
  -webkit-box-align: center;
  -ms-flex-align: center;
  align-items: center;
}
需要进一步说明?

如果此页面上的说明未能涵盖您的所有问题,欢迎与其他 AMP 用户取得联系,讨论您的具体用例。

前往 Stack Overflow
一项无法解释的功能?

AMP 项目强烈鼓励您参与并做出贡献!我们希望您能成为我们开放源代码社区的持续参与者,但我们也欢迎您对所热衷问题做出一次性贡献。

编辑 GitHub 上的示例