Community影像github.com

Material Design

套用 Material Design 樣式(2014年至今)來生成使用者介面或圖形佈局。當使用者提及 material design、material ui、google material、elevation、floating action button、fab 等關鍵字時載入。

Material Design 是什麼?

這個技能讓 AI 代理能產出遵循 Google 2014 年推出的 Material Design 規範的使用者介面。它將數位表面視為有厚度與陰影的紙張,透過 8dp 網格、大膽色彩、定義好的高度層級與流暢動畫來呈現視覺層級。支援 Android、管理後台以及元件密集的網頁應用程式,不適合需要強烈品牌特色或純 2D 風格的編輯型頁面。技能內含詳細的設計規則,涵蓋間距、排版(Roboto 字體)、色彩調色盤(主色與強調色)、陰影投射以及互動回饋(漣漪效果、曲線移動)。也提供了 CSS 變數、Tailwind CSS 類別樣板與基於 SVG 的圖示系統,讓開發者能快速實作。如果使用者想要更平面或更擬真的變化,這個技能會指引到相關的設計風格(Flat Design 或 Skeuomorphism)。

相容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/musicalbee/design-ontology/tree/HEAD/skills/material-design

Installed? Explore more 影像 skills: steipete/songsee, affaan-m/frontend-design, mattpocock/improve-codebase-architecture · View all 6 →

在你喜歡的 AI 中提問

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

說明文件

Material Design 是做什麼的?

數位表面就像有厚度與陰影的紙張,深度與動態說明了介面的層級結構。

一個由平坦彩色表面組成的系統,位於定義好的高度,並從左上角的主光源投射陰影;搭配大膽的色彩、8dp 網格以及有目的的動態。Google 在 2014 年 6 月的 I/O 大會上發表。

時間: 2014–至今 · 時代: 觸控螢幕 · 領域: 平面與 UI 設計 · 別名: Material、Google Material、Material 2

何時載入此技能

當使用者提及以下關鍵字時載入:「material design」、「material ui」、「google material」、「elevation」、「floating action button」、「fab」、「android style」、「ripple effect」、「app bar」、「paper and ink」、「md2」。

適用於:Android 應用程式、管理儀表板、有許多元件的網頁應用程式、設計系統、生產力工具。

請勿使用於:

  • 品牌需要獨特風格時,因為預設外觀明顯來自 Google。
  • 頁面為編輯導向且互動元件較少時。
  • 設計需要完全無陰影的純 2D 風格時。

系統指令

當使用 Material Design 產生 UI 或圖形佈局時,你必須:

  1. 將每個表面視為 1dp 厚的紙張,不會彎曲、不會伸縮變形、也不會穿過其他表面。
  2. 使用 dp 高度展現層級:頁面為 0、卡片為 1、應用程式列為 4、浮動按鈕靜止時為 6、選單為 8、導覽抽屜為 16、對話框為 24。
  3. 每個佈局都建立在 8dp 網格上,小型文字與圖示對齊使用 4dp,觸控目標為 48dp。
  4. 使用主色與強調色的對比色調,狀態列使用主色的 700 色階,應用程式列使用 500 色階。
  5. 使用 Roboto 字體,依照 12、14、16、20、34、45 與 56sp 的定義比例,並採用大字級。
  6. 為每次觸控提供回應:一個從觸控點開始、持續 300ms 擴散的圓形漣漪。
  7. 使用曲線路徑移動元素,搭配先快後慢的緩動曲線,且每個動畫都要解釋元素的來源。

護欄

以下每一行都違反了此風格。在回覆前,請檢查你的輸出是否符合這份清單。

  • 永不: 在表面使用漸層與紋理。
  • 永不: 沒有一致高度或不同光線方向的陰影。
  • 永不: 相同高度重疊的表面。
  • 永不: 小於 48dp 的觸控目標。
  • 永不: 彩色背景上的彩色文字低於 4.5:1 對比度。
  • 永不: 沒有動畫或漣漪回饋的即時狀態改變。
  • 永不: 一個畫面超過一個浮動動作按鈕。

向量設定檔

