Communitygithub.com

頁面佈局設計

用於排版或重新設計網頁區塊時使用——區塊間距、字級系統、卡片網格、統計與數字區塊、標誌條、首屏——或當頁面技術上可行但看起來像是套版、不均衡、鬆散或未完成時。

頁面佈局設計 是什麼?

這個技能的核心在於解決網頁佈局中最常見但最不易察覺的問題:節奏。許多頁面在排版和顏色上都無可挑剔,但因為垂直間距是逐區塊決定的,導致各區塊之間無法對齊,看起來像是套版。此技能提供了一套系統化的方法,首先定義一個統一的間距尺規、字級系統和區塊系統,然後透過兩個關鍵的 CSS 變數(`--sec` 和 `--blk`)來驅動所有區塊間和區塊內的間距,將調整一個鬆散頁面的工作從修改四十個數值簡化為修改兩個。技能同時提供了卡片網格、統計數字區塊、標誌條等常見元件的具體實作準則,並包含一個可執行的檢查清單。此技能適用於任何 Web 開發框架(如 React、Vue、Astro、Next.js)或純 CSS 專案,其核心是建立一套可重複使用的設計原則與 CSS 自訂屬性。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/igal-commits/landing-page-skills/tree/HEAD/skills/designing-page-layout

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

頁面佈局設計 是做什麼的?

概述

多數頁面失敗在節奏,而非創意。字體沒問題、顏色沒問題,但看起來還是像套版,因為垂直間距是逐區塊決定的,導致沒有任何東西對齊。

核心原則:在開始設計任何東西之前,先選定一個間距尺規、一個字級系統和一個區塊系統,之後絕不引入任何不在這套系統上的數值。

區塊系統

內容區塊共用少數幾個數值。固定視角(pinned)場景是例外。

部分規則
區塊標題每個內容區塊使用一種尺寸(例如桌機 48,手機 38)
左邊緣一個邊緣值,與導航標誌的左邊緣相等。如果使用了適應高度的尺規,邊緣會移動,因此需要測量它
標籤標題上方使用一種藥丸形狀的樣式
卡片一種圓角、一種邊線、一種色調。絕不要同時使用邊框、陰影和填充
結尾卡片標題放在網格行上,按鈕放在下一行,不加額外句子

固定視角(pinned)與捲動擦除(scrubbed)場景保留它們自己的舞台尺寸。它們本身是設計成佔滿視口高度的,其空白區域是捲動跑道。在沒有重新錨定每個以百分比定位的元素之前,不要縮小固定舞台。

一個頁面中,如果每個區塊都有自己的標題尺寸、自己的左邊緣和自己風格的卡片,看起來就會像拼湊而成的。這張表格就是用來避免這個問題的。

間距節奏

間距尺規只決定一次。一個 4px 為基礎的幾何級數能涵蓋所有情況:

0.4  0.8  1.6  2.4  3.2  4.8  6.4  8  12  16 rem

所有區塊間距透過兩個變數來驅動:--sec(區塊之間)和 --blk(區塊內部的區塊)。要收緊一個鬆散的頁面,只需更改兩個數字,而不是四十個。在一個頁面上,桌機使用 48 和 40 單位、手機使用 36 和 28 單位,將文件高度減少了約 10%。

當你收緊節奏時,元素尺寸不會改變。 卡片、字體、標誌、按鈕:保持原有的設計。透過比較新舊構建的元件尺寸來證明這一點。

區塊內距是頁面最容易出錯的地方。審計每一個交界處,而不是每個區塊:

交界處總間距視覺感受
兩個不相關的區塊200-240px不同的章節
一個接續上方區塊的區塊40-80px同一章節的兩個部分
滿版媒體與一個區塊相接0一個切分

測量上方區塊的 padding-bottom 與下方區塊的 padding-top 的總和。一個頁面如果出現 120/60、64/20、24/0 和 0/120 的組合,會產生 180、84、24 和 120 的間距,完全沒有邏輯。使用者會感覺到這種鬆散,但無法具體指出問題。

在單色背景上,超過約 240px 的間距需要放點東西。要嘛收緊它,要嘛在裡面放一個行動呼籲(CTA)。

首屏

英雄區塊的大小要讓下一個區塊能在第一屏顯示出來。使用 clamp(620, 100svh - 150, 900) 單位可以讓證明條(proof strip)在一次滾動後就顯現。一個充滿視口且下方沒有任何東西的英雄區塊,會隱藏頁面所依賴的證明。

共享元件屬於網站

