Thank you!

  • websites



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


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

<script async src=""></script>

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

<script async custom-element="amp-bind" src=""></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-img src="/static/samples/img/amp.jpg" width="1080" height="610" layout="responsive" alt="AMP"></amp-img>


Use srcset to specify different images for varying viewport widths and pixel densities (change the width of your browser windows to test it).

<amp-img src="/static/samples/img/amp.jpg" srcset="/static/samples/img/amp.jpg 1080w, /static/samples/img/amp-900.jpg 900w, /static/samples/img/amp-800.jpg 800w,
/static/samples/img/amp-700.jpg 700w, /static/samples/img/amp-600.jpg 600w, /static/samples/img/amp-500.jpg 500w, /static/samples/img/amp-400.jpg 400w,
/static/samples/img/amp-300.jpg 300w, /static/samples/img/amp-200.jpg 200w, /static/samples/img/amp-100.jpg 100w" 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.

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

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="/static/samples/img/amp.jpg" width="475" height="268" layout="responsive" alt="AMP">
    <img src="/static/samples/img/amp.jpg" width="475" height="268" alt="AMP">

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="/static/samples/img/amp_by_example_logo.svg" width="208" height="40" alt="AMP by Example" noloading></amp-img>

Dynamically changing the src

You can use amp-bind to dynamically change the src URL of an amp-img. Remember to also change the alt if the content/meaning of the image changes.

<amp-img src="" width="300" height="200" alt="Example image" [src]="myImageUrl" [alt]="myImageAlt">
<button on="tap:AMP.setState({ myImageUrl: '', myImageAlt: 'Another example image' })">Change image</button>

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="" width="3" height="2" alt="a vertically centered amp-img">

...and here is the CSS:

  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 上的示例