CSS媒體查詢(xún)

對(duì)css的媒體查詢(xún)整理了相關(guān)內(nèi)容:

媒體查詢(xún)

從 CSS 版本 2 開(kāi)始,就可以通過(guò)媒體類(lèi)型在 CSS 中獲得媒體支持。如果您曾經(jīng)使用過(guò)打印樣式表装哆,那么您可能已經(jīng)使用過(guò)媒體類(lèi)型汉买。清單 1 展示了一個(gè)示例吝秕。

清單 1. 使用媒體類(lèi)型

<link rel="stylesheet" type="text/css" href="site.css" media="screen" />
<link rel="stylesheet" type="text/css" href="print.css" media="print" />

在清單 1 中土涝,media 屬性定義了應(yīng)該用于指定每種媒體類(lèi)型的樣式表:
screen 適用于計(jì)算機(jī)彩色屏幕砌梆。
print 適用于打印預(yù)覽模式下查看的內(nèi)容或者打印機(jī)打印的內(nèi)容非区。

作為 CSS v3 規(guī)范的一部分瓜挽,可以擴(kuò)展媒體類(lèi)型函數(shù),并允許在樣式表中使用更精確的顯示規(guī)則征绸。媒體查詢(xún) 是評(píng)估 True 或 False 的一種表達(dá)久橙。如果為 True,則繼續(xù)使用樣式表管怠。如果為 False淆衷,則不能使用樣式表。這種簡(jiǎn)單邏輯通過(guò)表達(dá)式變得更加強(qiáng)大渤弛,使您能夠更靈活地對(duì)特定的設(shè)計(jì)場(chǎng)景使用自定義的顯示規(guī)則祝拯。

媒體查詢(xún)包含一個(gè)媒體類(lèi)型,后跟一個(gè)或多個(gè)檢查特定條件(如最小的屏幕寬度)的表達(dá)式她肯。樣式表中的媒體查詢(xún)看起來(lái)如清單 2 中的示例所示佳头。

清單 2. 媒體查詢(xún)規(guī)則

@media all and (min-width: 800px) { ... }

根據(jù)清單 2 中的標(biāo)記,所有最小水平屏幕寬度為 800 像素的屏幕(屏幕和打印等)都應(yīng)使用如下 CSS 規(guī)則晴氨。該規(guī)則在示例中省略號(hào)所在的地方康嘉。對(duì)于該媒體查詢(xún):
@media all 是媒體類(lèi)型,也就是說(shuō)籽前,將此 CSS 應(yīng)用于所有媒體類(lèi)型亭珍。
(min-width:800px) 是包含媒體查詢(xún)的表達(dá)式,如果瀏覽器的最小寬度為 800 像素枝哄,則會(huì)告訴瀏覽器只運(yùn)用下列 CSS肄梨。

請(qǐng)注意,在清單 2 中挠锥,可以省略關(guān)鍵詞 all 和 and众羡。在將某個(gè)媒體查詢(xún)應(yīng)用于所有媒體類(lèi)型時(shí),會(huì)省略 all蓖租。后面的 and 也是可選的粱侣。使用簡(jiǎn)寫(xiě)語(yǔ)法重新編寫(xiě)媒體查詢(xún)辆毡,如清單 3 所示。

清單 3. 簡(jiǎn)寫(xiě)語(yǔ)法

@media (min-width:800px) { ... }

媒體查詢(xún)也可以包含復(fù)雜表達(dá)式甜害。例如,如果您想要?jiǎng)?chuàng)建一個(gè)僅在最小寬度為 800 像素且最大寬度為 1200 像素時(shí)應(yīng)用的樣式球昨,則需要按照清單 4 中的規(guī)則來(lái)做尔店。

清單 4. 復(fù)雜表達(dá)式

@media (min-width:800px) and (max-width:1200px) { ... }

