不生效 設置了viewport_配置viewport

最近項目中需要開發內嵌的H5頁面,viewport不是很熟悉,故來翻譯一下此篇文件加深理解

原文

配置viewport

IOS上的safari使用一種縮放的工作模式來展示pc端的網頁,如果默認的設置對你的網頁展示不友好,推薦你改變veiwport默認配置,開發IOS上使用的網頁,你需要設置viewport,在html文檔中,增加一行標記來配置viewport,但是要理解viewport怎么對你的網頁展示還是很容易混淆,在配置viewport之前,你需要深度理解一下ios上的viewport

viewport是什么

在PC和IOS上瀏覽器的viewport有一些不太一樣

在IOS上的safari,沒有窗口、滾動條、調整窗口的按鈕見圖3-1,用戶輕彈手指來操作,用戶通過雙擊、雙手捏開來放大,雙手捏緊來縮小,這些收拾在pc端是不支持的,由于用戶有不同的操作方式來操作pc端和移動端的頁面,所以viewport在pc端和移動端表現不一樣,由于不一樣的表現,所以相同的css和html也有不一樣的表現。

圖3-1

桌面的safari viewport

桌面瀏覽器的viewport是網頁的可視區域如圖3-2,如果頁面的寬度大于viewport,用戶可以通過縮放按鈕來縮放瀏覽器的viewport大小,用戶也可以控制滾動條看到更多的頁面內容,當viewport變化,safari 也許會重新布局,比如會擴充壓縮寬度是適配viewport,如果頁面寬度小于viewport,那么剩余位置會填充剩余的空白

3-2

IOS上的viewport

在IOS上,viewport取決于內容如何布局、文本在頁面上的換行情況,viewport可能大于或小于可視區域,當用戶在IOS上平移網頁時灰色條形顯示在屏幕的右側和底部,作為視覺反饋,向用戶顯示與視口相比可見區域的大小,用戶可以使用雙擊輕點、捏開、捏緊手勢來改變viewport的縮放比例,唯一的例外是,當用戶從縱向更改為橫向時,在某些情況下,iOS上的Safari可能會調整視口的寬度和高度,并因此更改網頁布局

默認viewport配置

初始化設置寬度和縮放比例是為了讓大部分網頁可以很好的展示,如果3-3,默認的寬度是980px,當然這個默認值,可能不能很好的適配你的網頁,特別是如果您要針對特定??設備定制網站,例如3-3右邊的圖,網頁展示的太窄了,這樣的話,你可以修改默認的viewport

3-3

viewport meta tag

使用viewport meta標簽來提高網頁的展示,你可以設置viewport來這是默認的寬度和初始化縮放值,例如,如果你的網頁比980更窄,你應該設置寬度為你網頁內容的寬度,如果你專門為iphone ipod開發的web程序,你應該設置為設備的寬度

由于iOS在具有不同屏幕分辨率的設備上運行,因此在引用設備尺寸時,應使用常量而不是數字值。使用device-width作為設備的寬度,并使用device-height作為縱向的高度

你不需要設置所有的viewport屬性,如果僅設置了一部分屬性,然后iOS上的Safari會推斷其他值,例如如果你設置了默認的初始縮放為1.0,瀏覽器會推測橫向寬度為deivce-width,如果是縱向是,deivce-height為頁面寬度,因此,如果你向設置width為980px初始化scale為1.0,那你需要設置這兩個屬性

設置寬度為device-width

設置默認縮放

改變viewport的寬度和高度

在IOS上,你有一個非常重要的任務就是去設置viewport的寬度去適配你的web程序內容寬度,這樣來確保你的網頁在ios上看起來是正常的

如果你的網站必須要在980px下才能很好的適配,如果IOS上的safari不能設置980的viewport,只能左上角灰色的小塊能夠展示出來,這個默認就不能展示頁面的所有內容,這樣的話,你就需要設置meta去適配supported

3-4

如果頁面的寬度小于默認的viewport寬度,那么頁面展示將如圖3-5左邊的圖片,現在設置viewport的寬度為頁面的寬度,此刻展示如圖3-5右邊,為了實現右邊效果,你需要在你的html文件中的

增加如下代碼

3-5

iphone、ipod觸屏設備上,web程序開發中,非常重要的是改變viewport的width為設備的寬度,圖3-6展示了,設置viewport為divice-width是的效果

3-6

瀏覽器是怎么設置初始化的寬度 高度 和初始化縮放

如果你設置了一些屬性,這時瀏覽器會自動計算其他屬性的值,以適配網頁的展示,例如,如果只設置了初始化的縮放值,這時候width和height會自動計算,相似的 如果只設置了width,那么heigh和scale會自動計算,如果你設置的值沒有生效,那么需要設置更多的值。

