博客 / 詳情

返回

為了方便學習icss項目上的css技巧,我用next.js寫了一個網站

icss-website

一、項目簡介與定位

icss-website 是一個基於 Next.js 14(App Router 架構)開發的現代化 CSS 技巧展示平台,致力於為前端開發者、設計師和技術愛好者提供一個高效、優雅、易用的 CSS 奇技淫巧學習與交流空間。項目以 GitHub 上的 iCSS 倉庫為內容源,通過 API 動態獲取、分類、展示和高亮 CSS 相關的文章與代碼示例,支持多主題、多語言、響應式佈局和豐富的交互體驗。

本項目不僅是一個內容展示網站,更是前端工程最佳實踐的集合體,涵蓋了主題系統、國際化、響應式設計、代碼高亮、第三方演示集成、API 設計、狀態管理、性能優化等多個維度,適合用作中大型前端項目的架構參考。

二、主題切換系統

1. 功能概述

icss-website 支持亮色、暗色和跟隨系統三種主題模式,用户可根據個人偏好或環境自動切換,提升視覺舒適度和可訪問性。

2. 技術實現

  • CSS 變量:通過 :root.dark 類定義主題色彩變量,實現主題色的靈活切換。
  • Tailwind CSS:利用 Tailwind 的 dark: 前綴和自定義配置,快速適配不同主題下的樣式。
  • React Context:全局狀態管理主題,確保主題切換在全站生效。
  • localStorage 持久化:用户選擇的主題會被保存,刷新頁面或下次訪問時自動恢復。
  • 系統跟隨:監聽系統主題變化,自動切換網站主題。

3. 用户體驗

  • 主題切換按鈕位於頁面頭部,操作便捷。
  • 切換動畫流暢,頁面無閃爍。
  • 主題切換後,所有組件和內容即時響應。

三、多語言支持

1. 功能概述

icss-website 支持簡體中文和英文兩種語言,用户可隨時切換,界面文本和提示信息即時更新。

2. 技術實現

  • 翻譯文件:所有文案集中在 app/lib/translations.ts,便於維護和擴展。
  • React Context:全局管理當前語言狀態。
  • localStorage 持久化:用户選擇的語言會被保存,自動恢復。
  • 動態切換:切換語言後,所有頁面和組件即時響應,無需刷新。

3. 用户體驗

  • 語言切換按鈕與主題切換並列,操作直觀。
  • 支持未來擴展更多語言。

四、響應式設計

1. 功能概述

網站採用響應式佈局,兼容桌面、平板和移動端,確保不同設備下均有良好體驗。

2. 技術實現

  • Tailwind CSS:利用其響應式工具類,快速適配多端佈局。
  • 彈性網格與斷點:首頁文章列表、詳情頁、導航欄等均根據屏幕寬度自適應排列。
  • 移動端優化:按鈕、輸入框、卡片等交互元素在小屏下自動增大,提升可用性。

3. 用户體驗

  • 無論在 PC、iPad 還是手機上,內容均清晰可讀,操作順暢。
  • 細節如邊距、字號、卡片排列等均針對不同屏幕優化。

五、核心功能詳解

1. 文章列表

  • 首頁展示所有 CSS 技巧文章,支持分頁加載。
  • 每篇文章卡片包含標題、封面圖、分類、作者、發佈日期、評論數、點贊數等信息。
  • 支持點擊進入詳情頁。

2. 分類篩選

  • 頂部下拉菜單可按分類篩選文章。
  • 分類數據由後端 API 動態獲取,自動聚合所有文章的分類。
  • 支持"全部"選項,快速切換。

3. 搜索功能

  • 支持按標題和分類關鍵詞模糊搜索。
  • 搜索結果實時展示,支持與分類篩選聯動。

4. 分頁與加載更多

  • 首頁文章列表採用分頁加載,提升性能和用户體驗。
  • 支持"加載更多"按鈕,按需加載後續內容。

5. 文章詳情

  • 展示完整的文章內容,支持 Markdown 解析。
  • 頭部展示文章標題、作者、頭像、發佈日期、評論數、點贊數等。
  • 支持上一篇/下一篇導航,便於連續閲讀。
  • 支持返回首頁按鈕。

6. 代碼高亮與 CodePen 集成

  • 文章中的代碼塊自動高亮,支持多種主流編程語言。
  • 支持 CodePen Demo 格式,自動解析並嵌入在線演示。
  • 支持標準 CodePen 鏈接自動嵌入。
  • 代碼塊支持展開/收起,便於查看和複製。

7. 評論與互動(可擴展)

  • 目前支持展示評論數和點贊數,未來可擴展為真實評論系統。

六、API 設計與實現

1. 文章列表 API

  • 路徑:/api/articles
  • 支持分頁(page, per_page)、分類(category)、搜索(search)參數。
  • 返回數據包含文章數組和分頁信息。
  • 後端通過 GitHub API 獲取 iCSS 倉庫內容,聚合並過濾後返回。