軸線分數1 分代表5 分代表
裝飾性■■□□□ 2/5純粹極簡極致繁複
立體感■■■□□ 3/5嚴格 2D完整 3D / 空間
網格剛性■■■■□ 4/5混亂 / 有機嚴謹數學網格
擬物寫實■■□□□ 2/5抽象數位擬真材質
字體表現力■■□□□ 2/5中性 / 隱形實驗 / 說明性

請維持這些分數。如果一個請求使某個軸線偏離 2 分或以上,則表示你已脫離此風格:請前往「風格演進備援」。

空間與網格邏輯

  • 網格機制: 一個 8dp 基準網格,圖示與文字使用 4dp;手機為 4 欄網格搭配 16dp 邊距,平板為 8 欄網格搭配 24dp 邊距,桌面為 12 欄網格;應用程式列在手機上為 56dp,桌面上為 64dp。
  • 留白比例: 25–40% 的表面保持空白;間距比例為 4、8、16、24、32、48、56dp,卡片內距為 16dp。
  • 對齊規則: 在包含頭像的清單中,內容從左側邊緣對齊 72dp 的關鍵線;否則對齊 16dp 的關鍵線。浮動動作按鈕位於距離右側與底部邊緣 16dp 處。
  • 容器幾何: 卡片與按鈕使用 2dp 的圓角半徑;浮動動作按鈕為 56dp 的圓形,迷你按鈕為 40dp;對話框最小寬度為 280dp。

字體排印

  • 分類: 新無襯線體 · 人文無襯線體
  • 字距: 顯示尺寸(34sp 及以上)使用 0em 到 -0.01em;內文使用 +0.01em;按鈕為大寫並使用 +0.09em。
  • 行高: 標題 1.2;內文 1.4 到 1.5(14sp 搭配 20dp 行高);清單文字 24dp 搭配 16sp。
  • 層級規則:
    • 使用 12、14、16、20、34、45 與 56sp 的比例,不使用介於這些數值之間的大小。
    • 使用 medium(500)字重作為標題與按鈕,regular(400)作為內文,light(300)作為 45sp 及以上的顯示尺寸。
    • 表面上的文字設定為:主要文字為 87% 黑色,次要文字為 54% 黑色,停用文字為 38% 黑色。
    • 按鈕標籤為大寫,14sp,字重 500。

字型搭配

顯示字型內文字型備註
RobotoRobotoMaterial 1 和 2 的系統字型,使用單一字體家族,重量從 300 到 900。
Roboto CondensedRoboto壓縮顯示字型,適合密集的標題,搭配標準內文字型。
Noto SansNoto Sans非拉丁文字的備援字型,具有相同的重量與度量。

色彩與光照

  • 色板結構: 一個主色(包含其 500 與 700 色階)、一個來自 A200 到 A400 範圍的強調色,以及中性灰色;主色覆蓋應用程式列與 10% 到 20% 的表面。
  • 對比規則: 內文至少保持 4.5:1,大文字至少保持 3:1;白色文字在 Indigo 500 上達到 7.5:1,在 Pink A200 上達到 3.4:1,僅適用於 18sp 以上的文字。
  • 表面處理: 不透明、純色、無漸層、無紋理的平面填色;遮罩在對話框後方使用 32% 不透明度的黑色。
  • 光線與陰影: 來自上方的主光源與柔和的環境光;每個陰影都有半影區、本影區與環境層,其模糊與偏移量隨高度增加。

調色盤

名稱十六進位顏色角色
表面色#FFFFFF卡片與頁面表面
背景色#FAFAFA頁面背景
Indigo 500#3F51B5主色與應用程式列
Indigo 700#303F9F狀態列
Pink A200#FF4081強調色與浮動動作按鈕
Grey 900#21212187% 不透明度文字

材質與紋理

  • 表面模擬: 數位紙張:一個 1dp 厚的平坦紙張,會投射陰影,但沒有紋理、沒有斜角、沒有材質。
  • 邊框規則: 表面沒有輪廓線;分隔線為 1px 黑色 12% 不透明度,從邊緣內縮 72dp 或 16dp;文字欄位使用 1px 底部線條,聚焦時變為 2px。
  • 模糊與高度: 高度陰影:1dp 為 0 1px 3px 20% 加上 0 1px 1px 14%;4dp 為 0 4px 5px 14% 加上 0 1px 10px 12%;12dp 為 0 9px 12px 14%;系統有 0 到 24dp 共 25 個層級。

