響應式web設計可以讓乙個**同時適配多種裝置和多個螢幕,可以讓**的布局和功能隨使用者的使用環境(螢幕大小、輸入方式、裝置/瀏覽器能力)而變化。本文主要介紹一些響應式布局容易忽略但又很重要的知識點。
移動前端中常說的 viewport (視口)就是瀏覽器中用於呈現網頁的區域。視口通常並不等於螢幕大小,特別是可以縮放瀏覽器視窗的情況下。手機端與pc端視口存在差異,電腦端的視口寬度等於解析度,而移動端的視口寬度跟解析度沒有關係,寬度預設值是裝置廠家指定的。ios, android基本都將這個視口解析度設定為 980px。
1.為什麼手機端視口要設為980px?
當年賈伯斯設想:蘋果手機如果在市場上火爆了,但是各個**還沒有來得及製作手機端網頁,那麼使用者不得不用手機訪問電腦版的網頁,如何用小螢幕訪問大螢幕的頁面也同樣可讀呢?喬幫主就想著為手機固定乙個視口寬度,讓手機的視口寬度等於世界上絕大多數pc網頁的版心寬度,就是980px。這樣,用手機訪問電腦版網頁的時候,旁邊剛好沒有留白。不過頁面縮放後文字會變得非常小,使用者需要手動放大縮小才能看清楚,體驗非常差。
2.約束視口
為了解決前面的問題,可以在網頁的中新增下面這行**:
width=device-width 視口為裝置寬度(就是人設定的乙個寬度)//不設定的話預設為980px
initial-scale=1.0 初始化的視口大小是1.0倍
maximum-scale=1.0 最大的倍數是1.0倍
user-scalable=0 不允許縮放視口
這個視口的標籤告訴瀏覽器怎麼渲染網頁。在這裡,標籤想表達的意思是:按照裝置的寬度(device-width)來渲染網頁內容。事實上,在支援這個標籤的裝置上給你看一看效果,你就明白了。
不錯呀!使用者體驗大大改善!!!
此時如果用document.documentelement.clientwidth來測試瀏覽器螢幕寬度,你會發現當前視口寬度等於手機螢幕的寬度,約數後的視口寬度都是在320~480之間(手機豎直使用的時候)。
這個視口的尺寸,是手機廠商設定的,能夠保證我們的文字比如16px,在自己的這個視口下清晰、大小剛剛合適。所以大螢幕的手機的約束視口 > 小螢幕手機的約束視口。這就能夠保證我們的網頁可以用px寫字號、寫行高。
需要注意的是:約束之後的視口寬度,不是自己的解析度!!每個手機的解析度,都要比自己的視口寬度大得多得多!
最最重要的一句話:前端開發工程師,絲毫不關心手機的解析度,我們只關心視口。
人們常說說「一圖勝千言」,確實如此。我們網頁中關於鬆餅的文字介紹再多,也沒有有吸引力。下面我們就在頁面上方新增一張鬆餅的(2000畫素寬),效果類似引誘使用者往下看的大題圖。
哇,真是好大一張圖,它讓整個網頁看起來都失衡了,水平方向上溢位了。不行,必須解決這個問題。可以用css給指定固定寬度,但問題是我們想讓它能在不同大小的螢幕中自動縮放。比如,我們例子中的iphone螢幕寬度為320畫素,如果我們把設定成320畫素寬,那麼iphone螢幕旋轉後又怎麼辦呢?這時候320畫素變成了480畫素。
解決方案很簡單,只要一行css**就可以讓隨容器寬度自動縮放:
img {
max-width: 100%;
回到手機上,重新整理頁面,結果比較符合預期了。
這裡宣告max-width規則,就是要保證所有最大顯示為其自身的100%(即最大只可以顯示為自身那麼大)。此時,如果包含的元素(比如包含的body或div)比固有寬度小,會縮放佔滿最大可用空間。
為什麼不用width:100%?
要實現的自動縮放,也可以使用更通用的 width 屬性,比如width:100%。然而,這條規則在這裡並不適用。因為這條規則會導致它顯示得跟它的容器一樣寬。在容器比寬得多的情況下,會被無謂地拉伸。
關於 Http 協議,你必須要知道的
http協議是hyper text transfer protocol 超文字傳輸協議 的縮寫,是用於從全球資訊網伺服器傳輸超文字到本地瀏覽器的傳送協議。http 是基於 tcp ip 協議通訊協議來傳遞資料 html 檔案,檔案,查詢結果等 它不涉及資料報 packet 傳輸,主要規定了客戶端和伺...
關於 Http 協議,你必須要知道的
引言一 http的特點 二 http報文 1 請求行post chapter17 user.html http 1.1代表請求方法,chapter17 user html表示uri,http 1.1代表協議和協議的版本。現在比較流行的是http1.1版本。2 請求頭 值對組成,每行一對,關鍵字和值用...
關於Http協議,你必須要知道的
http的特點 2.靈活 http允許傳輸任意型別的資料物件。3.無連線 無連線的含義是限制每次連線只處理乙個請求。伺服器處理完客戶的請求,並收到客戶的應答後,即斷開連線。採用這種方式可以節省傳輸時間。http報文 http報文包括請求報文和響應報文兩大部分,其中請求報文由請求行 request l...