AMP

amp-date-countdown

實驗性
Bento

說明

顯示倒數至指定日期的序列。

 

必要指令碼

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

用法

顯示倒數序列,以指示排定事件發生前的剩餘時間。


amp-date-countdown 提供倒數時間資料,您可以在 AMP 頁面中呈現。透過在 amp-date-countdown 標記中提供特定的屬性amp-date-countdown 擴充功能會傳回時間參數清單,您可以將其傳遞至 amp-mustache 範本以進行呈現。請參閱下方每個傳回時間參數的清單


<amp-date-countdown
  timestamp-seconds="2147483648"
  layout="fixed-height"
  height="50"
>
  <template type="amp-mustache">
    <p class="p1">
{{d}} days, {{h}} hours, {{m}} minutes and {{s}} seconds until
      <a href="https://en.wikipedia.org/wiki/Year_2038_problem">Y2K38</a>.
    </p>
  </template>
</amp-date-countdown>

傳回的時間參數

下表列出您可以在 Mustache 範本中指定的格式

格式 意義
d 天 - 0、1、2,...12、13..無限大
dd 天 - 00、01、02、03..無限大
h 小時 - 0、1、2,...12、13..無限大
hh 小時 - 01、02、03..無限大
m 分鐘 - 0、1、2,...12、13..無限大
mm 分鐘 - 01、01、02、03..無限大
s 秒 - 0、1、2,...12、13..無限大
ss 秒 - 00、01、02、03..無限大
days 日或天的國際化字串
hours 小時或小時的國際化字串
minutes 分鐘或分鐘的國際化字串
seconds 秒或秒的國際化字串

格式化值的範例

下表提供在 Mustache 範本中指定的格式化值範例,以及輸出範例

格式 範例輸出 備註
{hh}:{mm}:{ss} 04:24:06 -
{h} {hours} 和 {m} {minutes} 和 {s} {seconds} 4 小時又 1 分鐘又 45 秒 -
{d} {days} {h}:{mm} 1 天 5:03 -
{d} {days} {h} {hours} {m} {minutes} 50 天 5 小時 10 分鐘 -
{d} {days} {h} {hours} {m} {minutes} 20 天 5 小時 10 分鐘 -
{h} {hours} {m} {minutes} 240 小時 10 分鐘 biggest-unit='hours'
{d} {days} {h} {hours} {m} {minutes} 50 天 5 小時 10 分鐘 locale='zh-cn'

從 0.1 版本遷移

實驗性的 1.0 版本 amp-date-countdown 使用屬性名稱 count-up 而非 0.1 中的 data-count-up,以支援「向上計數」功能。有關更多詳細資訊,請參閱下方「屬性」下的 count-up 區段。

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

Bento 允許您在非 AMP 頁面中使用 AMP 元件,而無需完全採用有效的 AMP。您可以採用這些元件,並將它們放置在不支援 AMP 的框架和 CMS 的實作中。請參閱我們的指南在非 AMP 頁面中使用 AMP 元件以了解更多資訊。

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

屬性

您必須至少指定下列其中一個必要屬性:end-datetimeleft-mstimestamp-mstimestamp-seconds

end-date

要倒數至的 ISO 格式日期。例如,2020-06-01T00:00:00+08:00

timestamp-ms

以毫秒為單位的 POSIX Epoch 值;假設為 UTC 時區。例如,timestamp-ms="1521880470000"

timestamp-seconds

以秒為單位的 POSIX Epoch 值;假設為 UTC 時區。例如,timestamp-seconds="1521880470"

timeleft-ms

要倒數的剩餘毫秒值。例如,剩餘 48 小時 timeleft-ms="172800000"

offset-seconds (選填)

一個正數或負數,表示要從 end-date 新增或減去多少秒。例如,offset-seconds="60" 會在結束日期新增 60 秒。

when-ended (選填)

指定計時器在達到 0 秒時是否停止。值可以設定為 stop (預設值) 以指示計時器在 0 秒時停止,且不會超過最終日期,或設定為 continue 以指示計時器應在達到 0 秒後繼續。

locale (選填)

每個計時器單位的國際化語言字串。預設值為 en (英文)。

支援的值

代碼 語言
de 德文
en 英文
es 西班牙文
fr 法文
id 印尼文
it 義大利文
ja 日文
ko 韓文
nl 荷蘭文
pt 葡萄牙文
ru 俄文
th 泰文
tr 土耳其文
vi 越南文
zh-cn 簡體中文
zh-tw 繁體中文

biggest-unit (選填)

允許 amp-date-countdown 元件根據指定的 biggest-unit 值計算時間差。例如,假設剩下 50 天 10 小時,如果 biggest-unit 設定為 hours,則結果會顯示剩下 1210 小時

  • 支援的值:dayshoursminutesseconds
  • 預設值:days

count-up (選填)

包含此屬性以反轉倒數方向,改為向上計數。這對於顯示自過去目標日期以來經過的時間非常有用。若要在目標日期過去後繼續倒數,請務必包含 when-ended 屬性並將值設為 continue。如果目標日期在未來,amp-date-countdown 將顯示遞減 (朝向 0) 的負值。

請注意,屬性名稱與 0.1 不同,後者使用 data-count-up 屬性來切換此功能。此功能的行為與 0.1 相同。

活動

amp-date-countdown 元件公開下列事件,您可以使用 AMP on-syntax 觸發

逾時

當計時器逾時時。為了使此動作正常運作,when-ended 必須設定為 stop。您只能在計時器逾時時執行低信任度動作,例如 amp-animationamp-video 動作。這是為了強制執行 AMP 的 UX 原則,即不允許在沒有明確使用者動作的情況下重新排版頁面內容。|

範例:示範逾時事件的用法

<h1 id="sample">
  When Timer hits 0, will hide the timer itself and hide this message.
</h1>

<amp-animation id="hide-timeout-event" layout="nodisplay">
  <script type="application/json">
    {
      "duration": "1s",
      "fill": "both",
      "selector": "#ampdate, #sample",
      "keyframes": {"visibility": "hidden"}
    }
  </script>
</amp-animation>
<amp-date-countdown
  id="ampdate"
  end-date="2018-07-17T06:19:40+08:00"
  on="timeout: hide-timeout-event.start"
  height="400"
  width="400"
  when-ended="stop"
  locale="en"
>
  <template type="amp-mustache">
    <h1>Countdown Clock</h1>
    <div>
{{dd}} : {{hh)) : {{mm}} : {{ss}}    </div>
  </template>
</amp-date-countdown>

呈現為

需要更多協助嗎?

您已閱讀此文件十幾次,但它並未真正涵蓋您的所有問題?也許其他人也有相同的感受:在 Stack Overflow 上與他們聯繫。

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

AMP 專案強烈鼓勵您的參與和貢獻!我們希望您能成為我們開放原始碼社群的持續參與者,但我們也歡迎您針對您特別熱衷的問題做出一次性的貢獻。

前往 GitHub