AMP

amp-selector

實驗性功能
Bento

說明

代表一個控制項,用於呈現選項選單,並讓使用者從中選擇。

 

必要指令碼

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

用法

AMP 選取器是一個控制項,用於呈現選項清單,並讓使用者選擇一個或多個選項;選項的內容不只侷限於文字。

  • amp-selector 可以包含任何任意 HTML 元素或 AMP 元件 (例如,amp-carouselamp-img 等)。
  • amp-selector 無法包含任何巢狀 amp-selector 控制項。
  • 可選取的選項可以透過將 option 屬性新增至元素,並將值指派給屬性 (例如,<li option="value"></li>) 來設定。
  • 停用的選項可以透過將 disabled 屬性新增至元素 (例如,<li option="d" disabled></li>) 來設定。
  • 預先選取的選項可以透過將 selected 屬性新增至元素 (例如,<li option="b" selected></li>) 來設定。
  • 若要允許多重選取,請將 multiple 屬性新增至 amp-selector 元素。根據預設,amp-selector 一次允許選取一個項目。
  • 若要停用整個 amp-selector,請將 disabled 屬性新增至 amp-selector 元素。
  • amp-selector 包含 name 屬性,且 amp-selector 位於 form 標記內時,如果表單上發生提交事件,amp-selector 的行為會像單選按鈕/核取方塊群組,並針對 amp-selector 的名稱提交選取的值 (指派給選項的值)。

範例

<form action="/" method="get" target="_blank" id="form1">
  <amp-selector layout="container" name="single_image_select">
    <ul>
      <li>
        <amp-img src="/img1.png" width="50" height="50" option="1"></amp-img>
      </li>
      <li>
        <amp-img src="/img2.png" width="50" height="50" option="2"></amp-img>
      </li>
      <li option="na" selected>None of the Above</li>
    </ul>
  </amp-selector>
  <amp-selector layout="container" name="multi_image_select" multiple>
    <amp-img src="/img1.png" width="50" height="50" option="1"></amp-img>
    <amp-img src="/img2.png" width="50" height="50" option="2"></amp-img>
    <amp-img src="/img3.png" width="50" height="50" option="3"></amp-img>
  </amp-selector>
  <amp-selector layout="container" name="multi_image_select_1" multiple>
    <amp-carousel id="carousel-1" width="200" height="60" controls>
      <amp-img src="/img1.png" width="80" height="60" option="a"></amp-img>
      <amp-img
        src="/img2.png"
        width="80"
        height="60"
        option="b"
        selected
      ></amp-img>
      <amp-img src="/img3.png" width="80" height="60" option="c"></amp-img>
      <amp-img
        src="/img4.png"
        width="80"
        height="60"
        option="d"
        disabled
      ></amp-img>
    </amp-carousel>
  </amp-selector>
</form>
<amp-selector
  layout="container"
  name="multi_image_select_2"
  multiple
  form="form1"
>
  <amp-carousel id="carousel-1" width="400" height="300" type="slides" controls>
    <amp-img src="/img1.png" width="80" height="60" option="a"></amp-img>
    <amp-img
      src="/img2.png"
      width="80"
      height="60"
      option="b"
      selected
    ></amp-img>
    <amp-img src="/img3.png" width="80" height="60" option="c"></amp-img>
    <amp-img src="/img4.png" width="80" height="60" option="d"></amp-img>
  </amp-carousel>
</amp-selector>

在有效的 AMP 文件外部獨立使用

Bento 可讓您在非 AMP 網頁中使用 AMP 元件,而無需完全採用有效的 AMP。您可以將這些元件放置在使用不支援 AMP 的架構和 CMS 的實作中。請參閱我們的指南 在非 AMP 網頁中使用 AMP 元件,以瞭解詳情。

若要尋找 amp-selector 的獨立版本,請參閱 bento-selector

清除選取項目

若要在輕觸或點擊元素時清除所有選取項目,請在元素上設定 on 動作屬性,並使用 clear 動作方法指定 AMP 選取器 id

範例

<button on="tap:mySelector.clear">Clear Selection</button>
<amp-selector id="mySelector" layout="container" multiple>
  <div option>Option One</div>
  <div option>Option Two</div>
  <div option>Option Three</div>
</amp-selector>

屬性

<amp-selector> 上的屬性

disabled、form、multiple、name

上述屬性的行為方式與標準 HTML <select> 元素上的行為方式相同。

keyboard-select-mode

keyboard-select-mode 屬性決定 <amp-selector> 內選項的鍵盤導覽行為。

  • `none` (預設):Tab 鍵會變更 `

    中的項目之間的焦點`。使用者必須按下 Enter 鍵或空格鍵才能變更選取項目。方向鍵已停用。
  • `focus`:Tab 鍵會將焦點放在 ``。使用者可以使用方向鍵在項目之間導覽。必須按下空格鍵或 Enter 鍵才能變更選取項目。
  • `select`:Tab 鍵會將焦點放在 ``。當使用者使用方向鍵導覽選項時,選取項目會隨之變更。

此屬性可以設定為根據 媒體查詢 使用不同的選項。

<amp-selector> 選項上的屬性

option

表示選項為可選取。如果指定值,則值的內容會與表單一起提交。

disabled、selected

上述屬性的行為方式與標準 HTML <option> 元素上的行為方式相同。

活動

事件可能會使用 on 屬性觸發其他 AMP 元件上的動作。例如,on="select: my-tab.show"

請參閱 AMP 動作和事件,以瞭解詳情。

select

當使用者選取選項時,amp-selector 會觸發 select 事件。多重選取器和單一選取器會在選取或取消選取選項時觸發此事件。輕觸停用的選項不會觸發 select 事件。

  • `event.targetOption` 包含選取元素的 `option` 屬性值。
  • `event.selectedOptions` 包含所有選取元素的 `option` 屬性值的陣列。
需要更多協助嗎?

您已閱讀本文件十幾次,但它仍然沒有涵蓋您的所有問題嗎?或許其他人也有相同的感受:請在 Stack Overflow 上與他們聯絡。

前往 Stack Overflow
發現錯誤或缺少功能嗎?

AMP 專案非常鼓勵您的參與和貢獻!我們希望您能成為我們開放原始碼社群的長期參與者,但我們也歡迎針對您特別熱衷的問題提供一次性貢獻。

前往 GitHub