用CSS3的@media屬性根據螢幕大小做自適應各種解析度網頁顯示版本-media_query詳解
如今,電腦顯示器的螢幕解析度向越來越大發展,而手機等移動裝置終端的解析度卻不可能大到哪裡去。越來越多的網站,開始讓自己的頁面自適合各種解析度,在小解析度下顯示基本的內容,在大解析度下顯示全部功能,甚至是分多等級的多版本。比如說我們熟悉的wordpress後臺,當螢幕解析度小於900px的時候,左邊的側欄就會變成收攏狀態(@media only screen and (max-width:900px))。
這樣的好處:讓顧客得到最佳的網頁檢視;但是依然存在壞處:比如我自己的習慣喜歡在手機上查某些資料,某些網頁用手機開啟自適應後導致我要找的資料被隱藏了,比較煩躁。結論:請善用這種技術,比如前面wordpress後臺的例子,收攏狀態的側欄,依然可以被點選後展開,這就是一個完美的例子
不管怎麼樣,作為網站前端開發人員需要知道並且會用這種知識。這篇文章讓我們揭開 css 裡面 @media 屬性的神祕面紗,學習一下是如何實現的。
css2裡面的@media
@media 屬性在CSS2裡面已經存在,參見CSS2線上手冊-有愛一街版:@media sMedia { sRules } 屬性詳解,在這個說明頁面我們可以看到在css2裡面雖然支援@media屬性,但是能實現的功能比較少,一般只用做列印的時候做特殊定義的CSS。
css3裡面的@media
@media 屬性在CSS3裡面已經演變成一種 media queries(媒體查詢/匹配)了,參見CSS3線上手冊-有愛一街版:media queries 詳解,在CSS3裡面,可以用查詢語句來匹配各種型別的螢幕。
解析
media_query 媒體查詢條件。包括了 only not and 這些經常在程式裡面出現的邏輯判斷。
expression 表示式。媒體特徵的匹配與否。
media_type 媒體的種類。包括了很多。
media_feature 媒體的特徵。常用的是 min-width max-width 最小最大寬度的判斷。
例項
說多了也不好理解,我們最方便從例項中學習怎麼運用。下面給出一個頁面例子,你可以從這個例子中看出,不同瀏覽器螢幕寬度、高度下的背景顏色的自動變換:
其中核心的css程式碼如下:
從上面的例項可以看出,要小於的時候用max,要大於的時候用min,邏輯是正好相反的,大家注意一下。
擴充套件總結
有了媒體匹配查詢的CSS3功能之後,你就可以在一個頁面上定義多套顯示風格了,非常好用方便。
但是低階版本的IE不支援怎麼辦?誰去管它呢?你有預設的一套風格都支援就好了啊,一般手機上的瀏覽器都是webkit的核心,這些東西都是相容的。所以這麼好用的一個屬性,大家都喜歡用。