2. 文章詳情 API

  • 路徑:/api/articles/[id]
  • 根據文章 ID 獲取單篇文章的完整內容和元數據。

3. 分類列表 API

  • 路徑:/api/categories
  • 動態聚合所有文章的分類,去重、排序後返回。

4. API 設計亮點

  • 所有 API 均為 RESTful 風格,參數靈活。
  • 錯誤處理完善,返回結構統一。
  • 便於前端按需請求和渲染。

七、技術選型與架構

1. 前端框架

  • Next.js 14:採用 App Router 架構,支持服務端渲染、靜態生成和 API 路由。
  • TypeScript:全類型開發,提升代碼健壯性和可維護性。
  • React 18:函數組件+Hooks,簡潔高效。

2. 樣式與 UI

  • Tailwind CSS:原子化 CSS,極致靈活,響應式強。
  • 自定義主題:通過 CSS 變量和 Tailwind 配置實現。
  • Lucide React:現代化圖標庫,界面美觀。

3. 狀態管理

  • React Context:全局管理主題、語言等狀態。
  • useState/useEffect:本地狀態與副作用處理。

4. 動畫與交互

  • Framer Motion:實現頁面和組件的過渡動畫,提升動效體驗。

5. 代碼高亮

  • react-syntax-highlighter:支持多語言代碼高亮,主題豐富。

6. 第三方集成

  • CodePen:自動解析文章中的 CodePen Demo,嵌入在線演示。
  • GitHub API:後端通過 GitHub API 獲取內容,保證數據實時性。

7. 目錄結構

  • app/:頁面、API 路由、組件、上下文、工具函數等。
  • public/:靜態資源。
  • package.json:依賴與腳本。

八、用户體驗與交互細節

1. 主題與語言切換

  • 按鈕固定在頭部,隨時切換。
  • 切換後全站即時響應,無需刷新。

2. 搜索與篩選

  • 搜索框和分類篩選並列,支持組合過濾。
  • 輸入關鍵詞實時過濾,無需手動提交。

3. 文章卡片

  • 卡片式設計,信息層次分明。
  • 支持封面圖、分類標籤、作者信息等。
  • 鼠標懸停有動效反饋。

4. 詳情頁

  • Markdown 解析美觀,支持標題、列表、圖片、代碼塊等。
  • 代碼塊高亮,支持複製。
  • CodePen Demo 嵌入,支持展開/收起。
  • 上一篇/下一篇導航,提升閲讀連貫性。

5. 響應式與無障礙

  • 所有交互元素均有適當的觸控區域。
  • 顏色對比度高,適合暗光環境。
  • 支持鍵盤導航和屏幕閲讀器。

九、擴展性與部署

1. 擴展性

  • 多語言:可輕鬆擴展更多語言,只需補充翻譯文件。
  • 主題:支持自定義主題色,便於品牌化。
  • API:可擴展更多接口,如評論、用户系統等。
  • 內容源:支持更換為其他內容源,如 Notion、CMS 等。

2. 部署

  • Vercel:一鍵部署,自動化構建與發佈。
  • Netlify/Railway/自託管:兼容主流平台。
  • 環境變量:支持配置 GitHub Token 等敏感信息。

3. 性能優化

  • 靜態生成與服務端渲染結合,首屏加載快。
  • 按需加載、分頁、懶加載圖片等優化。

十、總結與展望

icss-website 項目以現代前端技術為基礎,集成了主題系統、國際化、響應式設計、內容聚合、代碼高亮、第三方演示等豐富功能,既是 CSS 技巧的展示平台,也是前端工程實踐的範例。項目結構清晰、擴展性強、用户體驗優良,適合個人學習、團隊協作和社區運營。

未來,icss-website 可進一步擴展評論系統、用户登錄、個性化推薦、內容創作等功能,打造更具互動性和社區氛圍的前端技術平台。同時,隨着前端技術的發展,項目也將持續引入新技術和最佳實踐,保持技術領先和用户體驗的持續優化。

icss-website,不止於 CSS,更是現代前端工程的全景展示。

  • 項目網站地址:https://icss-website.vercel.app/
  • 項目源碼: https://github.com/eveningwater/icss-website

最後,感謝chokcoco的文章,讓我學習到了不少的css技巧,感謝chokcoco的倉庫讓我有了數據來源。

特別説明:如果網站加載不出文章數據,可能是github api的限流或者不穩定,建議fork倉庫在本地訪問。

特別説明:本文由ai完成,本人做了部分修改。
user avatar tigerandflower 頭像 yaofly 頭像 codepencil 頭像 susouth 頭像 columsys 頭像 buxia97 頭像 weirdo_5f6c401c6cc86 頭像 ailim 頭像 pugongyingxiangyanghua 頭像 frontoldman 頭像 iymxpc3k 頭像 fehaha 頭像
38 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.