From 65d90fa0b143e4f64ff7abc23bdb320b6c92abcc Mon Sep 17 00:00:00 2001 From: Yu Shan Date: Mon, 24 Nov 2025 18:53:26 +0800 Subject: [PATCH 01/10] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=20alysha=20?= =?UTF-8?q?=E5=80=8B=E4=BA=BA=E7=B6=B2=E7=AB=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- index.html | 305 ++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 276 insertions(+), 29 deletions(-) diff --git a/index.html b/index.html index 6a09c3c..7dd6fd7 100644 --- a/index.html +++ b/index.html @@ -1,37 +1,284 @@ - - + + + + 前端工程師個人品牌網站 + + + - - - +
+ + + + +
+ + +
+
+

這裡是網站的 Hero 主視覺占位內容

+

之後會放一句話自我介紹、角色定位(例如 Frontend Developer)、以及導引使用者瀏覽作品集的行動呼籲。

+

目前為暫時占位內容,正式文案與布局會在第二階段以 Section SDD 生成。

+

之後會用 Section SDD 的 Prompt 產生正式 Hero section,請把新的 section 程式碼整段貼在這兩個註解中間,完全取代現在這一區。

+
+
+ + + + +
+
+

關於我(占位內容)

+

這裡是 About 區的暫時占位內容。未來會使用 Section SDD 的 Prompt 產生正式的 About 區塊內容,包括背景、經驗與一段摘要描述。

+

產生後請把新的 section 程式碼「整段貼在這兩個註解中間」,完整取代現在的占位內容。

+
+
+ + + + +
+
+

技能(占位內容)

+

這裡是 Skills 區的暫時占位內容。未來會在此列出前端技能、工具與技術熟練度,並由 Section SDD 產生正式文案。

+

完成後請將新的 section 完整貼在這兩個註解之間,覆蓋現在的內容。

+
+
+ + + + +
+
+

作品集(占位內容)

+

這裡是 Projects 區的占位內容,用來展示網站、App 或其他前端實作。正式內容會使用 Section SDD 生成完整卡片與描述。

+

產生後請把新的 section 程式碼直接貼在這兩個註解中間,完整覆蓋此區塊。

+
+
+ + + + +
+
+

聯絡我(占位內容)

+

這裡是 Contact 區的暫時占位內容。未來會加入 Email、LinkedIn、GitHub 或其他聯絡方式。

+

之後請將 Section SDD 產生的正式版本完整貼到這兩個註解中間取代。

+
+
+ + +
+ +
+ © 2025 Your Name · Frontend Dev. All rights reserved. +
+ +
- \ No newline at end of file + From b24cd114bba399303bfdb7def81a041ca26e3971 Mon Sep 17 00:00:00 2001 From: Yu Shan Date: Mon, 24 Nov 2025 18:58:24 +0800 Subject: [PATCH 02/10] =?UTF-8?q?feat:=20=E8=AE=8A=E6=9B=B4=E5=80=8B?= =?UTF-8?q?=E4=BA=BA=E7=B6=B2=E7=AB=99=E6=A8=A3=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- index.html | 385 ++++++++++++++++++++++------------------------------- 1 file changed, 160 insertions(+), 225 deletions(-) diff --git a/index.html b/index.html index 7dd6fd7..c1fd04e 100644 --- a/index.html +++ b/index.html @@ -1,284 +1,219 @@ - - - - 前端工程師個人品牌網站 - + + + Alysha — Personal Website -
- - - - -
- - -
-
-

這裡是網站的 Hero 主視覺占位內容

-

之後會放一句話自我介紹、角色定位(例如 Frontend Developer)、以及導引使用者瀏覽作品集的行動呼籲。

-

目前為暫時占位內容,正式文案與布局會在第二階段以 Section SDD 生成。

-

之後會用 Section SDD 的 Prompt 產生正式 Hero section,請把新的 section 程式碼整段貼在這兩個註解中間,完全取代現在這一區。

-
-
- - - - -
-
-

關於我(占位內容)

-

這裡是 About 區的暫時占位內容。未來會使用 Section SDD 的 Prompt 產生正式的 About 區塊內容,包括背景、經驗與一段摘要描述。

-