在您的表達(dá)式中,您可以根據(jù)自己的喜好使用任意數(shù)量的 and 條件主慰。如果您想要增加其他條件來(lái)檢查特定的屏幕方向嚣州,只需添加另一個(gè) and 關(guān)鍵詞,后跟 orientation 媒體查詢(xún)共螺,如清單 5 所示该肴。

清單 5. and 條件

@media (min-width:800px) and (max-width:1200px) and (orientation:portrait) { ... }

清單 5 中的媒體查詢(xún)僅在寬度為 800 到 1200 像素且方向是縱向時(shí)才能激活。(通常藐不,方向僅對(duì)能夠輕易轉(zhuǎn)換縱橫模式的智能手機(jī)和平板電腦上是有意義的匀哄。)如果其中一個(gè)條件為 False,則無(wú)法應(yīng)用媒體查詢(xún)規(guī)則雏蛮。

and 關(guān)鍵詞的反義詞是 or 關(guān)鍵詞涎嚼。和 and 一樣,這些條件組合在一起會(huì)構(gòu)成復(fù)雜表達(dá)式挑秉。如果其中有一個(gè)條件為 True法梯,那么整個(gè)表達(dá)式或分離的兩個(gè)條件都會(huì)為 True,如清單 6 所示犀概。

清單 6. or 關(guān)鍵詞

@media (min-width:800px) or (orientation:portrait) { ... }

如果寬度至少是 800 像素或方向是縱向的立哑,則會(huì)應(yīng)用該規(guī)則。

另一個(gè)保存在詞庫(kù)中的媒體查詢(xún)關(guān)鍵詞是 not姻灶。位于媒體查詢(xún)的開(kāi)始處,not 會(huì)忽略結(jié)果木蹬。換句話(huà)說(shuō)至耻,如果該查詢(xún)本來(lái)在沒(méi)有 not 關(guān)鍵詞的情況下為 true,那么現(xiàn)在它將為 false镊叁。清單 7 展示一個(gè)示例尘颓。

清單 7. 使用 not

@media (not min-width:800px) { ... }

僅從英文意思上理解,清單 7 中代碼的表示:當(dāng)最小寬度不是 800 像素時(shí)晦譬,會(huì)應(yīng)用下列 CSS 規(guī)則疤苹。這些示例只是將像素作為媒體查詢(xún)中的測(cè)量單位,但是測(cè)量單位并不僅限于像素敛腌。您可以使用任何有效的 CSS 測(cè)量單位卧土,比如厘米 (cm)惫皱、英寸 (in)、毫米 (mm) 等尤莺。

有用的媒體特性

媒體很多特性旅敷,比如寬度、顏色和網(wǎng)格颤霎,您可以在媒體查詢(xún)中使用它們媳谁。對(duì)每個(gè)可能的媒體特性進(jìn)行描述不在本文討論范圍內(nèi)。關(guān)于媒體查詢(xún)的文檔 The World Wide Web Consortium's (W3C) 提供了這方面的一個(gè)完整清單友酱。(請(qǐng)參閱 參考資料)晴音。

要設(shè)計(jì)響應(yīng)式網(wǎng)站,只需要了解一些媒體特性:方向缔杉、寬度和高度锤躁。作為一個(gè)簡(jiǎn)單媒體特性,方向的值可以是 portrait 或 landscape或详。這些值適用于持有手機(jī)或平板電腦的用戶(hù)系羞,使您可以根據(jù)兩個(gè)形狀因素來(lái)優(yōu)化內(nèi)容。當(dāng)高度大于長(zhǎng)度時(shí)霸琴,則認(rèn)為屏幕是縱向模式觉啊,當(dāng)寬度大于高度時(shí),則認(rèn)為屏幕是橫向模式沈贝。清單 8 顯示了一個(gè)使用 orientation 媒體模式查詢(xún)的示例杠人。

清單 8. orientation 媒體查詢(xún)

@media (orientation:portrait) { ... }