一個存在於線上市場頁面上的導航列、頁尾或按鈕,就是既定的設計。不要在一個新頁面上重新設計它。當它在新的頁面上看起來不同時,原因幾乎總是來自頁面級別的樣式覆蓋。請比對線上市場頁面的計算後樣式,並移除這些覆蓋樣式,且只在洩漏的斷點範圍內作用。

字級系統

最多使用兩種字體族:一種顯示用,一種內文用。顯示字體中的數字看起來像設計過的;普通內文字體中的數字看起來像數據。

對於任何與其他數字排在同一行中的數字,務必設定 font-variant-numeric: lining-nums tabular-nums。沒有這項設定,「3,000」和「500,000+」就不會對齊,而且你無法知道原因。

負的字母間距(letter-spacing)隨尺寸變化:在顯示尺寸下約為 -0.02em,在內文尺寸下為 0,在大寫眉題上則為正的 0.08em。

精確匹配設計稿中的字體寬度。關於光學尺寸的陷阱,請參閱 extracting-figma-truth。

卡片與網格

最常見的卡片錯誤是不均勻的內容導致不均勻的卡片。

修改前修改後原因
.card { padding: 2rem } 在網格中在網格上加上 align-items: stretch,並在卡片上加上 height: 100%否則卡片的高度會等於其內容的高度
內容由上到下流動在必須位於底部的元素上使用 margin-top: auto將指標或 CTA 固定到所有卡片共享的基準線上
標籤在一張卡片中換行到 1 行,在另一張中換行到 2 行在標籤上設定等於 2 行高度的 min-height保持每張卡片的基準線相同
<img> 帶有內建尺寸在圖片外包一層帶有 aspect-ratio 和 object-fit: cover 的容器一個由不同長寬比圖片組成的網格,根本不是一個網格
卡片背後使用灰色填充白色搭配 1px 細線填充看起來像佔位符,細線看起來像經過設計的

統計與數字區塊

一個數字區塊由三個部分組成,順序固定:來源或標籤在上方,數字在中間,說明在下方。數字是區塊中最大的元素,且行中的每個數字共享一個基準線。

  • 絕不要把非數字放在數字的位置上。在一行包含「150+」和「3,000」的項目中,放入「創意營運」會看起來像一個錯誤。要嘛找到對應的數字,要嘛將那個事實移到內文中。
  • 一個換行成兩行的數字會破壞整行。「6 週到 24 小時」應變成「24h」,其餘部分放入說明中。
  • 將說明限制在兩行內。如果需要三行,代表說明正在取代數字的功能。

標誌條

標誌的大小根據視覺重量來決定,而不是根據邊界框。一個堆疊式標章、一個方形徽章和一個單行文字標誌如果被設定成相同的 CSS 高度,看起來會有三種不同的錯誤。

從以下數值開始:堆疊式標章 44px,方形徽章 40px,文字標誌 22px,然後用肉眼調整。將每個標誌標準化為一種墨水顏色。混合的標誌顏色會讓條帶看起來像是拼湊出來的。只有經過授權的標誌才能放入條帶中(請參閱 writing-claims-that-hold)。

共享 CSS 與手機溢位

為桌機元件撰寫的寬度規則,例如 width: 37rem !important,可能會使整個文件的寬度超過手機螢幕寬度(428 對 390)。症狀是右邊緣出現一條白色條紋。在 390 寬度下檢查 scrollWidth 和 clientWidth,並將固定寬度限制在它們原本被設計的斷點範圍內。

套版頁面的跡象

  • 每個區塊都置中
  • 所有區塊的內距都是 120px,無視其之間的關係
  • 卡片同時具備邊框、陰影和背景填充
  • 標題使用比內文字體更粗的字重來設定
  • 數字使用內文字體
  • 使用了兩個非品牌色的強調色
  • 一個頁面上同時出現了 4、8、12 和 16 等不同的 border-radius 數值

檢查清單

  • 每個間距數值都在尺規上;區塊間距使用兩個變數驅動
  • 每個區塊交界處的間距都是經過設計的,且落在三個範圍之一
  • 所有內容區塊共用一種標題尺寸、一種左邊緣、一種標籤風格、一種卡片風格
  • 下一個區塊能在首屏顯示出來
  • 共享元件與線上市場頁面的計算後樣式一致
  • 網格中的卡片高度相同,並共享內部基準線
  • 網格中的所有媒體共享一個 aspect-ratio
  • 數字使用等寬襯線數字(tabular lining figures)
  • 標誌按視覺重量調整大小且使用單一墨水顏色
  • 在 390 寬度下沒有水平溢位
  • 沒有超過 240px 且不含任何內容的間距

Individual skills in this repo

This repo contains 5 individual skills — each has its own dedicated page.

相關技能