前端職涯
-如果我重新轉職前端,我會如何學好 HTML、CSS 和 JavaScript
this.web
最近在 Threads 上,看到許多人為了轉職前端工程師,每天分享自己的學習進度。這讓我想起大約兩年前,身為一名非程式相關科系的我,也是一步步透過自學,最終成功轉職。
今天我想和你分享我的學習經驗,尤其是我犯過的錯誤,以及意外幫助我成功的做法,希望能讓想轉職的你更有方向學習!
HTML

學習 HTML 是前端開發的第一步,但不要因為它很基礎簡單就掉以輕心,學會如何運用好標籤、表單等功能,對未來實作時幫助很大。
但也要注意在前期,不要在 HTML 花太多心力,浪費寶貴的轉職時間。
學習時 HTML 沒有做好的部分:
花太多時間在 HTML
當初我在學 HTML 基礎時,花了過多時間在一些簡單的細節上,比如重複複習已學過的 tag,而不是迅速轉移重心到 CSS。
轉職的時間非常珍貴,如果我能重來,我會快速進入 CSS 的學習,並結合 HTML 進行練習,來最大化學習效率。
沒有學好表單元素

我在學習表單元素時,只停留在基本的 input 和 textarea,後來才發現 HTML5 提供了不少強大的表單元素(如 email、tel、date 等),這些元素可以內建驗證,減少 JavaScript 的使用。
當初覺得表單驗證很麻煩,寫了一堆 JS,後來發現若熟練這些元素,就可以省略掉很多寫 JS 的時間,加快學習速度。
不清楚 HTML 數據屬性(Data Attributes)
HTML 的 data-* 屬性可以存儲客製化的數據,以便 JavaScript 讀取和操作,當初我忽略了這個屬性,導致後期做專案時,又花了很多時間回去學習。
熟練掌握這個特性,也能讓你在開發互動性功能時更加得心應手。
檢查表:
- 你是否也在一些看似簡單的基礎上花費了過多時間,而不是推動自己進入下一個挑戰?
- 是否熟悉表單元素?
- 你是否已了解
data-*屬性的用法?試著在你的練習項目中運用它?
學習 HTML 有做到的地方
學好語義化標籤的使用
當初覺得這些語義化標籤很酷,例如 header、footer、main、aside、nav、article,所以早期就開始練習使用語義化標籤,後來發現,寫好結構化標籤,不僅可以讓程式結構更清晰,幫助團隊更容易理解架構以外,對 SEO 也有很大的好處
使用 Emmet 快捷語法
因為覺得用快捷與法很帥,就花了一點時間了解 Emmet 快捷鍵語法,大大提升了我撰寫 HTML 的速度,這點到現在都對我非常有幫助。
檢查表:
- 是否有多使用語義化標籤,讓結構更有意圖?
- 建議熟悉 Emmet 的常用語法,提升寫程式碼的速度。 </aside>
CSS