產生後請把新的 section 程式碼「整段貼在這兩個註解中間」,完整取代現在的占位內容。

-
-
- - - - -
-
-

技能(占位內容)

-

這裡是 Skills 區的暫時占位內容。未來會在此列出前端技能、工具與技術熟練度,並由 Section SDD 產生正式文案。

-

完成後請將新的 section 完整貼在這兩個註解之間,覆蓋現在的內容。

-
-
- - - - -
-
-

作品集(占位內容)

-

這裡是 Projects 區的占位內容,用來展示網站、App 或其他前端實作。正式內容會使用 Section SDD 生成完整卡片與描述。

-

產生後請把新的 section 程式碼直接貼在這兩個註解中間,完整覆蓋此區塊。

-
-
- - - - -
-
-

聯絡我(占位內容)

-

這裡是 Contact 區的暫時占位內容。未來會加入 Email、LinkedIn、GitHub 或其他聯絡方式。

-

之後請將 Section SDD 產生的正式版本完整貼到這兩個註解中間取代。

-
-
- - -
- -
- © 2025 Your Name · Frontend Dev. All rights reserved. -
+
+ + +
+ + +
+ + + +
+

About Me

+
+
+ + +
+

Skills

+
+
+ + +
+

Projects

+
+
+ + +
+

Contact

+
+
+ +
+ © 2025 Alysha — All rights reserved. +
- From 5a56b0f7d96bc837e1d026188303f2fa9cf3d62e Mon Sep 17 00:00:00 2001 From: Yu Shan Date: Mon, 24 Nov 2025 19:01:06 +0800 Subject: [PATCH 03/10] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=E5=9C=96?= =?UTF-8?q?=E7=89=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Pingu.png | Bin 0 -> 24008 bytes index.html | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 Pingu.png diff --git a/Pingu.png b/Pingu.png new file mode 100644 index 0000000000000000000000000000000000000000..79559f32b1cb2cd05ce2b6224b0f096c8b9ec197 GIT binary patch literal 24008 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