由于瀏覽器可以自動推算寬度、高度、縮放比例,那么用戶旋轉手機方向時,viewport的視口發生變化,例如當用戶通過旋轉設備從縱向更改為橫向時,視區寬度可能會擴大,僅有這種用戶行為可能引起viewport的重新計算,改變在瀏覽器的布局。

在iOS上,Safari的目標是當網頁完全縮小時,保持與任一方向上可見區域的比率相等的比率,使其適合可見區域,這最好通過獨立設置視區屬性來說明,然后觀察其他viewport屬性對viewport影響,下面一系列的例子來展示,相同的web 內容和不同viewport的設置相同影響。

圖3-7展示采用默認寬度980px和沒有默認縮放行為的 viewport,來一個web頁面的展示

3-7

圖3-8 設置了initial scale為1.0展示相同的web頁面,瀏覽器去推算了width和height去適配了網頁可視區域展示,這個width被推算成了橫向時device-width,縱向時device-height

3-8

相似的,如果你近設置了viewport的寬度,這個height和initial scale也會推算出來,圖3-9,展示phone設置viewport width為320時,縱向展示跟圖3-8一致,橫向展示的時候width等于device-width,它改變了初始的比例,當用戶改變到橫向時,它有放大的效果

3-9

圖3-10,在設置viewport width一個小于可視區域的寬度200px,展示相同的頁面,網頁的viewport被設置了200px時,推斷高度和影響頁面第一次渲染的的initical scale

3-10

最后,圖3-11設置了width和initical scale值來展示相同頁面,瀏覽器保持可視區域兩個方向上相同比率的自動推算了高度,因此如果width設置為980,initical width 為1.0 那么瀏覽器會推算出 手機橫置時為1091,縱置時為425

3-11

minimum-scale和maximum-scale屬性也會被影響,當手機改變方式時,這兩個屬性的范圍[0, 10.0], 默認的minimum-scale 0.25 maximum-scale 5.0

web程序設置viewport

如果你準備開發ios下的web應用程序,推薦設置你網頁的寬度為ios上的可視化寬度,設置為device-width,因此initical scale 為1.0,讓用戶改變手機方向時,viewport不會重新計算

如果你不改變瀏覽器的viewport 屬性,你的網頁會展示在頁面的左上角如圖3-12,在開發web應用程序時,設置viewport的width 應該是你的首要任務,不需要用戶通過縮放來使用你的程序

3-12

如果設置來device-width,那么你的網頁展示如圖3-13所有,用戶可以向下滑動來看余下的網頁,如果比可視區域更高

3-13

你也許不想用戶去縮放web程序,在這種情況下,可以關閉用戶的縮放屬性

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/272086.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/272086.shtml
英文地址,請注明出處:http://en.pswp.cn/news/272086.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Linux文件操作實用筆記

Linux系統遵循一切皆是操作文件的規則。所以想用好Linux系統,就必須要掌握文件相關的操作。 1、創建文件命令:touch 語法格式: touch filename #filename 文件名稱。 比如 touch hello.txt就會在當前木創建一個hello.txt的文件。 說明&#x…

安裝完CentOS 7 后必做的七件事

CentOS是最多人用來運行服務器的 Linux 版本,最新版本是 CentOS 7。當你興趣勃勃地在一臺主機或 VPS 上安裝 CentOS 7 后,首要的工作肯定是加強它的安全性,以下列出的七件事,是你進一步配置系統和安裝其他軟件前必須做的。 1. 更改…

python顯示小數點后幾位數_python窗口編程-3:數位處理(整數)

我們在上一次課程中(python窗口編程-2:風格與布局 ),制作了完整的計算器窗口界面,只是那個窗口沒有真正的功能,是點擊任何按鈕都會關閉。這一次,我們加入一些事件處理的功能,讓它成為一個正常工作的窗口程序…

Linux文件目錄基礎筆記

1、進入目錄名稱:cdcd命令主要是方便用戶切換到不同目錄的指令。比如:cd #只執行cd命令默認進入root的根目錄cd /home #進入home目錄,如果home目錄有testdir目錄的話,可以執行 cd testdir 進入testdir目錄。2、創建目錄命令&#…

eclipse安卓工程的構建、配置連接模擬器、安卓工程結構介紹