CSS 是讓網站美觀和易用的關鍵。在學習 CSS 時,一定要了解如何熟練使用各種屬性,並理解怎麼讓樣式更一致、更容易維護。
學習時 CSS 沒有做好的部分:
沒有統一 CSS 屬性順序
起初我都隨意排列 CSS 屬性,結果導致後續維護困難,每次找屬性要更改都找很久。所以統一屬性書寫順序,除了可以讓你的樣式更有邏輯,維護起來也更輕鬆。
目前我寫 CSS 屬性順序的習慣是:
- css 變數
- 排版相關:
position / top / right / bottom / left - 盒模型相關:
width / height / margin / padding - 字體:
font / line-height / text-align - 其他視覺效果:
color / background / box-shadow z-index- Transition & Animation
不理解 z-index 和層級優先權
一開始學習時,因為覺得很複雜,就沒有特別深入理解 z-index 和層級優先權,結果在處理第一個專案的時候花了大量時間。建議你早期就深入理解這些屬性,尤其是在複雜的佈局和交互中更能體會到其重要性。
沒有學習用 CSS 管理變數
當時我不知道可以使用 CSS 變數(如 --primary-color)來統一管理樣式,導致我在專案中花了很多時間在修改重複的屬性。
統一管理樣式的好處很多,像是重複使用加快開發效率、幫助團隊迅速理解 CSS 架構和基本設定、更易於維護和修改 ... 等等。
檢查表:
- 是否有統一書寫 CSS 屬性的順序?現在就制定一個適合自己的順序。
- 嘗試在
:root中定義 CSS 變數,更好的管理樣式。
學習 CSS 有做到的地方
多利用範本練習
轉職時我找了許多範本或網路 CSS 教學來練習,讓我非常熟練常用的 CSS 屬性,也探索不同風格的設計和的實現方式。
這讓我在面對麻煩的排版設計時,能夠快速想出解法,不必在這邊花太多時間。
嘗試不同解法
除了找範本練習,我也會嘗試用不同的 CSS 方法解決相同的問題,讓我更深入理解排版的概念,像是知道 flex、grid、position、float 各自適合應用的場景,若在早期掌握這些基礎佈局工具,就能輕鬆應對不同的版面需求。
跟進最新的 CSS 特性
因為有興趣,我經常 follow 最新的 CSS 屬性和選擇器,讓我能用更新更簡單的屬性,解決相同的場景。
例如用 grid-template-row 來做 accordion,或是用 grid-area: 1/1/2/2 來重疊置中元素,這幾個小技巧都讓我在在專案上開發更快。
JavaScript

學習 JS 不僅僅只是掌握語法,更是要練習解決問題的能力,理解如何透過程式來解決實際問題。
學習時 JS 沒有做好的部分:
沒有通過專案練習 JS 知識
一開始學習網頁時,以為網頁只是在排版,所以忽略了很多操作 JS 的技術,也耽誤了我學框架的時間。
如果一開始就自己發想各種小工具來練習,就能更快理解 DOM 的操作或運用,也能理解框架的意義。
不了解 Dev Tools
除了查看 HTML、CSS 以外,Dev Tools 還有其他很強大的功能,像 network、performance 等等,記得實習時找一個 bug 找很久,結果主管一看 network 就找到問題了。
檢查表:
- 嘗試找小工具、遊戲製作來練習 JS,如果沒靈感,參考 JS 30 或去 codewars 練習語法。
- 是否了解 Dev Tools?並運用它幫助自己開發?
學習 JS 有做到的地方
安排學習計畫

在感到迷茫時,我習慣為自己制定了學習計畫,沒想到這樣幫助我更有效率地學習 JavaScript,也不容易被過多資訊分散精力。
掌握數組、字串與物件的常用方法
為了練習 JS 的語法,我在 codewars 上花了不少時間在刷題,讓我對例如 map、filter、reduce 等方法更熟練,所以我在處理數據時更有效率,程式碼也更易讀簡潔。
主動學習進階特性
雖然我沒有花很多時間在實作 JS 專案,但我花了不少時間在學習閉包、this、類別等進階特性,主要是我當初覺得很有趣,如果你去翻我舊文章,會發現有很多這方面的內容。 上面兩點讓我在學習 React 時更輕鬆,要實現某些比較複雜的功能時,也能快速想到大致的解決方法。
檢查表:
- 嘗試安排學習計畫,並免被資訊分散。
- 每天挑選幾個小挑戰,熟悉
map、filter、reduce等常用方法。
總結
以上是我學習 HTML、CSS、JS 的經驗分享,總結來說,如果讓我重來,我會特別注重以下四點:
- 系統化學習: 制定學習計劃,循序漸進地掌握知識。
- 注重實踐: 學習與實踐相結合,通過專案來鞏固知識。
- 保持好奇心: 持續關注最新消息,學習新技術幫我開發和保持競爭力。
- 反思總結: 定期回顧學習成果,總結經驗教訓,調整學習策略。
馬上立即行動吧!
- 列出一個 HTML/CSS/JS 小項目並完成它。
- 選擇一個你不熟悉的 HTML 標籤或 CSS 屬性,並嘗試應用它。
- 制定下週的學習計劃,並確保每天都實踐。 </aside>