RWD斷點設定怎麼做?常見螢幕尺寸與響應式設計實作要點

Published on: | Last updated:

嗯...關於 RWD 斷點

RWD 斷點設定。這件事...好像很多人都直接背數字。375、768、1024、1440... 像咒語一樣。

但說真的,重點從來就不是那些特定的數字。背了也沒用,因為螢幕尺寸一直變。 今天 iPhone 16 Pro 是這個寬度,明年就不是了。

所以...核心思想應該是...「讓內容決定斷點」。 不是裝置。不是為了哪個牌子的手機去寫 code。

你的設計,在多寬的時候開始看起來很奇怪、跑版、很難讀?那個「快要壞掉」的點,就是你的斷點。 就這麼單純。

螢幕尺寸的現實...很破碎

看一下數據就知道了。根本沒有所謂的「標準螢幕」。

StatCounter 的全球統計顯示,桌機最多的是 1920x1080,但市佔率也才 9% 多一點。第二名是「未知」,這很有趣。手機就更亂了,360x800、390x844、412x915...大家用的都不一樣。

而且,這還有地區差異。一份分析北美和全球趨勢的報告指出,北美 iPhone 的特定解析度(像 375x812、390x844)佔比特別高,但在全球範圍就沒那麼主流。 這也說明,如果你只針對美國流行的 iPhone 尺寸去設計,你的網站到其他地方可能就不那麼好用。

所以,結論還是...別再追著裝置跑了。螢幕的世界是碎片化的。

這張圖大概說明了「內容優先」的斷點思考流程
這張圖大概說明了「內容優先」的斷點思考流程

那...到底要怎麼做?

一個比較...不會錯的方法。就是「Mobile-first」,從最小的開始。

  1. 先做手機版: 不用管斷點,先把手機尺寸的樣子做出來。這是你的基礎樣式。
  2. 拉動你的瀏覽器視窗: 慢慢把視窗拉寬。
  3. 觀察: 一直拉,直到你覺得「嗯,這裡太空了」或「排版怪怪的」。那個臨界點,就是你的第一個斷點。
  4. 加入 media query: 在那個寬度,用 min-width 加上新的 CSS,去調整佈局。 例如,把單欄變雙欄。

程式碼大概長這樣:

/* 這是基礎樣式,給所有尺寸,特別是手機 */
.container {
  width: 100%;
  padding: 1rem;
}

/* 當螢幕寬度「大於等於」768px 時... */
@media (min-width: 768px) {
  .container {
    /* ...套用平板或桌機的樣式 */
    max-width: 720px;
    margin: 0 auto;
  }
}

對,是用 min-width,不是 max-width。這就是 mobile-first 的精神。 先有基礎(手機),再逐步「增強(progressive enhancement)」成桌面版。 這樣做的好處是,手機用戶只會下載到最核心的 CSS,效能會好一點。

Mobile-First vs. Desktop-First,該怎麼選?

這兩種方法沒有絕對的好壞,看專案。

  • Mobile-First (行動優先): 先設計最受限的環境(小螢幕),強迫你專注在最重要的功能上。 之後再慢慢把功能加回去。技術上,通常是用 `min-width`。 對 SEO 可能也比較好,因為 Google 現在是 mobile-first indexing。
  • Desktop-First (桌面優先): 先設計功能最完整的桌面版,再慢慢拿掉東西、調整排版,讓它塞進小螢幕。 這叫「優雅降級(graceful degradation)」。 這種做法,有時候對設計師來說比較直覺,因為畫布比較大,可以先不用管限制。 技術上對應的是 `max-width`。

我自己覺得,現在超過一半的流量來自手機,所以 mobile-first 應該是預設選項。除非你的網站很特別,例如是給企業內部用的複雜後台,使用者幾乎都在辦公室用大螢幕,那或許可以考慮 desktop-first。

開發者工具是觀察斷點的好幫手
開發者工具是觀察斷點的好幫手

框架怎麼處理斷點?(Bootstrap vs. Tailwind)