安卓工程構建及第一個安卓程序運行: 首先新建安卓工程: 然后填寫APP信息,下面的包名一般都是公司域名的倒寫,包名中不能有中文,否則會報錯。 然后配置一些安卓app的選項 有關app啟動的圖標(就像QQ的企鵝一…

android eclipse 導入idea項目

將以下代碼復制到.project中 <?xml version"1.0" encoding"UTF-8"?> <projectDescription> <name>IDEATest</name> <comment/> <projects/> <buildSpec> <buildCommand> <name>com.android.ide.…

Linux中su和sudo的用法整理

一、為什么會有su和sudo命令&#xff1f;主要是因為在實際工作當中需要在Linux不同用戶之間進行切換。root用戶權限最高很多時候需要root用戶才能執行一些關鍵命令。所以需要臨時切換為root用戶。工作完成后&#xff0c;考慮到系統的安全性避免誤操作需要切換為普通用戶。su和s…

codeforces 650B - Image Preview

題意&#xff1a;給你n個照片&#xff0c;從第一個照片開始看&#xff0c;如果一張照片是w&#xff0c;那么要花費b時間去反轉他&#xff0c;否則不用反轉&#xff0c;看一張從來沒看過的照片要1時間&#xff0c; 從一張滑動到另一張要a時間。如果一張照片看過&#xff0c;則不…

asp js單步調試_如何使用Chrome的控制臺高效的調試Javascript代碼?

引言在我們的日常開發中我們常常會遇到JavaScript的調試問題&#xff0c;而我們解決問題的傳統解決方案就是使用大量的console.log或者console對象的其他方法&#xff0c;這會給我們帶來很多不便&#xff0c;特別是遇到復雜問題的時候&#xff0c;可能會出現大量的console.log&…

安卓App的啟動過程、安卓布局分類及布局和頁面的關系

Android App 啟動流程: 當你想要啟動一個app時&#xff0c;首先得點擊該app桌面圖標。那點擊圖標時到底發生了什么呢&#xff1f;先看個理論知識 .Launcher: launcher其實就是一個app&#xff0c;從功能上說&#xff0c;是對手機上其他app的一個管理和啟動&#xff0c;從代碼…

Linux文件默認權限和umask筆記

關于Linux文件默認權限的問題&#xff0c;可以實際先嘗試一下如下命令&#xff1a;root用戶登錄[rootlocalhost test]# touch file1[rootlocalhost test]# ls-l file1-rw-r--r-- 1 root root 0 May 5 08:28 file1 #輸出結果 對應的數字權限 644[rootlocalhost test]# touch fi…

Android相對布局(RelativeLayout)常用屬性、練習使用按鍵、文本框等控件、線性布局(LinearLayout)屬性

RelativeLayout中子控件常用屬性&#xff1a; 子控件默認是從父控件的左上角開始排列的 相對于父控件 android:layout_alignParentTop"true" 和父控件的頂部對齊android:layout_alignParentBottom"true" 和父控件的底部對齊android:layout_alignPar…

Seata AT模式

基本思路 先決條件 支持本地ACID事務的關系數據庫。通過JDBC訪問數據庫的Java應用程序。 整體機制 從兩個階段提交協議的演變&#xff1a; 階段1&#xff1a;在同一本地事務中提交業務數據和回滾日志&#xff0c;然后釋放本地鎖和連接資源。階段2&#xff1a; 對于提交情況…

自媒體各大平臺收益對比_哪些自媒體平臺沒有新手期,適合小白擼收益?

2-26把我設置為星標&#xff0c;不錯過每一次的干貨&#xff5e;各大自媒體平臺的新手期總是讓小白們望而卻步&#xff0c;特別是百家號審核非常嚴格&#xff0c;如果沒思路、沒人指導&#xff0c;過新手有難度。不過&#xff0c;還是有很多平臺對新手寶寶很友好&#xff0c;沒…

Linux關于文件的權限筆記

1、調整文件的權限命令&#xff1a;chmodLinux的每個文件都定義了文件的擁有者&#xff1a;u(user)、擁有組&#xff1a;g&#xff08;group&#xff09;、其他人&#xff1a;o&#xff08;others&#xff09;權限&#xff0c;對應的權限用rwx的組合來定義。使用chmod命令&…

presentViewController和pushViewController

iPhone開發中從一個視圖跳到另一個視圖有三種方法&#xff1a;1、self.view addSubView:view 、self.window addSubView,需要注意的是&#xff0c;這個方法只是把頁面加在當前頁面。此時在用self.navigationControler.pushViewController和 pushViewController 是不行的。要想使…

啟動rrt什么意思_python學習第144課--創建虛擬機、設置虛擬機參數以及啟動虛擬機...

【每天幾分鐘&#xff0c;從零入門python編程的世界&#xff01;】上節我們介紹了下載虛擬機以及centOS的相關事項&#xff0c;現在我們創建虛擬機。●創建虛擬機安裝好virtualbox之后&#xff0c;我們點擊Oracle VM VirtualBox打開管理器&#xff0c;界面如下圖&#xff1a;你…