amp-sidebar
簡介
amp-sidebar
元件提供一種方式來顯示旨在臨時存取的 meta 內容(導覽連結、按鈕、選單等)。側邊欄可以透過按鈕點擊來顯示,而主要內容在視覺上保持在下方。但是,接受媒體查詢的可選屬性可用於在網站的其他部分顯示 meta 內容。子 <nav toolbar="(media query)" toolbar-target="elementID">
將建立 toolbar
元素,允許在主要內容的其他部分顯示側邊欄中的內容。
toolbar
元素的效果。在此範例中,最好透過將視窗從行動裝置大小調整為桌面大小來檢視 toolbar
元素。設定
匯入 amp-sidebar
元件。
<script async custom-element="amp-sidebar" src="https://cdn.ampproject.org/v0/amp-sidebar-0.1.js"></script>
基本用法
amp-sidebar
應該是 <body>
的直接子元素。它必須具有 nodisplay
的版面配置。amp-sidebar
支援以下動作:toggle
、open
和 close
。
<amp-sidebar id="sidebar" class="sample-sidebar" layout="nodisplay" side="right">
<h3>Sidebar</h3>
<button on="tap:sidebar.close">Close sidebar</button>
<button on="tap:sidebar.toggle">Toggle sidebar</button>
</amp-sidebar>
<button on="tap:sidebar.toggle">Toggle sidebar</button>
<button on="tap:sidebar.open">Open sidebar</button>
工具列
toolbar
允許 amp-sidebar
內的元素顯示在 <body>
的其他部分。這對於響應式設計非常有用,包括導覽列、社交頁尾等。
toolbar
元素有其自己的要求
- 側邊欄可以透過新增具有
toolbar
屬性和toolbar-target
屬性的nav
元素來實作工具列。 nav
元素必須是<amp-sidebar>
的子元素,並遵循以下格式:<nav toolbar="(media-query)" toolbar-target="elementID">
。- 包含 toolbar 屬性的
nav
必須僅包含單個<ul>
元素,該元素包含<li>
元素。 <li>
元素可以包含任何有效的 HTML 元素(AMP 支援)或<amp-sidebar>
支援的任何 AMP 元素。- 僅當
toolbar
屬性 media-query 有效時,才會套用工具列行為。此外,頁面上必須存在具有toolbar-target
屬性 id 的元素,才能套用工具列。
<amp-sidebar id="sidebar-left" class="sample-sidebar" layout="nodisplay" side="left">
<h3>Sidebar</h3>
<button on="tap:sidebar-left.close">Close sidebar</button>
<nav toolbar="(min-width: 784px)" toolbar-target="target-element-left">
<ul>
<li>Nav item 1</li>
<li>Nav item 2</li>
</ul>
</nav>
<ul>
<li>Nav item 3</li>
<li>Nav item 4</li>
</ul>
</amp-sidebar>
<button on="tap:sidebar-left.toggle">Toggle sidebar</button>
<div id="target-element-left">
</div>
樣式化工具列
<amp-sidebar>
元素內的 toolbar
元素將根據 toolbar-target
元素是否顯示或隱藏,將類別套用至該元素。這對於在 toolbar
元素和 toolbar-target
元素上套用不同的樣式非常有用。這些類別為 amp-sidebar-toolbar-target-shown
和 amp-sidebar-toolbar-target-hidden
。當 toolbar-target
元素顯示時,類別 amp-sidebar-toolbar-target-shown
會套用至 toolbar
元素。當 toolbar-target
元素隱藏時,類別 amp-sidebar-toolbar-target-hidden
會套用至 toolbar
元素。
.amp-sidebar-toolbar-target-shown { display: none; }
<amp-sidebar id="sidebar-right" class="sample-sidebar" layout="nodisplay" side="right">
<h3>Sidebar</h3>
<button on="tap:sidebar-right.close">Close sidebar</button>
<nav toolbar="(min-width: 784px)" toolbar-target="target-element-right">
<ul>
<li>Nav item 1</li>
<li>Nav item 2</li>
</ul>
</nav>
<ul>
<li>Nav item 3</li>
<li>Nav item 4</li>
</ul>
</amp-sidebar>
<button on="tap:sidebar-right.toggle">Toggle sidebar</button>
<div id="target-element-right">
</div>
桌面版側邊欄
amp-sidebar 可以用作主頁上的永久導覽列。工具列目標(aside 元素)定義為頁面上的左側導覽元素。
<main> <aside id="target-element-desktop" class="desktop-sidebar">... </aside> </main>
使用媒體查詢,只有當瀏覽器視窗寬度大於特定寬度時,工具列目標才會可見。在目標的父元素上使用 CSS flex 允許我們將目標放置在頁面的左側。
@media (min-width: 784px) { main { display: flex; flex-direction: row; } }
amp-sidebar 使用導覽工具列目標將其內容填入此導覽元素。它透過將 id
屬性(在上面的 aside 元素中定義)與 nav
元素內的 toolbar-target
屬性進行比對來識別導覽工具列目標。
<amp-sidebar id="sidebar-desktop" class="desktop-sidebar" layout="nodisplay" side="left">
<h1>Desktop Sidebar</h1>
<button on="tap:sidebar-desktop.close">Close sidebar</button>
<nav toolbar="(min-width: 784px)" toolbar-target="target-element-desktop">
<ul>
<li>Nav item A</li>
<li>Nav item B</li>
<li>Nav item C</li>
<li>Nav item D</li>
</ul>
</nav>
</amp-sidebar>
如果此頁面上的說明未涵蓋您的所有問題,請隨時與其他 AMP 使用者聯繫,討論您的確切使用案例。
前往 Stack Overflow 未解釋的功能?AMP 專案強烈鼓勵您的參與和貢獻!我們希望您能成為我們開放原始碼社群的持續參與者,但我們也歡迎針對您特別感興趣的問題提供一次性貢獻。
在 GitHub 上編輯範例-
由 @juliantoledo 撰寫