高度和寬度行為十分相似,都支持以 min- 和 max- 為前綴宋下。清單 9 展示了一個(gè)有效的媒體查詢(xún)嗡善。

清單 9. 高度和寬度媒體查詢(xún)

@media (min-width:800px) and (min-height:400px) { ... }

如果沒(méi)有 min- 或 max- 前綴,您還可以使用 width 和 height 媒體特性学歧,如清單 10 所示罩引。

清單 10. 不帶 min- 和 max- 前綴

@media (width:800px) and (height:400px) { ... }

當(dāng)屏幕正好是 800 像素寬、400 像素高時(shí)枝笨,可以使用清單 10 中的媒體查詢(xún)≡恚現(xiàn)實(shí)中,像這樣的媒體查詢(xún)可能過(guò)于具體而不太有用横浑。檢測(cè)精確維度是大多數(shù)網(wǎng)站訪問(wèn)者都不可能遇到的一個(gè)場(chǎng)景剔桨。通常情況下,響應(yīng)式設(shè)計(jì)會(huì)使用范圍來(lái)執(zhí)行屏幕檢測(cè)徙融。

作為媒體查詢(xún)大小范圍的后續(xù)內(nèi)容洒缀,下一節(jié)將討論一些常見(jiàn)的媒體查詢(xún),在設(shè)計(jì)一個(gè)響應(yīng)式網(wǎng)站時(shí),您可能會(huì)發(fā)現(xiàn)它們非常有用树绩。
常見(jiàn)媒體查詢(xún)

因?yàn)?Apple 首次向市場(chǎng)推出了用戶(hù)智能手機(jī)和平板電腦產(chǎn)品萨脑,所以下列大多數(shù)媒體查詢(xún)都是基于這些型號(hào)的設(shè)備。

如果目標(biāo)是橫向模式智能手機(jī)饺饭,則使用: @media (min-width: 321px) { ... }

如果目標(biāo)是縱向模式智能手機(jī)渤早,則使用: @media (max-width: 320px) { ... }

如果目標(biāo)是橫向模式 Apple iPad,則使用: @media (orientation: landscape) { ... }

如果目標(biāo)是縱向模式 iPad瘫俊,則使用: @media (orientation: portrait) { ... }

您可能已經(jīng)注意到了蛛芥,iPad 上使用的是 orientation 媒體特性,而 width 用于 Apple iPhone 之上军援。主要是因?yàn)?iPhone 不支持 orientation 媒體特性。您必須使用 width 模擬這些方向斷點(diǎn)称勋。請(qǐng)參閱 參考資料胸哥,獲取有關(guān)常見(jiàn)媒體特性的更多信息。
瀏覽器支持

到現(xiàn)在為止赡鲜,您可能已經(jīng)相信 CSS 媒體查詢(xún)是一個(gè)強(qiáng)大的工具空厌,而且想知道哪些瀏覽器支持 CSS 媒體查詢(xún)。以下是這方面的好消息和壞消息银酬。
好消息是:大多數(shù)現(xiàn)代瀏覽器(包括智能手機(jī)上的瀏覽器)都支持 CSS 媒體查詢(xún)嘲更。
壞消息是:最近,來(lái)自 Redmond 的 Windows? Internet Explorer? 8 瀏覽器不支持媒體查詢(xún)揩瞪。
對(duì)于大多數(shù)專(zhuān)業(yè) Web 開(kāi)發(fā)人員來(lái)說(shuō)赋朦,這意味著您需要提供一個(gè)解決方案,以便在 Internet Explorer 中支持媒體查詢(xún)李破。


下列解決方案是一個(gè)名為 respond.js 的 JavaScript polyfill宠哄。

帶有 respond.js 的 Polyfill

