Communitygithub.com

byteTuto/網站響應式設計規則

確保 bytetuto.com 每個頁面都具有響應式設計(行動裝置優先,320 px → 1920 px,無水平滾動)。用於 site/ 中任何頁面、CSS、版面、圖片或元件的創建與修改,以及在合併影響顯示的 PR 之前。

網站響應式設計規則 是什麼?

這個技能(byteTuto/website)提供一個嚴格的響應式設計規則集,確保 bytetuto.com 在所有裝置上(從 320px 的小型 Android 手機到 1920px 的寬螢幕)都能完美顯示,無水平滾動、無內容溢出。它強制要求採用「行動裝置優先」的 CSS 策略,使用 `@media` 斷點(600px、900px、1200px)和 `clamp()` 進行流暢排版;圖片需同時指定 HTML `width`/`height` 與 CSS `max-width: 100%`;觸控目標至少 44×44 px;以及使用 `min-height: 100svh` 取代 `100vh`。支援的平台包括任何使用 HTML/CSS 的網頁專案(框架無關),通過 `python3 scripts/check_responsive.py` 腳本自動檢查 6 種參考尺寸的合規性,也會在 CI 中執行。這個技能對於需要維持嚴格響應式標準、避免佈局偏移(CLS)和關注無障礙性(WCAG)的團隊尤其有用。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/byteTuto/website/tree/HEAD/.claude/skills/site-responsive

在你喜歡的 AI 中提問

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

說明文件

網站永遠響應式

一個頁面只有通過 python3 scripts/check_responsive.py 才算完成(無水平滾動、無內容溢出螢幕、觸控目標夠大),測試涵蓋 6 種參考尺寸。此檢查也會在 CI 中執行:破壞響應式的 PR 無法部署。

參考寬度(全部需測試)

寬度情境
320 px小型 Android、iPhone SE 縮放模式
375 px標準 iPhone(目標 #1:受眾來自 TikTok)
414 px大螢幕手機
768 px平板直向
1024 px平板橫向 / 小型筆記型電腦
1440 px桌上型電腦

腳本測試的尺寸:320×640、375×667、414×896、768×1024、1024×600(低螢幕)、1440×900。

CSS 規則

  1. 行動裝置優先:基礎樣式針對 320 px,然後使用 @media (min-width: …) 擴展。斷點:600px、900px、1200px(其他地方不得使用魔術數字;元件可以使用 @container)。
  2. 無固定寬度大於 280 px 而不搭配 min() / max-width: 100%:使用 width: min(520px, 100%)。
  3. 流暢排版使用 clamp():標題 clamp(32px, 7vw, 72px),內文 最小 16 px(行動裝置上不得低於此值,否則 iOS 會放大輸入框)。
  4. 高度:使用 min-height: 100svh(不要用 100vh,後者會穿過行動裝置的網址列)。文字區塊禁止使用固定 height。
  5. 側邊邊距:行動裝置上使用 16 px 的排水溝(space-4),加上 env(safe-area-inset-left/right) 處理有瀏海的螢幕(viewport 已設定 viewport-fit=cover)。
  6. 長文字:對 URL、指令和檔案名稱使用 overflow-wrap: anywhere;程式碼區塊在區塊內部使用 overflow-x: auto,絕不能用在頁面層級。
  7. 網格:教學卡片使用 grid-template-columns: repeat(auto-fill, minmax(min(280px, 100%), 1fr))。
  8. 裝飾性元素(byte/spark 區塊、canvas)若溢出:使用 position: fixed 或父層設 overflow: clip,尺寸使用 min(vw, px)。
  9. 觸控:獨立按鈕和連結 ≥ 44 × 44 px(腳本最低限制 24 px,WCAG 2.2),兩個目標之間至少間隔 8 px。不可僅透過 :hover 提供資訊:需提供 :focus-visible 和觸控狀態。
  10. 影片與 iframe(YouTube):aspect-ratio: 16 / 9; width: 100%; height: auto; — TikTok 影片使用 9 / 16 並加上 max-width: 360px。

圖片

  • 在 HTML 中務必指定 width 和 height(避免版面偏移 CLS)+ CSS 中的 max-width: 100%; height: auto。
  • 格式:Logo 和圖示使用 SVG,截圖使用 WebP/AVIF,並搭配 srcset + sizes(例如 480w、960w、1600w)。
  • 折線以下使用 loading="lazy" 和 decoding="async";絕對不用於主要圖片(LCP),後者需使用 fetchpriority="high"。
  • 教學縮圖:aspect-ratio: 16 / 9; object-fit: cover。

Viewport(已設定,請勿移除)

<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">

禁止使用:maximum-scale=1、user-scalable=no(會封鎖縮放,不利於無障礙性)。

動畫與行動裝置效能

  • 遵循 prefers-reduced-motion(專案規範)。
  • Canvas:限制 devicePixelRatio 為 2,並在寬度小於 600 px 時降低密度(已在 app.js 中實作,請保持此原則)。
  • 行動裝置上避免堆疊過重的 backdrop-filter。

檢查

# 使用已啟動的 check-site 容器在 :8088 上,或不帶參數(使用 site/ 的本機伺服器)
python3 scripts/check_responsive.py                 # 檢查 site/ 中的所有頁面
python3 scripts/check_responsive.py --shots /tmp/rs # 加上每個寬度的 PNG 截圖

如果 scrollWidth > 寬度、有可見元素超出邊界、觸控目標小於 24 px(句子中的連結除外),或內文小於 16 px,腳本會失敗。在推送前請檢查 320 和 375 px 的截圖。

Individual skills in this repo

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

相關技能