如果你用框架,它們都已經幫你想好一套斷點了。但他們的哲學不太一樣。

Bootstrap 比較像給你「套餐」,提供現成的元件和一套固定的 12 欄網格系統。 你照著它的 `col-md-6` 這種 class 去用,它就幫你把響應式處理好。很方便,但設計上比較受限。

Tailwind CSS 則是給你「食材」,也就是一大堆 utility class(工具類別)。 你要自己從 `px-4`, `bg-blue-500` 這些小零件開始拼湊。自由度超高,但上手曲線比較陡。 它的斷點也是 mobile-first,用 `md:text-lg` 這種前綴來指定在哪個斷點以上才生效。

Bootstrap 和 Tailwind 斷點哲學比較
方面 Bootstrap Tailwind CSS
核心哲學 元件導向 (Component-based)。給你做好的卡片、按鈕。 工具優先 (Utility-first)。給你 building blocks,自己組合。
斷點使用 在 class 名稱中指定,像 .col-lg-8。比較固定,主要用在網格和部分元件。 用前綴詞,像 lg:grid-cols-3。幾乎所有 utility 都能加上斷點前綴。 超級彈性。
預設斷點 sm (576px), md (768px), lg (992px), xl (1200px)... sm (640px), md (768px), lg (1024px), xl (1280px)...
感覺 比較像在填空。可靠、快速,但做出來的東西容易長得像「Bootstrap 做的網站」。 像在玩樂高。完全客製化,但 HTML 會變得很長。

嗯...沒有哪個比較好,看案子。 趕時間或做後台,Bootstrap 很快。 要做獨特設計,或對最終 CSS 檔案大小很要求,Tailwind 比較適合。

左邊是跑版前,右邊是加了斷點調整後
左邊是跑版前,右邊是加了斷點調整後

一些常見的錯誤...或說迷思

整理一下常看到的問題。

  • 迷思一:用 `device-width`。 不要。 `device-width` 是指裝置的實體解析度,它不會隨著你縮放瀏覽器而改變。我們要的是 `width`,也就是 viewport 的寬度。 `device-width` 這個屬性現在也已經被棄用了。
  • 迷思二:為特定 iPhone 或 Samsung 手機設定斷點。 就像前面說的,裝置太多了,你永遠追不完。 而且,使用者不一定會把瀏覽器開到最大,所以只針對裝置寬度是沒用的。
  • 迷思三:忘記橫向模式 (landscape)。 很多 RWD 設計只考慮了直向。 但手機一橫放,寬度可能就跳到跟小平板一樣,佈局很容易就壞了。測試的時候記得也要轉一下。
  • 迷思四:斷點越多越好。 不是。太多的斷點會讓你的 CSS 變得超複雜、難以維護。 專注在幾個主要的佈局轉換點就好。

總之,保持簡單,專注在內容本身的需求上,應該就不會歪到哪裡去。

Related to this topic:

Comments

  1. Guest 2025-10-17 Reply
    老實說,身為一個老是盯著小孩功課怎麼查、學習網站到底順不順的家長,這件事我自己還滿有感的。有一次家長會,突然忍不住舉手抱怨了一下:我們學校的官網在手機上真的有點難操作,像有時候那個按鈕很小欸,位置又不對,整個畫面滑來滑去會暈,有種為什麼不能設計得更順一點的感覺。 講著講著,我就直接問老師是不是可以麻煩資訊組的人稍微處理一下這種問題,說不定只是RWD沒處理好?小朋友現在幾乎都是用平板在看聯絡簿或查作業,如果畫面一跑掉就卡住,大家應該都很想摔機吧。 然後其實現場也不只我抱怨,還有其他家長點頭說確實有發現這些情形。有些人建議是不是後台看一下流量數據、操作紀錄什麼的,搞不好能抓到問題點再進行調整。雖然我發現講到這裡已經有點離題了,畢竟聊網站優化結果差點變成資訊課了,不過最初的目的真的就是 - 讓網站好用一點,不然大家每天進去都很痛苦欸。
撥打專線 LINE免費通話