Respond.js 是一個(gè)極小的增強(qiáng) Web 瀏覽器的 JavaScript 庫(kù),使得原本不支持 CSS 媒體查詢(xún)的瀏覽器能夠支持它們嗤攻。該腳本循環(huán)遍歷頁(yè)面上的所有 CSS 引用毛嫉,并使用媒體查詢(xún)分析 CSS 規(guī)則。然后妇菱,該腳本會(huì)監(jiān)控瀏覽器寬度變化承粤,添加或刪除與 CSS 中媒體查詢(xún)匹配的樣式。最終結(jié)果是闯团,能夠在原本不支持的瀏覽器上運(yùn)行媒體查詢(xún)辛臊。

由于這是一個(gè)基于 JavaScript 的解決方案,所以瀏覽器需要支持 JavaScript房交,以便運(yùn)行腳本浪讳。該腳本只支持創(chuàng)建響應(yīng)式設(shè)計(jì)所需的最小和最大 width 媒體查詢(xún)。這并不是適用于所有可能 CSS 媒體查詢(xún)的一個(gè)替代涌萤。在 參考資料 部分淹遵,可以閱讀關(guān)于該腳本特性和局限性的更多信息口猜。

Respond.js 是您可以選擇的諸多可用開(kāi)源媒體查詢(xún) polyfills 之一。如果您覺(jué)得 respond.js 無(wú)法滿(mǎn)足您的需求透揣,在進(jìn)行一個(gè)小小的研究之后济炎,您就會(huì)發(fā)現(xiàn)幾個(gè)替代方案。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末辐真,一起剝皮案震驚了整個(gè)濱河市须尚,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌侍咱,老刑警劉巖耐床,帶你破解...
    沈念sama閱讀 206,482評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異楔脯,居然都是意外死亡撩轰,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)昧廷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)堪嫂,“玉大人,你說(shuō)我怎么就攤上這事木柬〗源” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,762評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵眉枕,是天一觀的道長(zhǎng)恶复。 經(jīng)常有香客問(wèn)我,道長(zhǎng)速挑,這世上最難降的妖魔是什么寂玲? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,273評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮梗摇,結(jié)果婚禮上拓哟,老公的妹妹穿的比我還像新娘。我一直安慰自己伶授,他們只是感情好断序,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,289評(píng)論 5 373
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著糜烹,像睡著了一般违诗。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上疮蹦,一...
    開(kāi)封第一講書(shū)人閱讀 49,046評(píng)論 1 285
  • 那天诸迟,我揣著相機(jī)與錄音,去河邊找鬼。 笑死阵苇,一個(gè)胖子當(dāng)著我的面吹牛壁公,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播绅项,決...
    沈念sama閱讀 38,351評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼紊册,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了快耿?” 一聲冷哼從身側(cè)響起囊陡,我...
    開(kāi)封第一講書(shū)人閱讀 36,988評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎掀亥,沒(méi)想到半個(gè)月后撞反,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,476評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡搪花,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,948評(píng)論 2 324
  • 正文 我和宋清朗相戀三年遏片,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鳍侣。...
    茶點(diǎn)故事閱讀 38,064評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖吼拥,靈堂內(nèi)的尸體忽然破棺而出倚聚,到底是詐尸還是另有隱情,我是刑警寧澤凿可,帶...
    沈念sama閱讀 33,712評(píng)論 4 323
  • 正文 年R本政府宣布惑折,位于F島的核電站,受9級(jí)特大地震影響枯跑,放射性物質(zhì)發(fā)生泄漏惨驶。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,261評(píng)論 3 307
  • 文/蒙蒙 一敛助、第九天 我趴在偏房一處隱蔽的房頂上張望粗卜。 院中可真熱鬧,春花似錦纳击、人聲如沸续扔。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,264評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)纱昧。三九已至,卻和暖如春堡赔,著一層夾襖步出監(jiān)牢的瞬間识脆,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,486評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留灼捂,地道東北人离例。 一個(gè)月前我還...
    沈念sama閱讀 45,511評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像纵东,于是被迫代替她去往敵國(guó)和親粘招。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,802評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容