CSS Media Queries 詳細介紹

在製作 RWD 響應式網頁時,一定會用到的 CSS 語法就是 media,代表的就是針對指定的「媒體」設定樣式,這篇將會對 CSS 的 Media Queries 做個詳細介紹,也幫助自己未來撰寫時,更有個方向與參考。

CSS Media Queries 是什麼?

Media Queries 代表網頁會先「詢問 query」「媒體 media」的屬性,再針對這些屬性定義樣式,通常在 CSS 裡並沒有大多都是權重大小「覆蓋」的方式,但 media 本身卻帶有些「邏輯」的概念,透過邏輯的寫法,如果媒體條件符合為 true,就會套用樣式,反之為 false 就不會套用樣式。

如果要使用 media queries,共有下列三種使用方式:

Media 的類型 ( Media Types )

在 CSS Level 4 普及後 ( 沒錯,寫這篇文章時,Level 4 即將是主流了 ),主要的 Media 類型有以下四種。( tty、tv、projection、handheld、braille、embossed 和 aural 因為在 Level 4 已經描述未來不支援,就不再多做介紹。)

類型 說明
all 所有裝置。
print 印刷裝置,包含使用列印預覽產生的所有畫面 ( 例如列印為 pdf )。
screen 螢幕裝置,不屬於 print 和 speech 的設備。
speech 朗讀裝置,針對可以「讀出」頁面的設備。

Media 的特徵 ( Media Fratures )

Media 類型是大方向,那麼特徵 Feature 就是小分類,可以做到更細微的判斷與設定,跟類型不同的是,Feature 必須要使用括號( )包覆,甚至可以和邏輯關鍵字結合,此外,如果具備 Range 性質的 Feature,也可在開頭加上min-max-的標示,以下將特徵作為幾個大分類。( device-width、device-height、device-aspect-ratio、handheld、braille、embossed 和 aural 因為在 Level 4 已經描述未來不支援,就不再多做介紹。)

視窗或頁面尺寸 ( Viewport/Page Dimensions )

特徵 說明
width 螢幕寬度,支援 max-widthmin-width
height 螢幕高度,支援 max-heightmin-height
aspect-ratio 螢幕長寬比例,支援 max-aspect-ratiomin-aspect-ratio。( 長寬比的寫法格式為 1/1、1680/720...等 )
orientation 螢幕旋轉方向,有兩個選項:portraitlandscape。 ( portrait 為直向,landscape 為橫向 )

顯示品質 ( Display Quality )

特徵 說明
resolution 解析度 ( dpi、ppx...等 ),支援 max-resolutionmin-resolution
scan 電視掃描方式,有兩個選項:interlaceprogressive。 ( interlace 為交錯式掃描,奇數偶數掃描線交錯,progressive 為漸進式掃描,是現在大多數電視採用的方式 )
update 更新媒體,有三個選項:noneslowfast。( none 表示不會更新的顯示裝置,例如印出來的文件,slow 表示更新速度慢的顯示裝置,fast 表示更新速度快的裝置,例如電腦螢幕 )
overflow-block 當內容包含 block 特性並超過邊界範圍,有四個選項:nonescrolloptional-pagedpaged。( none 表示任何超過範圍都不顯示,例如看板,scroll 表示可滾動查看超出範圍,例如電腦螢幕,optional-paged 表示可手動查看超出的內容,例如簡報,paged 表示超出的內容會以分頁顯示,例如印表機 )
overflow-inline 當內容包含 inline 特性並超過邊界範圍,有兩個選項:nonescroll
grid 網格媒體,兩個選項:01

顏色 ( Color )

特徵 說明
color 輸出裝置的色彩位元數,若數值為 0 則代表黑白裝置,支援 max-colormin-color
color-index 輸出裝置的色彩索引位元數,支援 max-color-indexmin-color-index
monochrome 單色媒體功能,若數值為 0 表示「不是」單色設備。
color-gamut 輸出裝置色域,有三個選項:srgbp3rec2020。( 絕大多數的顯示器都支援 srgb,而 p3 的色域比 srgb 更廣且包含 srgb,rec2020 比 p3 更大且包含 p3 )

互動 ( Interaction )

特徵 說明
pointerany-pointer 指標裝置 ( 例如滑鼠 ) 的準確性,有三個選項:nonecoarsefine。( none 表示沒有指標裝置,coarse 表示精度較差的指標裝置,像是觸控螢幕,fine 表示精度比較高的裝置,像是滑鼠或手寫筆 )
hoverany-hover 裝置具備 hover 的能力,有兩個選項:nonehover

CSS Media Queries 應用實例

Queries 有四種使用方式,分別是 orandnotonly,除了 or 使用逗號「,」表現,其他的就直接寫出英文字,下列應用實例分別使用這四種方式來表現。

小結

其實 CSS Media Queries 並沒有很複雜,尤其在現在電腦或手機螢幕發達的時代,大多情況只需要注意 max-width、min-width 就能解決,其他充其量就是注意印刷的樣式、注意單色的螢幕...等特殊情況而已,總而言之,善用 Media Queries 對於撰寫一個 RWD 網頁,是絕對必要的技能呦!

有興趣瞧瞧其他新文章嗎?