extensions/amp-story/amp-story-page-attachment.md
amp-story-page-attachment allows additional content in the form of inline AMPHTML content on specific AMP story pages. This content is revealed to users through a "swipe up" gesture, or a tap on the call to action element.
A UI button prompting the viewer to open the attachment will appear at the bottom of every page with a amp-story-page-attachment element.
<amp-story-page id="page-attachment-example">
<amp-story-grid-layer template="fill">
<amp-img src="https://example.ampproject.org/helloworld/bg1.jpg" width="900" height="1600">
</amp-story-grid-layer>
<amp-story-page-attachment layout="nodisplay">
<h1>My title</h1>
<p>Lots of interesting text with <a href="https://example.ampproject.org">links</a>!</p>
<p>More text and a YouTube video!</p>
<amp-youtube
data-videoid="b4Vhdr8jtx0"
layout="responsive"
width="480" height="270">
</amp-youtube>
<p>And a tweet!</p>
<amp-twitter
data-tweetid="885634330868850689"
layout="responsive"
width="480" height="270">
</amp-twitter>
</amp-story-page-attachment>
</amp-story-page>
The <amp-story-page-attachment> element must be the last child of <amp-story-page>, and must have the layout="nodisplay" attribute. The attachment AMPHTML content is expected to be provided inline in your AMP Story, within this <amp-story-page-attachment> tag.
[tip type="important"]
Both amp-story-page-attachment and amp-story-page-outlink must be the last child tag of an amp-story-page. Because of this, you may include neither or one, but not both.
[/tip]
When no attributes are set, the default UI will render:
<amp-story-page-attachment
layout="nodisplay">
...
</amp-story-page-attachment>
theme (optional)String representing the color theme, default is light. Accepts values light & dark.
<amp-story-page-attachment
layout="nodisplay"
theme="dark">
...
</amp-story-page-attachment>
cta-text (optional)String that customizes the button text. The default is "Swipe up".
<amp-story-page-attachment
layout="nodisplay"
cta-text="Explore Tasting Menu">
...
</amp-story-page-attachment>
cta-image (optional)String representing a URL pointing to an image. Optimize performance and avoid distortion by using a 48x48px image.
<amp-story-page-attachment
layout="nodisplay"
cta-image="images/48x48image.jpg">
...
</amp-story-page-attachment>
cta-image-2 (optional)String representing a URL pointing to an image. Two images will display when cta-image and cta-image-2 are defined. Optimize performance and avoid distortion by using a 48x48px image.
<amp-story-page-attachment
layout="nodisplay"
cta-image="images/48x48image.jpg"
cta-image-2="images/48x48image2.jpg">
...
</amp-story-page-attachment>
title (optional)String that displays in the attachment's header when scrolling beyond the height of the viewport.
<amp-story-page-attachment
layout="nodisplay"
title="My title"
>
...
</amp-story-page-attachment>
[tip type="note"]
amp-story-page-attachment previously supported outlinking. Please use amp-story-page-outlink for one-tap outlinking UI.
[/tip]
The attachment AMPHTML content is expected to be provided inline in your AMP Story, within this <amp-story-page-attachment> tag.
Story page attachments allow the same HTML elements as AMP Story along with additional components listed below, such as third party video players or social media embeds. This means you can add additional content that is too verbose or disallowed in an AMP Story page.
List of allowed AMP components in a page attachment:
<ul> <li><code><amp-3d-gltf></code></li> <li><code><amp-3q-player></code></li> <li><code><amp-accordion></code></li> <li><code><amp-audio></code></li> <li><code><amp-beopinion></code></li> <li><code><amp-bodymovin-animation></code></li> <li><code><amp-brid-player></code></li> <li><code><amp-brightcove></code></li> <li><code><amp-byside-content></code></li> <li><code><amp-call-tracking></code></li> <li><code><amp-carousel></code></li> <li><code><amp-dailymotion></code></li> <li><code><amp-date-countdown></code></li> <li><code><amp-embedly-card></code></li> <li><code><amp-facebook></code></li> <li><code><amp-facebook-comments></code></li> <li><code><amp-facebook-like></code></li> <li><code><amp-facebook-page></code></li> <li><code><amp-fit-text></code></li> <li><code><amp-fx-collection></code></li> <li><code><amp-fx-flying-carpet></code></li> <li><code><amp-gfycat></code></li> <li><code><amp-gfycat></code></li> <li><code><amp-gist></code></li> <li><code><amp-gist></code></li> <li><code><amp-google-document-embed></code></li> <li><code><amp-hulu></code></li> <li><code><amp-ima-video></code></li> <li><code><amp-image-slider></code></li> <li><code><amp-img></code></li> <li><code><amp-imgur></code></li> <li><code><amp-instagram></code></li> <li><code><amp-izlesene></code></li> <li><code><amp-jwplayer></code></li> <li><code><amp-kaltura-player></code></li> <li><code><amp-list></code></li> <li><code><amp-live-list></code></li> <li><code><amp-mathml></code></li> <li><code><amp-megaphone></code></li> <li><code><amp-mowplayer></code></li> <li><code><amp-nexxtv-player></code></li> <li><code><amp-o2-player></code></li> <li><code><amp-ooyala-player></code></li> <li><code><amp-pan-zoom></code></li> <li><code><amp-pinterest></code></li> <li><code><amp-playbuzz></code></li> <li><code><amp-powr-player></code></li> <li><code><amp-reach-player></code></li> <li><code><amp-reddit></code></li> <li><code><amp-riddle-quiz></code></li> <li><code><amp-soundcloud></code></li> <li><code><amp-springboard-player></code></li> <li><code><amp-timeago></code></li> <li><code><amp-twitter></code></li> <li><code><amp-video></code></li> <li><code><amp-video-iframe></code></li> <li><code><amp-vimeo></code></li> <li><code><amp-vine></code></li> <li><code><amp-viqeo-player></code></li> <li><code><amp-vk></code></li> <li><code><amp-wistia-player></code></li> <li><code><amp-yotpo></code></li> <li><code><amp-youtube></code></li> </ul>