Sticky And Fixed Elements

dembrandt/dembrandt-skills/skills/sticky-and-fixed-elements

作者 dembrandt20de5f225ea7cffe2a721ac18c1077a92769a013無授權條款68 個星標收錄於 2026年10月9日更新於 2026年10月9日儲存庫今天更新

Sticky headers, bottom toolbars, floating action buttons and pinned table headers. Use when deciding what stays on screen while the user scrolls.

AI 產生的概覽

指導在黏性(sticky)與固定(fixed)CSS 定位之間做選擇,用於頁首、工具列、浮動按鈕與表格標題。

功能
此技能針對持久顯示的介面元素,說明何時該使用 CSS position: sticky、何時該使用 position: fixed。內容涵蓋全域導覽頁首、行動裝置底部工具列與浮動操作按鈕、黏性表格標題、z-index 權杖慣例,以及頁面固定層數量的上限。產出的是設計決策、CSS 片段與檢閱清單,而非可執行的程式碼。
適用情境
當需要決定使用者捲動時哪些元素要維持可見時使用,例如判斷頁首該用黏性還是固定定位。也適合設計行動裝置底部工具列、加入浮動操作按鈕,或讓表格標題保持黏性。
執行需求
不需要任何工具、套件或憑證;僅為說明性內容,不附帶指令碼。

Sticky and Fixed Elements

position: fixed vs position: sticky

PropertyBehaviourUse for
position: fixedRemoved from document flow. Always stays at the same viewport position regardless of scroll or parent.Global navigation header, bottom toolbar, floating action button
position: stickyStays in document flow until it hits its scroll threshold, then locks in place. Returns to flow when parent scrolls past.Table column headers, section headings in a long list, in-page toolbars within a scroll container

Prefer sticky over fixed when the element belongs to a specific section or scroll context. Fixed elements sit above everything and affect the entire viewport — use them only for truly global UI.

Top — Navigation Header

The global navigation header is the most common fixed element. It should:

  • Remain visible at all times so the user can always navigate away
  • Be as thin as possible to maximise content area — 48–64px is a common range
  • Have a background and shadow so content scrolling beneath it does not bleed through
  • On scroll, a subtle shadow (--shadow-sm) signals that content is behind it
css
.site-header {  position: fixed;  top: 0;  left: 0;  right: 0;  height: var(--header-height);  background: var(--color-surface);  box-shadow: var(--shadow-sm);  z-index: var(--z-header);}

Compensate for the fixed header with matching top padding on the page body:

css
body { padding-top: var(--header-height); }

Bottom — Toolbar on Mobile

On mobile, the bottom of the screen is the most reachable area with one thumb. A persistent bottom toolbar is the natural home for:

  • Primary navigation (bottom tab bar — iOS and Android convention)
  • Contextual actions for the current view (edit, share, delete)
  • A floating action button (FAB) for the single most important action

Bottom toolbars should:

  • Respect the safe area inset on devices with a home indicator: padding-bottom: env(safe-area-inset-bottom)
  • Be visually separated from content (background fill, top border, or shadow)
  • Contain 3–5 items maximum — more than 5 should move to a menu or a different pattern
  • Use icons with labels for navigation tabs, or icons alone for contextual toolbars (with tooltips)

On desktop, bottom toolbars are uncommon. Status bars, editor toolbars, and command palettes are the desktop equivalent — these are typically position: fixed at the bottom or position: sticky within their scroll container.

Sticky Table Headers

For data tables inside a scroll container, sticky column headers prevent the user from losing track of what each column means.

css
thead th {  position: sticky;  top: 0;  background: var(--color-surface);  z-index: 1;}

If the table also has a sticky first column (for row identifiers), the top-left cell needs both top: 0 and left: 0, and a higher z-index to sit above both the header row and the sticky column.

Stacking and Z-index

Sticky and fixed elements create stacking context. Define z-index as named tokens, not arbitrary numbers:

css
--z-base:       0;--z-dropdown:   100;--z-sticky:     200;--z-header:     300;--z-modal:      400;--z-toast:      500;

Every fixed or sticky element must declare its z-index explicitly using a token. Avoid ad-hoc values like z-index: 9999 — they signal an unmanaged stacking context and will eventually conflict.

How Many Fixed Layers Is Too Many

Each fixed layer removes space from the content area and adds visual complexity. A page should rarely need more than:

  • 1 fixed header (top)
  • 1 fixed toolbar or bottom nav (bottom, mobile)
  • 1 floating action button or contextual overlay

A fixed header + fixed bottom toolbar + floating button + sticky sidebar + sticky table header all simultaneously is too many layers. Consolidate where possible.

Review Checklist

  • Is sticky used for section-scoped elements and fixed only for truly global UI?
  • Does the fixed header compensate for its height with body padding?
  • Does the bottom toolbar respect env(safe-area-inset-bottom) on mobile?
  • Are all z-index values defined as named tokens, not arbitrary numbers?
  • Is the total number of simultaneous fixed layers minimal — header + one bottom element maximum in most cases?
  • Does content scrolling behind a fixed element not visually bleed through (background + shadow on the fixed element)?

來源與署名

來源:dembrandt/dembrandt-skills位於skills/sticky-and-fixed-elements提交20de5f2

授權條款: 無授權條款

內容歸原作者所有。SourceWeft 從公開儲存庫中收錄這些內容。

檢舉或申請下架