前端積累 響應式布局(二)

2021-09-03 08:08:46 字數 4133 閱讀 8174

先看乙個簡單的例子:

上面的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查詢 用於查詢裝置是否符合某一特定條件,這些特定條件包括螢幕尺寸 是否可觸控 螢幕精度 橫屏豎...