CSS @media 媒體查詢
由於媒體尺寸的多樣性,為了能夠使同一套程式碼適配多種尺寸媒體,於是產生了響應式佈局。
響應式佈局,就是頁面能夠根據當前媒體的不同應用不同的佈局方式,以此達到最佳效果。
佈局方式通常由CSS控制,媒體查詢可以判斷當前媒體型別,從而應用不同的CSS程式碼。
一.媒體查詢歷史:
很多朋友認為媒體查詢是CSS3新增,事實並非如此。
媒體查詢在CSS3之前早已存在,比較粗放一些,僅用來區分媒體的型別。
看如下簡單程式碼例項:
[HTML] 純文字檢視 複製程式碼<link href="css/reset.css" rel="stylesheet" type="text/css" media="screen" /> <link href="css/style.css" rel="stylesheet" type="text/css" media="all" /> <link href="css/print.css" rel="stylesheet" type="text/css" media="print" />
上述程式碼分析如下:
(1).link元素的media屬性用來規定上述CSS程式碼應用的媒體型別。
(2).screen表示對應CSS檔案應用於顯示裝置。
(3).all表示對應CSS檔案應用於所有媒體裝置.
(4).print表示對應CSS檔案應用於印表機。
(5).即便當前媒體不符合要求,也會下載對應的CSS檔案,只是不應用。
media屬性也可以用於<style>元素,規定當前css程式碼應用的媒體型別,本文就不再演示。
CSS3之後,媒體查詢功能得到了增強,不但可以查詢媒體型別,而且還可以查詢媒體的相關屬性。
比如可以根據當前瀏覽器視口的尺寸的大小,來應用不同的CSS程式碼或者CSS檔案。
二.媒體型別與媒體屬性:
上文已經介紹,CSS3媒體查詢只能區分媒體型別,CSS3得到了進一步加強,可以區分媒體的屬性。
下面羅列一下當前媒體查詢常見的媒體型別與媒體屬性:
1.媒體型別:
(1).screen:顯示螢幕,比如電腦、手機或者pad螢幕。
(2).tty:電傳打字機已經等寬字元網格類的裝置。
(3).tv:電視等型別的裝置。
(4).projection:投影儀等裝置。
(5).handheld:一些手持裝置。
(6).print:印表機。
(7).braille:盲人專用的一些裝置。
(8).aural:語音合成器。
(9).all:表示適用於所有裝置。
2.媒體屬性:
媒體屬性是針對媒體型別的一種細化,比如同是screen顯示器裝置,但是規格會有所不同。
比如顯示區域的尺寸不同,再比如顯示器中瀏覽器視口可以調整到不同的尺寸。
主要媒體屬性列舉如下:
(1).寬度屬性:width | min-width | max-width。
(2).高度屬性:height | min-height | max-height。
(3).裝置寬度:device-width | min-device-width | max-device-width。
(4).裝置高度:device-height | min-device-height | max-device-height。
(5).視口寬高比:aspect-ratio | min-aspect-ratio | max-aspect-ratio。
(6).裝置寬高比:device-aspect-ratio | min-device-aspect-ratio | max-device-aspect-ratio。
(7).顏色屬性:color | min-color | max-color。
(8).顏色索引屬性:color-index | min-color-index | max-color-index。
(9).黑白屬性:monochrome | min-monochrome | max-monochrome。
(10).方向屬性:orientation。
(11).解析度屬性:resolution | min-resolution | max-resolution。
(12).網格屬性:grid。
上面當前主要的媒體屬性,有些屬性實在是不太常用,甚至一輩子都不會用到。
所以後面的程式碼例項只會簡單演示一些常見的媒體屬性,如果對其他屬性感興趣可以自行測試。
三.語法介紹:
媒體查詢有兩張應用場所,一種用在<link>與<style>元素之上,一種是CSS程式碼內部。
下面拋開媒體查詢具體的語法不談,首先演示一下使用場所。
[HTML] 純文字檢視 複製程式碼<style media="screen and (max-width:1000px)" > div{ color:red; } </style>
通過media屬性規定媒體查詢的具體內容,對於<link>標籤也是同樣的道理。
上述程式碼規定必須是顯示器螢幕且視口尺寸小於等於1000px時候,能夠將div字型顏色設定為紅色。
[CSS] 純文字檢視 複製程式碼@media screen and (max-width:1000px){ div{ color:red; } }
上述程式碼應用於CSS程式碼內部,功能與前面的完全一樣,以@media作為媒體外掛的語法標記。
具體語法分析如下:
當媒體查詢為true時,就會應用對應的CSS樣式。
無論是通過media還是@media規定媒體查詢,語法都一致,且媒體屬性一定要用小括號包裹。
媒體查詢中有如果敢邏輯操作符,在構建多條件查詢的時候非常有用,屬於語法的一部分。
但是考慮到比較重要,下面單獨拿出來進行一下詳細介紹。
四.邏輯操作符:
媒體查詢中有四個邏輯操作符,分別是and、not、or和only,下面分別介紹一下它們的作用。
1.and操作符:
與JavaScript中的邏輯與操作符一個道理,比如兩側的條件都滿足時,才會返回true。
程式碼片段如下:
[CSS] 純文字檢視 複製程式碼@media screen and (min-width:800px) and (max-width:1200px) { div{ color:red; } }
上述程式碼規定當前媒體必須滿足如下條件,才會將div顏色設定為紅色:
(1).媒體型別必須是screen,也就是必須是顯示器,比如電腦或者手機登。
(2).視口的尺寸必須大於等於800畫素,小於等於1200畫素,比如調整瀏覽器視口到此尺寸。
特別說明:如果操作符不是not或者only,那麼媒體型別是可選的,如果省略,那麼預設值是all。
所以上述程式碼可以修改如下:
[CSS] 純文字檢視 複製程式碼@media (min-width:800px) and (max-width:1200px) { div{ color:red; } }
將媒體型別screen省略掉,功能沒有什麼變化。
2.not操作符:
此操作符用於對一個媒體查詢語句進行取反操作,類似於JavaScript中的邏輯非運算子。
程式碼片段如下:
[CSS] 純文字檢視 複製程式碼@media not screen and (min-width:800px) and (max-width:1200px) { div{ color:red; } }
對上述程式碼分析如下:
(1).not是對整個媒體查詢語句的一個取反,而不是對某一個媒體屬性取反。
(2).所以上述程式碼等同於@media not( screen and (min-width:800px) and (max-width:1200px))。
3.or操作符:
與JavaScript邏輯或操作符相同道理,只要兩側滿足一條,那麼整個媒體查詢語句返回值為true。
程式碼片段如下:
[CSS] 純文字檢視 複製程式碼@media (max-width:500px) , (orientation: landscape) { div{ color:red; } }
特別說明:or操作符用逗號表示,否則會報錯。
只要滿足視口寬度小於等於500畫素或者橫屏的任意一條,那麼div字型顏色就會被設定為紅色。
4.only操作符:
此操作符可能未來就會被淘汰了,它是為了相容低版本的瀏覽器而存在的。
隨著軟硬體的發展進步,它可能就逐步失去存在的意義,下面簡單介紹一下。
看如下程式碼片段:
[HTML] 純文字檢視 複製程式碼media="screen and (max-width:1000px)"{...}
較為老式的瀏覽器可能不支援媒體屬性相關的媒體查詢,上面的程式碼並沒有打算給這些瀏覽器使用。
但是在這些較為老式的瀏覽器中,上述程式碼實質上會被解析為如下程式碼:
[HTML] 純文字檢視 複製程式碼執行程式碼media="screen"{...}
因為較為老式的瀏覽器支援media="screen",所以上述CSS程式碼會老式瀏覽器中生效。
下面通過only操作符對上述程式碼進行一下修改:
[HTML] 純文字檢視 複製程式碼media="only screen and (max-width:1000px)"{...}
上述程式碼在較為老式的瀏覽器中被解析為如下程式碼:
[HTML] 純文字檢視 複製程式碼media="only "{...}
但是並沒有一種叫做"only"的媒體型別,所以CSS程式碼就不會被應用。
五.媒體屬性:
媒體屬性比較多,下面只介紹一些比較常用的幾種。
且大多數支援min-或者max-字首,比如與width屬性關聯的屬性還有min-width和max-width。
為了節省篇幅和時間,只以width屬性為例子進行介紹,其他屬性也是如此。
(1).內容顯示區域寬高比:
aspect-ratio屬性描述了內容輸出區域的寬高比,屬性值是以斜槓(/)分隔的整數。
程式碼片段如下:
[CSS] 純文字檢視 複製程式碼@media (aspect-ratio: 1/2) { div{ color:red; } }
(2).裝置寬高比:
和內容區域寬高比比較相似,屬性值格式相同。
關於它們之間的區別,以電腦端為例子,顯示器螢幕寬高比就是裝置寬高比。
但是瀏覽器客戶區的寬高比就是內容內容寬高比,是不是很容易理解了。
[CSS] 純文字檢視 複製程式碼@media (device-aspect-ratio:16/9) { div{ color:red; } }
(3).內容高度與內容寬度:
height與width描述了媒體內容輸出區域的高度和寬度,比如瀏覽器客戶區的高度和寬度。
[CSS] 純文字檢視 複製程式碼@media (height:800px) { div{ color:red; } }
寬度是同樣的道理,就不再舉例子了。
(4).裝置高度與裝置寬度:
device-height與device-width描述了裝置的高度和寬度,比如顯示器螢幕的高度和寬度。
[CSS] 純文字檢視 複製程式碼@media (device-width: 1200px) { div{ color:red; } }
(5).方向:
orientation規定了裝置是處於橫屏狀態還是豎屏狀態。
具有兩個屬性值,landscape表示橫屏,portrait表示豎屏。
[CSS] 純文字檢視 複製程式碼@media (orientation: portrait) { div{ color:red; } }
前面已經介紹了CSS 媒體查詢的相關內容,媒體查詢還有一些其他相關知識,可以參閱如下文章:
(1).媒體查詢 rem 失效一章節。
(2).JavaScript matchMedia()一章節。
相關文章
- 媒體查詢@media的使用
- css - @media 查詢CSS
- css-媒體查詢CSS
- Media Queries媒體查詢常用關鍵詞
- 詳解css媒體查詢CSS
- CSS3媒體查詢CSSS3
- css3媒體查詢初體驗CSSS3
- CSS 高度和寬度媒體查詢CSS
- 總結CSS3新特性(媒體查詢篇)CSSS3
- 使用window.matchMedia()匹配多個CSS媒體查詢(1)CSS
- 使用window.matchMedia()匹配多個CSS媒體查詢(3)CSS
- 使用window.matchMedia()匹配多個CSS媒體查詢(7)CSS
- 媒體查詢中常用的媒體型別型別
- HTML+CSS編寫靜態網站-37 媒體查詢初探HTMLCSS網站
- 媒體查詢中常用的媒體型別羅列型別
- Plex Media Server for Mac個人媒體軟體ServerMac
- CSS——讓這些“展示”有更好的擴充套件性——媒體查詢CSS套件
- 如何在 JavaScript 中使用媒體查詢JavaScript
- flex結合媒體查詢佈局程式碼Flex
- Plex Media Server for Mac(個人媒體軟體) v1.21.1.3842ServerMac
- CSS media queriesCSS
- Dreamweaver關於媒體查詢命令的使用方法
- 由 Bootstrap 的媒體物件(Media object) 談 flexboxboot物件ObjectFlex
- 分享一下Sass處理的更高階媒體查詢
- 好程式設計師web前端技術分享媒體查詢程式設計師Web前端
- Flex、Grid、媒體查詢實現響應式佈局Flex
- Media Encoder 2022 Mac(媒體編碼器)Mac
- css3 media queryCSSS3
- 通過媒體查詢來實現 WPF 響應式設計
- 在 CSS 中使用特徵查詢CSS特徵
- Media Query 在 CSS 中使用的一個具體例子CSS
- 基於媒體查詢和 rem 的響應式佈局實踐REM
- Gawker Media:Digg對媒體網站流量貢獻日益降低網站
- CSS新規範:樣式查詢CSS
- 在 CSS 中使用功能查詢CSS
- ME 2022:Media Encoder 2022 Mac媒體管理軟體Mac
- CSS3 @media 用法總結CSSS3
- HTML + CSS + JS 利用郵編查詢 API 實現郵編查詢工具HTMLCSSJSAPI