移動WEB viewport 相關知識

来源:http://www.cnblogs.com/starof/archive/2016/12/06/6100466.html
-Advertisement-
Play Games

瞭解移動web viewport的知識,主要是為了切圖時心中有數。本文主要圍繞一個問題:切圖時怎樣設置<meta name="viewport">相關參數?圍繞這個問題對viewport展開講解。 一、viewport【此處的viewport即layout viewport】概念 移動設備的view ...


瞭解移動web viewport的知識,主要是為了切圖時心中有數。本文主要圍繞一個問題:切圖時怎樣設置<meta name="viewport">相關參數?圍繞這個問題對viewport展開講解。

一、viewport【此處的viewport即layout viewport】概念

移動設備的viewport是指設備屏幕上能夠顯示網頁的一塊區域。

這塊顯示網頁的區域可能比瀏覽器可視區域大,也可能比瀏覽器可視區域小,切圖時也可以設置。預設情況,移動設備的viewport大於移動設備瀏覽器的可視區域,主要是為了在移動設備上能夠顯示PC端的頁面。

移動設備瀏覽器會有一個預設的viewport值可能是980px,1024px或其他值,由設備定。

手機瀏覽器要顯示pc頁面預設做了兩件事,先把頁面渲染在980px的layout viewport中,然後通過縮放在手機屏幕上展示,讓用戶看到頁面全貌。

但是移動端切圖的時候我們不會用這個預設的980px來佈局,主要是因為
* 寬度不可控制,不同系統不同設備的預設值viewport都可能不同
* 頁面縮小版顯式,交互不友好
* 鏈接不可點
* 有縮放,縮放後又有滾動,交互不友好。

而且用戶縮放會引起px和dp對應關係發生變化,頁面放大一倍,那麼css中1px所代表的物理像素會增加一倍,頁面縮小一倍,css中1px所代表的物理像素會減少一倍。

所以用預設的980px佈局是很不規範的,那麼切圖時為了排版正確,我們怎麼做呢?我們會用到<meta>標簽,下麵一步步說。

二、layout viewport和visual viewport

1、layout viewport

瀏覽器預設的viewport叫layout viewport,這個layour viewport可以通過document.documentElement.clientWidth 來獲取。(對前端切圖來說很重要)

2、visual viewport

layout viewport的寬度大於瀏覽器可視區域的寬度,還需要一個viewport代表瀏覽器可視區域的大小(對前端切圖來說不是太重要),這個viewport叫 visual viewport。

visual viewport的寬度可以通過window.innerWidth 來獲取。

3、ideal viewport

visual viewport代表移動設備瀏覽器可視區域的寬度,layout view為了顯示PC端頁面被設置的很大,現在移動端發展這麼快速,還需要一個能完美適配移動設備的viewport。這個完美適配的viewport中用戶不需要縮放,不需要橫向滾動條就能正常查看網站的所有內容。這個ideal viewport就是移動設備理想viewport。

ideal viewport的寬度等於移動設備的屏幕寬度。

三、利用meta標簽對viewport進行控制

移動端預設的viewport是layout viewport,也就是那個比屏幕寬的viewport,而切圖時需要讓這個預設的layout viewport變成ideal viewport。這就是移動端開發中<meta> 標簽的作用。

<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">

這段meta重置layout viewport的寬度為設備寬度,讓我們切圖時在ideal viewport中完成,而不是用預設的layout viewport來切圖。

meta viewport 標簽首先是由蘋果公司在其safari瀏覽器中引入的,目的就是解決移動設備的viewport問題。後來安卓以及各大瀏覽器廠商也都紛紛效仿,引入對meta viewport的支持,事實也證明這個東西還是非常有用的。

在蘋果的規範中,meta viewport 有6個屬性(暫且把content中的那些東西稱為一個個屬性和值),如下:

width 設置layout viewport  的寬度,為一個正整數,或字元串"width-device"
initial-scale 設置頁面的初始縮放值,為一個數字,可以帶小數
minimum-scale 允許用戶的最小縮放值,為一個數字,可以帶小數
maximum-scale 允許用戶的最大縮放值,為一個數字,可以帶小數
height 設置layout viewport  的高度,這個屬性對我們並不重要,很少使用
user-scalable 是否允許用戶進行縮放,值為"no"或"yes", no 代表不允許,yes代表允許

 

 

本文作者starof,因知識本身在變化,作者也在不斷學習成長,文章內容也不定時更新,為避免誤導讀者,方便追根溯源,請諸位轉載註明出處:http://www.cnblogs.com/starof/p/5443445.html有問題歡迎與我討論,共同進步。 

擴展閱讀:

ppk大神對於移動設備上的viewport的研究(第一篇第二篇第三篇)。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 這篇博文主要講一下如何使用Phantomjs進行數據抓取,這裡面抓的網站是太平洋電腦網估價的內容。主要是對電腦筆記本以及他們的屬性進行抓取,然後在使用nodejs進行下載圖片和插入資料庫操作。 ...
  • 1.canvas元素基礎知識 (1)在頁面上放置canvas元素,相當於在頁面上放置一塊“畫布”,可以用Javascript編寫在其中進行繪畫的腳本。 (2)在頁面中放置canvas元素 eg: 如上程式,使用canvas和Javascript腳本繪製矩形,步驟如下: (1)取得canvas元素,用 ...
  • XML文件的約束:什麼叫約束呢?顧名思義,就是對xml文件的內容進行按照既定規則的限制。我們知道,因為xml文件的標簽是可以自定義的,而往往我們用xml文件都是為了表達一定的數據集合(即小型的資料庫),而眾所周知的,資料庫也是分類型的,如學生資料庫,就包含了一系列的諸如name,age,studen ...
  • 1.級聯select的操作,後一個select的值隨著前一個select選中值變化 2.獲取select選中項value值 3.獲取select選中項的文本text 4.設置select選中對應value值項、對應text文本項 ...
  • 續上一篇文章:vue2.0 開發實踐總結之入門篇 ,如果沒有看過的可以移步看一下。 本篇文章目錄如下: 1. vue 組件的說明和使用 2. vuex在實際開發中的使用 3. 開發實踐總結 1. vue 組件的說明和使用 一個組件實質上是一個擁有預定義選項的一個 Vue 實例 在header組件內部 ...
  • 個人開發包的目錄結構 開發步驟 註冊 "npmjs" 命令行添加user 註冊成功後,在命令行執行 依次填完回車。 whoami 上面的填寫完後,命令行輸入 說明成功了。 npm publish 最後發佈至npmjs上 出現下麵類似的版本號就成功了 index.js的編寫 安裝&使用 可能遇到的問題 ...
  • 一、盒子模型(Box Model) 盒子模型也有人稱為框模型,HTML中的多數元素都會在瀏覽器中生成一個矩形的區域,每個區域包含四個組成部分,從外向內依次是:外邊距(Margin)、邊框(Border)、內邊距(Padding)和內容(Content),其實盒子模型有兩種,分別是 ie 盒子模型和標 ...
  • 第三章 DOM Scripting dom 文檔對象模型 類似的還有 bom 瀏覽器對象模型 。 要使用一個 對象首先要知道該對象存在的位置,比如 document 對象 它並不是被定義在 ECMAScript 中而是 dom 中。所以 本來你每次訪問 document就很慢。 引用: 文檔對象模型 ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...