關於本站

本站是以Astro Framework,以傳統換頁式網頁為基礎,再額外加上Pjax動態局部換頁技術與GSAP動畫效果改良瀏覽體驗,再額外搭配Github Actions做程式碼上傳後自動化建置出靜態網頁部署上線。

UI設計稿繪製

本站設計稿是用免費開源的Inkscape畫出來的

本站架構Astro

其實一開始只想以傳統HTML/CSS/JavaScript的方式簡單做,不過在評估需求的時候發現即使是簡單的個人形象頁,還是有換頁與共用部份組件。但是內容其實是固定的,也沒動態到需要用到什麼CSR框架像是Vue, React之類的。最後在綜合評估之後決定採用Astro Framework。

前端Framework TailwindCSS

此網站同時也是我第一次親自從無到有嘗試TailwindCSS這套Framework(上次使用這套是在公司專案與同事合作的時候碰的) 和我習慣的Bootstrap、Foundation 這類傳統 CSS Framework不太一樣,傳統的CSS Framework本身就帶很多預設組件和全局樣式,開箱就能用,設計好的排版和按鈕樣式一鍵套用,對新手很友善。

但 Tailwind 是「原子化工具類 CSS」框架,重點是給你一堆低階工具(像 p-4、text-gray-700)去自由組合,彈性大但學習曲線自然陡峭,需要自己動手拼出想要的樣子。 後來因為還是有想快速使用現成組件的需求,所以有再搭配由Tailwind衍生的daisyUI。

Pjax動態局部換頁技術

  • 使用者點選連結時,不刷新整個頁面
  • 僅更新主要內容區塊(例如 <main> 或 #pjax-container)
  • 支援瀏覽器前進/後退
  • 支援動畫效果(淡出舊頁 → 換內容 → 淡入新頁)
  • 不破壞 SEO(仍能 Fallback 到原始 HTML)

動畫效果

在Pjax局部換頁技術搞定之後,再來再進一步導入Barba+GSAP實現站內動畫效果。 定義動畫效果相關檔案

 └── pages/  : 定義該頁面內容專用的動畫
 │  ├──── index.js  
 │  ├──── services.js  
 │  └──── works.js  
 ├── pageTransitions.js  : 定義更換頁面的動畫效果
 └── pjax.js : 定義Pjax局部換頁的區塊與基礎設定