AMP Plug and play components

Plug and play components

Plug and play components:即插即用组件

AMP提供了一个巨大的组件库,可以创建常见的小部件和独特的web元素。比如折叠和展开内容部分的手风琴,或者收集和存储用户cookie同意的UI控件。对于我们的第一页,我们将使用amp-base-carousel将我们的单一图像转换为图像carousel。

Import the script

Import the script: 导入脚本

与amp-img不同,amp-base-carousel组件是一个扩展组件。前面讨论的样板代码提供的基本AMP JS中不包括扩展组件逻辑。通过显式地只加载页面使用的组件的JavaScript,这有助于保持AMP页面的简洁和精简。

要使用amp-base-carousel组件,我们必须导入它的脚本标记。复制下面的标签并将其放入文档的头部。您可以在每个组件的参考文档的顶部找到导入脚本。

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

接下来,在第一个元素下面包含另一个元素,然后将它们都包装在<amp-base-carousel>标签中,如下所示:

<amp-base-carousel width="600" height="400" layout="responsive">
    <amp-img src="https://source.unsplash.com/Ji_G7Bu1MoM/600x400" width="600" height="400" layout="responsive"></amp-img>
    <amp-img src="https://source.unsplash.com/4yCXNMLP9g8/600x400" width="600" height="400" layout="responsive"></amp-img>
</amp-base-carousel>

Component attributes

Component attributes:组件属性

您可能注意到,我们定义了熟悉的属性、宽度、高度和布局。像HTML一样,属性在AMP中无处不在。但是,AMP使用额外的属性来定制组件的行为。有些是常见的元素属性,有些是特定组件的特殊属性。让我们添加loop属性,并将其设置为true,并包含更多图片:

<amp-base-carousel loop="true"  width="600" height="400" layout="responsive">
  <amp-img src="https://source.unsplash.com/Ji_G7Bu1MoM/600x400" width="600" height="400" layout="responsive"></amp-img>
  <amp-img src="https://source.unsplash.com/4yCXNMLP9g8/600x400" width="600" height="400" layout="responsive"></amp-img>
  <amp-img src="https://source.unsplash.com/QrgRXH81DXk/600x400" width="600" height="400" layout="responsive"></amp-img>
  <amp-img src="https://source.unsplash.com/8QJSi37vhms/600x400" width="600" height="400" layout="responsive"></amp-img>
</amp-base-carousel>

loop属性是特定于amp-base-carousel的,有助于定义其行为。我们可以进一步定制我们的旋转木马与其他属性,如自动前进!您可以在其参考页上查看可用于amp-base-carousel的属性列表。所有组件引用文档列出了可用的属性和它们配置的行为,请参阅AMP组件库。

最后代码如下:

<!doctype html>
<html amp lang="en">
<head>
    <meta charset="utf-8">
    <script async src="https://cdn.ampproject.org/v0.js"></script>
    <script async custom-element="amp-base-carousel" src="https://cdn.ampproject.org/v0/amp-base-carousel-0.1.js"></script>
    <title>Hello, AMPs</title>
    <link rel="canonical" href="https://amp.yingyanxt.com/">
    <meta name="viewport" content="width=device-width">
    <script type="application/ld+json">
        {
            "@context": "http://schema.org",
            "@type": "NewsArticle",
            "headline": "Open-source framework for publishing content",
            "datePublished": "2015-10-07T12:02:41Z",
            "image": [
                "logo.jpg"
            ]
        }
    </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>

    <style amp-custom>
        /* any custom style goes here */
        body {
            background-color: white;
        }
        amp-img {
            background-color: gray;
            border: 1px solid black;
        }
    </style>

</head>
<body>
<h1>Welcome to the mobile web</h1>
<amp-img src="./welcome.jpeg" alt="Welcome" height="400" width="800"></amp-img>
<amp-base-carousel width="600" height="400" layout="responsive">
    <amp-img src="https://source.unsplash.com/Ji_G7Bu1MoM/600x400" width="600" height="400" layout="responsive"></amp-img>
    <amp-img src="https://source.unsplash.com/4yCXNMLP9g8/600x400" width="600" height="400" layout="responsive"></amp-img>
</amp-base-carousel>
</body>
</html>