i1G~aKa6)@6mxF+!nr9iO3NC(*Kcx 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, I'm Alysha.

- + Alysha
From b3d5a4a0129f8693c05674bb7ad0b425fa4b74ea Mon Sep 17 00:00:00 2001 From: Yu Shan Date: Mon, 24 Nov 2025 19:04:08 +0800 Subject: [PATCH 04/10] =?UTF-8?q?feat:=20=E8=AE=8A=E6=9B=B4=E5=9C=96?= =?UTF-8?q?=E7=89=87=E8=87=B3=E9=BD=8A=E9=A0=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- index.html | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/index.html b/index.html index be59a8d..0666be3 100644 --- a/index.html +++ b/index.html @@ -128,7 +128,9 @@ width: 100%; height: 100%; object-fit: cover; - } + object-position: top; /* ⭐ 強制圖片取頂部 */ + } + /* ============ RWD From 2967267b07e216e92bb04bf8b2492a1cb5b819f2 Mon Sep 17 00:00:00 2001 From: Yu Shan Date: Mon, 24 Nov 2025 19:10:57 +0800 Subject: [PATCH 05/10] =?UTF-8?q?feat:=20=E5=8A=A0=E4=B8=8A=20meta:=20desc?= =?UTF-8?q?ription?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- index.html | 1 + 1 file changed, 1 insertion(+) diff --git a/index.html b/index.html index 0666be3..a86af07 100644 --- a/index.html +++ b/index.html @@ -3,6 +3,7 @@ + Alysha — Personal Website @@ -176,31 +307,67 @@

Hi, I'm Alysha.

這是一段 Hero 用的優雅描述文字。未來你可以放專業定位、角色介紹或一句能代表你的標語。

- -
- Alysha
- +
-

About Me

-
+

關於我

+
+
+

我目前是一名前端工程師,專注於網頁開發與使用者體驗設計,同時熱衷於教學與接案,熟悉 HTML、CSS、JavaScript 及 React。

+

我重視溝通與團隊協作,喜歡把複雜的概念簡單化並清楚地傳達給他人。

+
    +
  • 具備完整網站 UX/UI 設計能力
  • +
  • 能協助團隊優化流程與前端實作
  • +
  • 擅長教學與知識傳遞
  • +
+ +
+
+ 寫程式的工程師 +
+
+ - +

Skills

-
+
+
+

我主要技能包含前端開發、使用者體驗設計與跨部門溝通。

+

我重視溝通與協作,喜歡把事情講清楚並確保團隊理解一致。

+
    +
  • 跨部門溝通
  • +
  • Figma
  • +
  • Notion
  • +
  • Google Suite
  • +
  • Google Gemini & ChatGPT
  • +
  • Jira
  • +
  • Microsoft Teams
  • +
  • HTML
  • +
  • CSS
  • +
  • JavaScript
  • +
+
+
+ 技能示意圖 +
+
+
From f2a1339851b06b24a2a8cf0d257b65700ca0fce7 Mon Sep 17 00:00:00 2001 From: Yu Shan Date: Tue, 25 Nov 2025 17:26:49 +0800 Subject: [PATCH 08/10] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=20projects?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- index.html | 164 +++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 141 insertions(+), 23 deletions(-) diff --git a/index.html b/index.html index 3a92457..b16b98f 100644 --- a/index.html +++ b/index.html @@ -193,8 +193,10 @@ .skills-list { list-style: none; padding: 0; + /* 修改:移除 column,改用 row + wrap 製作標籤雲效果 */ display: flex; - flex-direction: column; + flex-wrap: wrap; + justify-content: center; /* 手機版置中對齊 */ gap: 8px; margin-bottom: 24px; } @@ -204,15 +206,16 @@ border-radius: 6px; display: inline-block; font-weight: 500; + /* 由於父層是 flex row,這裡寬度會自動適應文字 */ } .tool-comm { - background: #ffd966; /* 溝通工具顏色 */ + background: #ffd966; color: #222; } .tool-prod { - background: #6fa8dc; /* 生產力工具顏色 */ + background: #6fa8dc; color: #fff; } @@ -226,7 +229,66 @@ /* CSS:PROJECTS-START */ - /* 保留原本或待填 */ + .projects-container { + display: grid; + gap: 40px; + } + + .project-card { + background: #fff; + border-radius: 16px; + overflow: hidden; + display: flex; + flex-direction: column-reverse; + gap: 16px; + border: 1px solid rgba(0,0,0,0.05); + } + + .project-info { + padding: 16px; + display: flex; + flex-direction: column; + justify-content: center; + align-items: flex-start; + } + + .project-title { + font-size: 20px; + font-weight: 700; + margin: 0 0 12px 0; + color: var(--text); + } + + .project-desc { + font-size: 15px; + color: #555; + margin: 0 0 20px 0; + } + + .project-link { + color: var(--primary); + text-decoration: none; + font-weight: 600; + border-bottom: 2px solid transparent; + transition: border-color 0.3s ease; + } + + .project-link:hover { + border-bottom-color: var(--primary); + } + + .project-img-wrapper { + width: 100%; + height: 240px; + background: #eee; + } + + .project-img-wrapper img { + width: 100%; + height: 100%; + object-fit: cover; + display: block; + } /* CSS:PROJECTS-END */ /* CSS:CONTACT-START */ @@ -281,13 +343,38 @@ .skills-image { flex: 1; } + + /* 新增:桌機版 Skills 列表靠左對齊 */ + .skills-list { + justify-content: flex-start; + } + + /* Projects RWD Update */ + .projects-container { + grid-template-columns: 1fr 1fr; + gap: 48px; + } + + .project-card { + flex-direction: row; + align-items: stretch; + } + + .project-info { + flex: 1; + padding: 24px; + } + + .project-img-wrapper { + flex: 1; + height: auto; + } } /* CSS:RWD-END */ - -

Hi, I'm Alysha.

@@ -317,8 +401,6 @@

Hi, I'm Alysha.

Alysha
- -

關於我

@@ -336,13 +418,10 @@

關於我

- 寫程式的工程師 + 寫程式的工程師
- - -

Skills

@@ -367,23 +446,62 @@

Skills

- +
+

PROJECTS

+ +
+
+
+

Project Title 01

+

我的專案的簡介。這裡可以簡述專案目標、使用的技術或解決的問題。

+ Learn more → +
+
+ Project 01 Preview +
+
- -
-

Projects

-
-
+
+
+

Project Title 02

+

我的專案的簡介。這是一個響應式網頁設計的案例展示。

+ Learn more → +
+
+ Project 02 Preview +
+
- +
+
+

Project Title 03

+

我的專案的簡介。使用者體驗研究與介面優化的成果。

+ Learn more → +
+
+ Project 03 Preview +
+
+ +
+
+

Project Title 04

+

我的專案的簡介。前端互動特效與 API 串接實作。

+ Learn more → +
+
+ Project 04 Preview +
+
+
+

Contact

-
© 2025 Alysha — All rights reserved.
- + \ No newline at end of file From 0ad6d80e231d9e0885945a40af2caa01a3d8215f Mon Sep 17 00:00:00 2001 From: Yu Shan Date: Tue, 25 Nov 2025 18:05:11 +0800 Subject: [PATCH 09/10] =?UTF-8?q?feat:=20=20=E6=96=B0=E5=A2=9E=20contact?= =?UTF-8?q?=20=E6=AC=84=E4=BD=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- index.html | 119 +++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 112 insertions(+), 7 deletions(-) diff --git a/index.html b/index.html index b16b98f..7c0a3a2 100644 --- a/index.html +++ b/index.html @@ -193,10 +193,9 @@ .skills-list { list-style: none; padding: 0; - /* 修改:移除 column,改用 row + wrap 製作標籤雲效果 */ display: flex; flex-wrap: wrap; - justify-content: center; /* 手機版置中對齊 */ + justify-content: center; gap: 8px; margin-bottom: 24px; } @@ -206,7 +205,6 @@ border-radius: 6px; display: inline-block; font-weight: 500; - /* 由於父層是 flex row,這裡寬度會自動適應文字 */ } .tool-comm { @@ -292,7 +290,93 @@ /* CSS:PROJECTS-END */ /* CSS:CONTACT-START */ - /* 保留原本或待填 */ + .contact-form { + max-width: 600px; + margin: 0 auto; + display: flex; + flex-direction: column; + gap: 20px; + background: #fff; + padding: 32px; + border-radius: 16px; + box-shadow: 0 4px 20px rgba(0,0,0,0.03); + } + + .form-group { + display: flex; + flex-direction: column; + gap: 8px; + } + + .form-group label { + font-weight: 600; + font-size: 14px; + color: #555; + } + + .form-group input, + .form-group textarea { + padding: 12px; + border: 1px solid #ddd; + border-radius: 8px; + font-size: 16px; + font-family: inherit; + transition: 0.2s; + } + + .form-group input:focus, + .form-group textarea:focus { + outline: none; + border-color: var(--primary); + background: #fafaff; + } + + .form-group textarea { + resize: vertical; + min-height: 120px; + } + + /* 按鈕容器:讓按鈕依據內容縮放 */ + .btn-submit-wrapper { + display: flex; + justify-content: flex-start; + } + + .btn-submit { + position: relative; /* 為了定位 toast */ + border: none; + font-size: 16px; + width: fit-content; /* 寬度適應文字 */ + } + + /* CSS-Only Toast 模擬 */ + .toast-message { + position: fixed; + bottom: 30px; + left: 50%; + transform: translateX(-50%) translateY(20px); + background: rgba(0, 0, 0, 0.85); + color: #fff; + padding: 12px 24px; + border-radius: 50px; + font-size: 14px; + pointer-events: none; + opacity: 0; + + /* 關鍵技巧: + 1. 預設 opacity: 0 + 2. transition 設為 0.5s fade-out,並延遲 2s 發生 (讓訊息停留) + */ + transition: opacity 0.5s ease 2s, transform 0.5s ease 2s; + } + + /* 當按鈕被按下 (Active) 時 */ + .btn-submit:active .toast-message { + opacity: 1; + transform: translateX(-50%) translateY(0); + /* 按下時立即顯示,不延遲 */ + transition: none; + } /* CSS:CONTACT-END */ @@ -344,7 +428,6 @@ flex: 1; } - /* 新增:桌機版 Skills 列表靠左對齊 */ .skills-list { justify-content: flex-start; } @@ -496,8 +579,30 @@

Project Title 04

-

Contact

-
+

CONTACT

+
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ +
+