裝飾與圖示

  • 圖示: 系統圖示為 24dp,活躍區域 20dp,筆畫粗細 2dp,方形端點搭配 2dp 圓角,實心填充,單色,54% 黑色。
  • 插圖: 使用調色盤中的平面向量形狀,與全版攝影搭配 20% 到 40% 的遮罩;無輪廓線、無透視。
  • 裝飾元素: 浮動動作按鈕 · 漣漪 · 高度陰影 · 色塊應用程式列 · 全版主圖 · 卡片

動態與互動性

  • 原生於螢幕: 是
  • 轉場物理: 表面沿 Z 軸與螢幕平面以曲線路徑移動;元素快速加速並柔和減速,共享元素從起點移動到終點。
  • 緩動曲線: cubic-bezier(0.4, 0, 0.2, 1)
  • 持續時間(毫秒): 300
  • 懸停與點擊: 懸停時添加 4% 黑色覆蓋層;按下時顯示從觸控點擴散的 12% 黑色漣漪,持續 300ms;凸起按鈕在按下時從 2dp 提升到 8dp。

程式碼與記號入門

在根元素上設定 data-style="material-design" 並貼上記號。檔案 tokens.css 包含相同的記號與一組參考規則。

[data-style="material-design"] {
  --color-bg: #FAFAFA;
  --color-surface: #FFFFFF;
  --color-text: rgba(0, 0, 0, 0.87);
  --color-muted: rgba(0, 0, 0, 0.54);
  --color-primary: #3F51B5;
  --color-accent: #FF4081;
  --color-border: rgba(0, 0, 0, 0.12);
  --font-sans: "Roboto", "Noto Sans", "Helvetica Neue", Arial, sans-serif;
  --font-display: "Roboto", "Noto Sans", "Helvetica Neue", Arial, sans-serif;
  --border-radius: 2px;
  --border-width: 1px;
  --shadow-elevation: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
  --backdrop-filter: none;
  --space-unit: 8px;
  --ease: cubic-bezier(0.4, 0, 0.2, 1);
  --duration: 300ms;
  --color-primary-dark: #303F9F;
  --shadow-1dp: 0 1px 3px 0 rgba(0, 0, 0, 0.2), 0 1px 1px 0 rgba(0, 0, 0, 0.14), 0 2px 1px -1px rgba(0, 0, 0, 0.12);
  --shadow-24dp: 0 11px 15px -7px rgba(0, 0, 0, 0.2), 0 24px 38px 3px rgba(0, 0, 0, 0.14), 0 9px 46px 8px rgba(0, 0, 0, 0.12);
  --touch-target: 48px;
  --color-on-bg: #212121;
  --color-on-surface: #212121;
  --color-on-primary: #FAFAFA;
  --color-on-accent: #212121;
  --color-muted-on-bg: #737373;
  --color-muted-on-surface: #757575;
  --color-link: #3F51B5;
  --color-link-on-surface: #3F51B5;
  --display-weight: 300;
  --subhead-weight: 500;
  --body-weight: 400;
  --strong-weight: 500;
  --label-weight: 500;
  --display-tracking: 0em;
  --display-leading: 1.15;
  --display-case: none;
  --body-leading: 1.5;
  --body-size: 16px;
  --icon-stroke: 2;
}

Tailwind 模式:

元素Classes
頁面min-h-screen bg-[#FAFAFA] font-sans text-black/[0.87] antialiased
應用程式列flex h-14 md:h-16 items-center bg-[#3F51B5] px-4 text-xl font-medium text-white shadow-[0_2px_4px_-1px_rgba(0,0,0,0.2),0_4px_5px_0_rgba(0,0,0,0.14),0_1px_10px_0_rgba(0,0,0,0.12)]
卡片rounded-sm bg-white p-4 shadow-[0_1px_3px_0_rgba(0,0,0,0.2),0_1px_1px_0_rgba(0,0,0,0.14),0_2px_1px_-1px_rgba(0,0,0,0.12)]
按鈕h-9 min-w-[64px] rounded-sm bg-[#3F51B5] px-4 text-sm font-medium uppercase tracking-[0.09em] text-white shadow-md transition-shadow duration-300 ease-[cubic-bezier(0.4,0,0.2,1)] hover:shadow-lg active:shadow-xl
fabh-14 w-14 rounded-full bg-[#FF4081] text-white shadow-[0_3px_5px_-1px_rgba(0,0,0,0.2),0_6px_10px_0_rgba(0,0,0,0.14),0_1px_18px_0_rgba(0,0,0,0.12)]

視覺包

此風格的圖片與圖示為檔案。請直接使用它們,或將它們作為規格閱讀,並用相同的語言自行繪製。

檔案內容
pack/hero.svg主圖版,800 x 600。一張符合此風格視覺語言的抽象圖片。
pack/pattern.svg圖案磚,80 x 80。可雙向重複。
pack/icons.svg圖示拼合圖:home、search、heart、star、bell、user、mail、calendar、image、bolt、play、check、close、sliders。
  • 圖示: 實心、筆畫 2、24px 欄位、平頭端點、圓角連接、無容器。使用:<svg class="icon"><use href="pack/icons.svg#home"/></svg>。圖示使用 currentColor。
  • 圖示家族: 拼合圖取自 Material Symbols(Baseline, filled),由 Google 提供,授權 Apache 2.0。原因:此風格本身的系統填充圖示集,位於其 24dp 網格上。它是一個用於示範的開源替代品。對於正式產品,請使用品牌的圖示庫,並根據以下規則選擇家族。
  • 顯示文字: 字重 300、字距 0em、行高 1.15、無大小寫轉換。
  • 字重: 顯示 300、副標題 500、內文 400、粗體文字 500、標籤與按鈕 500。此風格僅使用 3 個字重(300、400、500),沒有其他。顯示字重比內文字重輕 100,因此由大小來承載層級。重點在於字重:較重的字是重點,因此各字重之間的差異很明顯。
  • 內文: 16px,行高 1.5。
  • 頁面: 主圖分割、左對齊、常規密度、強調傾斜 0°。
  • 文字顏色: --color-text 僅用於主要閱讀區域。在每個區域,使用其對應的記號:--color-on-bg、--color-on-surface、--color-on-primary、--color-on-accent。

如何選擇圖示包

圖示包是圖片的字體。請像選擇文字字體一樣謹慎選擇。這些規則適用於開源套件與授權庫。

  1. 筆畫與主幹匹配。 將圖示與其文字大小的內文並列。圖示的線條與字母的主幹具有相同的粗細。
  2. 端點與角落跟隨圓角記號。 平頭端點與斜接連接搭配半徑為零。圓頭端點與圓角連接搭配柔和的半徑。
  3. 填充模式跟隨時代技術。 印刷時代使用實心形態。具有深度的螢幕時代會填充並為形態添加陰影。當前的產品介面則繪製輪廓。
  4. 隱喻不應比風格更年輕。 每個圖片都是該時代已知的物件。帶有較晚時代隱喻的圖示會破壞風格。
  5. 一個家族,一個網格。 所有圖示來自一個家族與一個變體,繪製在一個欄位上。請勿在同一個表面上混合不同的家族。
  6. 家族涵蓋產品。 在決定之前,列出產品所需的每個概念。如果一個家族缺少其中任何一個圖示,那就是錯誤的家族。
  7. 顏色是記號。 圖示使用 currentColor。第二種色調來自記號,而非檔案。
  8. 授權允許使用。 閱讀套件的授權條款。在授權要求的地方給予註明。具有品牌的產品應使用其授權庫,並套用相同的規則來選擇家族。

風格演進備援

當使用者要求變化時,請勿即興創作。請朝此處命名的相鄰風格靠攏,並載入其技能。

  • 如果使用者要求更平面:朝向 flat-design(平面設計)。移除所有高度陰影,僅透過顏色區分表面,保留色彩調色盤與 8dp 網格。
  • 如果使用者要求更具質感:朝向 skeuomorphism(擬物化)。添加 5% 到 10% 的漸層、1px 的內緣高光與 5% 透明度的表面紋理;保留高度與佈局。
  • 如果使用者

…

[因翻譯而截斷]

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

相關技能