先看乙個簡單的例子:
上面的media語句表示的是:當頁頁寬度小於或等於600px,呼叫small.css樣式表來渲染你的web頁面。首先來看media的語句中包含的內容:
3、(max-width:600px):這個就是**特性,說得通俗一點就是**條件。
前面這個簡單的例項引出兩個概念性的東西,乙個就是**型別(media type)和**特性(media query),首先一起來理解一下這兩個概念:
**型別(media type)在css2中是乙個常見的屬性,也是乙個非常有用的屬性,可以通過**型別對不同的裝置指定不同的樣式,在css2中我們常碰到的就是all(全部),screen(螢幕),print(頁面列印或打邱預覽模式),其實在**型別不止這三種,w3c總共列出了10種**型別。
**特性media query看成media type(判斷條件)+css(符合條件的樣式規則),為了更能理解media query,我們在次回到前面的例項上:
轉換成css中的寫法為:
@media screen and (max-width: 600px)
}
其實就是把small.css檔案中的樣式放在了@media srceen and (max-width;600px)的大括號之中。在語句上面的語句結構中,可以看出media query和css的屬性集合很相似,主要區別在:
常用的media query如下表所示:
相容的瀏覽器:
上面表示的是:當螢幕小於或等於600px時,將採用small.css樣式來渲染web頁面。
media query可以結合多個**查詢,換句話說,乙個media query可以包含0到多個表示式,表示式又可以包含0到多個關鍵字,以及一種media type。正如上面的其表示的是當螢幕在600px-900px之間時採用style.css樣式來渲染web頁面。
上面的**指的是iphone.css樣式適用於最大裝置寬度為480px,比如說iphone上的顯示,這裡的max-device-width所指的是裝置的實際解析度,也就是指可視面積解析度
上面的樣式是專門針對iphone4的移動裝置寫的。
在大數情況下,移動裝置ipad上的safari和在iphone上的是相同的,只是他們不同之處是ipad宣告了不同的方向,比如說上面的例子,在縱向(portrait)時採用portrait.css來渲染頁面;在橫向(landscape)時採用landscape.css來渲染頁面。
/*240px的寬度*/
/*360px的寬度*/
/*480px的寬度*/
我們可以使用media query為android手機在不同解析度提供特定樣式,這樣就可以解決螢幕解析度的不同給android手機的頁面重構問題。
not關鍵字是用來排除某種制定的**型別,換句話來說就是用於排除符合表示式的裝置。
only用來定某種特定的**型別,可以用來排除不支援**查詢的瀏覽器。
其實only很多時候是用來對那些不支援media query但卻支援media type的裝置隱藏樣式表的。
其主要有:支援**特性(media queries)的裝置,正常呼叫樣式,此時就當only不存在;對於不支援**特性(media queries)但又支援**型別(media type)的裝置,這樣就會不讀了樣式,因為其先讀only而不是screen;另外不支援media qqueries的瀏覽器,不論是否支援only,樣式都不會被採用。
在media query中如果沒有明確指定media type,那麼其預設為all,如:
另外還有使用逗號(,)被用來表示並列或者表示或,如下
上面**中style.css樣式被用在寬度小於或等於480px的手持裝置上,或者被用於螢幕寬度大於或等於960px的裝置上。
下面具體講解過程:
準備工作1:設定meta標籤
首先我們在使用media的時候需要先設定下面這段**,來相容移動裝置的展示效果:
這段**的幾個引數解釋:
準備工作2:載入相容檔案js
因為ie8既不支援html5也不支援css3 media,所以我們需要載入兩個js檔案,來保證我們的**實現相容效果:
準備工作3:設定ie渲染方式預設為最高(這部分可以選擇新增也可以不新增)
現在有很多人的ie瀏覽器都公升級到ie9以上了,所以這個時候就有又很多詭異的事情發生了,例如現在是ie9的瀏覽器,但是瀏覽器的文件模式卻是ie8:
為了防止這種情況,我們需要下面這段**來讓ie的文件模式永遠都是最新的:
不過又有乙個更給力的寫法:
怎麼這段**後面加了乙個chrome=1,這個google chrome frame(谷歌內嵌瀏覽器框架gcf),如果有的使用者電腦裡面裝了這個chrome的外掛程式,就可以讓電腦裡面的ie不管是哪個版本的都可以使用webkit引擎及v8引擎進行排版及運算,無比給力,不過如果使用者沒裝這個外掛程式,那這段**就會讓ie以最高的文件模式展現效果。這段**我還是建議你們用上,不過不用也是可以的。
進入css3 media
一般寫法:
@media screen and (max-width: 960px)
}
應該有人會發現上面這段**裡面有個screen,他的意思是在告知裝置在列印頁面時使用襯線字型,在螢幕上顯示時用無襯線字型。但是目前我發現很多**都會直接省略screen,因為你的**可能不需要考慮使用者去列印時,你可以直接這樣寫:
@media (max-width: 960px)
}
其中css2的**查詢:
我們想知道移動裝置是不是縱向放置的顯示屏,可以這樣寫:
我們把第一段的**也用css2來實現,讓它一樣可以讓頁面寬度小於960的執行指定的樣式檔案:
但是上面這個方法,最大的弊端是他會增加頁面http的請求次數,增加了頁面負擔,我們用css3把樣式都寫在乙個檔案裡面才是最佳的方法。
下面的寫法是實現尺寸等於480px:
@media (max-device-height:480px) and (-webkit-min-device-pixel-ratio:2)
其中對於-webkit-min-device-pixel-ratio作如下解釋:
-webkit-min-device-pixel-ratio為1.0:
-webkit-min-device-pixel-ratio為1.3:
-webkit-min-device-pixel-ratio為1.5:
-webkit-min-device-pixel-ratio為2.0:
前端響應式布局
這段時間一直在學習前端的東西記錄一下自己所欠缺的東西!響應式布局 由於以前基本上沒有接觸前端的東西,熟悉又陌生,熟悉是因為經常聽見同事在說,陌生是因為自己沒有實踐過 查詢 查詢 剛開始我看名字以為是查詢之類的 說明 通過不同的 型別和條件定義樣式表規則。ok 我已經了基本上了解響應式布局是幹嘛的了 ...
前端之響應式布局
就是乙個 能夠相容多個終端 而不是為每個終端做乙個特定的版本,可以為不同終端的使用者提供更加舒適的介面和更好的使用者體驗。在標頭檔案中新增乙個meta標籤 其中,width device width 這一句的意思是讓頁面的寬度等於螢幕的寬度。rem 指的是 html 元素的 font size,ht...
web前端 響應式布局
隨著移動裝置的流行,網頁設計必須要考慮到移動端的設計。同乙個 為了相容pc端和移動端顯示,就需要進行響應式開發。利用 查詢,讓同乙個 相容不同的終端 pc端 移動端 呈現不同的頁面布局。css3 media查詢 用於查詢裝置是否符合某一特定條件,這些特定條件包括螢幕尺寸 是否可觸控 螢幕精度 橫屏豎...