設計師可以調整設計,以便配合使用者。最明確的例子就是使用者裝置的板型規格。寬度 以及裝置的長寬比等等設計人員可以透過媒體查詢,回應各種板型規格。
媒體查詢是透過 @media
關鍵字 (即 CSS 規則型) 啟動,可用於各種用途。
指定不同類型的輸出
網站通常會顯示在螢幕上,但 CSS 也可以用於為其他輸出內容設定網站樣式。您可能希望網頁在螢幕上顯示的樣貌與列印時有所不同。您可以透過查詢媒體類型來實現這項功能。
在這個範例中,背景顏色設為灰色。不過,如果列印頁面,背景顏色應為透明。 這樣可節省使用者的印表機墨水。
body {
color: black;
background-color: grey;
}
@media print {
body {
background-color: transparent;
}
}
您可以在樣式表中使用 @media
規則,如下所示:
也可以另外製作樣式表,並在 link
元素上使用 media
屬性:
<link rel="stylesheet" href="global.css">
<link rel="stylesheet" href="print.css" media="print">
如果您沒有為 CSS 指定任何媒體類型
其媒體類型值會自動設為 all
。以下兩個 CSS 區塊具有相同效果:
body {
color: black;
background-color: white;
}
@media all {
body {
color: black;
background-color: white;
}
}
以下兩行 HTML 也是等效的:
<link rel="stylesheet" href="global.css">
<link rel="stylesheet" href="global.css" media="all">
查詢條件
您可以為媒體類型新增條件。這些都稱為媒體查詢。 只有在媒體類型相符且條件同時也為 true 時,系統才會套用 CSS。 這些條件稱為媒體功能。
以下是媒體查詢的語法:
@media type and (feature)
如果您的樣式位於不同的樣式表,則可對 link
元素使用媒體查詢:
<link rel="stylesheet" href="specific.css" media="type and (feature)">
假設您想根據瀏覽器視窗是否為橫向模式,套用不同樣式
(可視區域寬度大於其高度) 或直向模式
(可視區域高度大於其寬度)。
您可以使用名為 orientation
的媒體功能,測試以下項目:
@media all and (orientation: landscape) {
// Styles for landscape mode.
}
@media all and (orientation: portrait) {
// Styles for portrait mode.
}
或者,如果您想要使用不同的樣式表:
<link rel="stylesheet" href="landscape.css" media="all and (orientation: landscape)">
<link rel="stylesheet" href="portrait.css" media="all and (orientation: portrait)">
在本例中,媒體類型為 all
。由於這是預設值,因此您可以視需要省略:
@media (orientation: landscape) {
// Styles for landscape mode.
}
@media (orientation: portrait) {
// Styles for portrait mode.
}
或使用個別的樣式表:
<link rel="stylesheet" href="landscape.css" media="(orientation: landscape)">
<link rel="stylesheet" href="portrait.css" media="(orientation: portrait)">
雖然為不同媒體類型 (例如 print
) 使用不同的樣式表可能沒問題,但為每個媒體查詢使用不同的樣式表可能不太妥當。請改用 @media
at-rules。
根據可視區域大小調整樣式
在回應式設計中,最實用的媒體功能之一是瀏覽器可視區域的尺寸。如要在瀏覽器視窗寬度超過特定寬度時套用樣式,請使用 min-width
。
@media (min-width: 400px) {
// Styles for viewports wider than 400 pixels.
}
使用 max-width
媒體功能,套用特定寬度以下的樣式:
@media (max-width: 400px) {
// Styles for viewports narrower than 400 pixels.
}
您可以在媒體查詢中使用任何 CSS 長度單位。
如果您的內容主要以圖片為主,像素可能會是最佳選擇。如果您的內容大多以文字為主,建議您使用以文字大小為依據的相對單位,例如 em
或 ch
:
@media (min-width: 25em) {
// Styles for viewports wider than 25em.
}
您也可以合併媒體查詢,套用多個條件。
請使用 and
這個字詞合併媒體查詢:
@media (min-width: 50em) and (max-width: 60em) {
// Styles for viewports wider than 50em and narrower than 60em.
}
根據內容選擇中斷點
媒體功能條件變成 true 的時間點稱為中斷點。 建議您根據內容選擇斷點,而非熱門裝置尺寸,因為裝置尺寸會隨著每個技術版本週期而變更。
在這個範例中,50em
是文字行變得過長的點。因此會建立中斷點,讓介面更清晰易讀。
使用 column-count
屬性時,文字會從該點分割為兩欄。
@media (min-width: 50em) {
article {
column-count: 2;
}
}
組合
您可以根據可視區域的高度使用媒體查詢,而非只使用寬度。有助於最佳化「不需捲動位置」的介面內容。在先前的範例中 讀者使用寬度很短的瀏覽器視窗 必須向下捲動一欄,然後向上捲動回到第二欄的頂端 只有在可視區域的寬度和高度都足夠時,才建議套用資料欄。
您可以結合媒體查詢,讓樣式只在所有條件都符合時套用。在這個範例中,視區大小至少必須為 50em
寬和 60em
高,才能套用欄位樣式。這些中斷點是根據內容量來選擇。
@media (min-width: 50em) and (min-height: 60em) {
article {
column-count: 2;
}
}
以下範例顯示如何運用媒體查詢,根據使用者裝置的板型規格調整設計。 但這些只是開創無限可能性的做法媒體查詢不僅可用於寬度和高度,還可用於存取使用者針對無障礙功能和主題顏色的偏好設定。使用媒體查詢調整版面配置,是參考上述特色及其他要素的回應式設計。
隨堂測驗
測驗您對回應式媒體查詢的相關知識。
媒體查詢只適用於螢幕大小嗎?
螢幕是否是網站內容唯一的消費或顯示來源?
預設媒體類型為?
screen
screen
」。none
none
不是有效的媒體類型。all
some
some
」不是有效的媒體類型。landscape
landscape
」不是有效的媒體類型。該使用什麼來避免瀏覽器調整行動裝置上的設計?
width: 100%
font-size: 200%
<meta name="viewport" content="width=device-width, initial-scale=1">
瀏覽器視窗「超過」720px
時,要套用的媒體查詢。
@media (width: 720px)
720px
的情況。@media (max-width: 720px)
720px
的情況。@media (min-width: 720px)
720px
,你還是可以閱讀這段說明。@media (clamp-width: 720px)
clamp-width
不是有效的媒體查詢功能條件。