狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

android2.3平臺上web頁面(html5中使用frame)不能滑動、不允許縮放的解決方法

admin
2014年2月8日 17:22 本文熱度 7918

問題描述


web頁面采用html5技術實現,在系統登錄頁面中使用frameset、frame來嵌套另一個頁面,結果當android2.3移動設備訪問該頁面時觸摸屏不能上下滑動頁面。


解決方法


1.首先將該頁面簡單化,去掉frame相關標簽,結果可以滑動頁面,但是根據系統設計需要,frame相關標簽不能去掉;


2.折騰很久未果,最后發現代碼里有viewport的注釋痕跡,于是嘗試使用html5的viewport,查找viewport的使用方法,并根據需要適當修改其中的一些參數如下,結果很令人滿意,問題解決了。


<meta name="viewport" content="width=device-width,user-scalable=yes, minimum-scale=0.4, initial-scale=0.8,target-densitydpi=low-dpi" />



viewport 語法介紹:




<!– html document –>

<meta name=”viewport”

content=”

height = [pixel_value | device-height] ,

width = [pixel_value | device-width ] ,

initial-scale = float_value ,

minimum-scale = float_value ,

maximum-scale = float_value ,

user-scalable = [yes | no] ,

target-densitydpi = [dpi_value | device-dpi | high-dpi | medium-dpi | low-dpi]


/>


target-densitydpi


—-一個屏幕像素密度是由屏幕分辨率決定的,通常定義為每英寸點的數量(dpi)。Android支持三種屏幕像素密度:低像素密度,中像素密度,高像素密度。一個低像素密度的屏幕每英寸上的像素點更少,而一個高像素密度的屏幕每英寸上的像素點更多。Android Browser和WebView默認屏幕為中像素密度。


什么是Viewport



手機瀏覽器是把頁面放在一個虛擬的“窗口”(viewport)中,通常這個虛擬的“窗口”(viewport)比屏幕寬,這樣就不用把每個網頁擠到很小的窗口中(這樣會破壞沒有針對手機瀏覽器優化的網頁的布局),用戶可以通過平移和縮放來看網頁的不同部分。移動版的 Safari 瀏覽器最新引進了 viewport 這個 meta tag,讓網頁開發者來控制 viewport 的大小和縮放,其他手機瀏覽器也基本支持。


關于viewport的一些問題



viewport并非只是ios上的獨有屬性,在android、winphone上同樣也有viewport。它們要解決的問題是相同的,即無視設備的真實分辨率,直接通過dpi,在物理尺寸和瀏覽器之間重設分辨率,這個分辨率和設備的分辨率無關。比如,你拿個3.5寸-320 * 480的iphone3 gs、3.5寸-640 * 960的iphone4或者9.7寸-1024*768的ipad2,雖然設備的分辨率不同,物理尺寸也不同,但你可以通過設置viewport讓它們在瀏覽器里有相同的分辨率。比如說,你的網站是800px寬,你可以通過設置viewport的width=800,來讓你的網站在這三個不同的設備上都剛好滿屏顯示你的網站。



以上的知識,相信每個對viewport稍有了解的同學應該都已經了解了。這不是我今天想說的重點。我想說明的是viewport在ios和android上的一些差異表現。



網上一搜關于viewport的知識,基本上全都是如下信息:


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


這段代碼的意思是,讓viewport的寬度等于物理設備上的真實分辨率,不允許用戶縮放。一都主流的web app都是這么設置的,它的作用其實是故意舍棄viewport,不縮放頁面,這樣dpi肯定和設備上的真實分辨率是一樣的,不做任何縮放,網頁會因此顯得更高細膩。玩ps的同學應該都知道,當你將一張1000 * 1000的圖片直接縮放至500 * 500分變成什么樣,對吧?圖片的失真一定逃不掉。




但我要做的一個應用卻恰恰相反,需要利用viewport,利用縮放。不論真實分辨率是多少,無論物理尺寸是多少,我都希望在瀏覽器里,能有統一的分辨率,同時也不允許用戶縮放。我用來測試的設備有:iphone4、ipad2、htc的g11、不知道什么廠商的aquos phone(android系統)、華碩的android pad、dell的winphone然后我一路遇到了如下問題:




1)如果不顯示地設置viewport,那么width的默認為980。如果頁面的所有元素寬度都小于980,此時width為980,如果頁面最寬的位置超過980,那么width等于最大寬度。總之,默認能將整個頁面從左到右顯示出來。如果設置了viewport,比如,只單純地設置了user-scalable=no,例如<meta name="viewport" content="user-scalable=no" />,那么ios下width還是按980顯示(即默認就會通過dpi縮放),但android和winphone下卻不會再縮放了,瀏覽器分辨率和真實設置分辨率一致。




2)對于ios設備,設置width可以生效,但對于android,設置width并不會生效。ios設備,縮放的比率即dpi是通過你設置的width和設置真實分辨率自動計算的,而android下你設置width無效,你能設置的是一個特殊的字段target-densitydpi,關于target-densitydpi可以參考一下這篇文章:http://hi.baidu.com/j_fo/blog/item/748361279ebccd18908f9d7d.html。也就是說,有三個變量:瀏覽器width、設備真實width、dpi。 我們簡單地用個公式來表達它們之間的關系吧(并非真實關系,簡單說明用) 設備真實width * dpi = 瀏覽器width,這里的三個變量,設備真實width是個我們不能操作的已知值,另外兩個變量我們可以設置一個來影響另一個,在ios中,我們能改的是瀏覽器width,dpi自動生成,而在android中,我們能改的是dpi,瀏覽器width自動生成。對于android,無論我們如何設置width,也不會對瀏覽器width產生影響。



ps:這里我另外再說一個奇怪的問題:在htc的g11里(htc的手機我只有這一個,別的沒有測),如果設置了dpi而不顯示地設置width,則user-scalable=no不生效,即是說:<meta name="viewport" content="target-densitydpi=300,user-scalable=no" />,無法阻止用戶縮放屏幕。我們需要顯示地設置一下width值,僅管這個值對android下的瀏覽器分辨屏并不產生任何影響(對ios還是會產生影響的),我們仍然要設置它,而且這個值一定要大于320,如果小于等于320,也無法使user-scalable=no生效。這個問題只在htc的g11手機上出現,在aquos phone沒有這個問題。兼容android真是件頭痛的事 @_@,未來還不知道有多少坑呢。而在winphone上,結果就更奇怪了:我給viewport的width設一個大于480的值,user-scalable=no就失效了,而設一個小于480的值,user-scalable=no能生效。但無論我給viewport的width設多少值,對winphone真正顯示的width卻并不產生我預期的影響,通過target-densitydpi也沒有影響。設置width,如果小于480的話,屏幕會縮放,但縮小的比例卻和我預期完全不一樣,我不知道它是按照什么規律縮放的。不知道這是winphone的問題,還是dell實現的問題。




3)這一條和上一條應該是直接相關的:ios設備在橫豎屏時,會自動調整dpi,無論橫屏還是豎屏,都能保證瀏覽器width等于viewport中設置的值,所以橫豎屏的時候,頁面里顯示的內容的大小是會自動縮放產生變化的。而android手機在橫豎屏的時候,不會改變dpi,在橫豎屏的時候,網頁不會產生縮放。也正因此,ios可以保證橫豎屏頁面都不會產生滾動條,滿屏顯示,而android卻無法保證這一點,橫著滿屏則豎著無法滿屏,反之亦然。




4)對于ios設備,如果width顯示定義了,而頁面最寬的位置超過width的話,width無效,仍按最寬的寬度來顯示(不會有滾動條)。但此時會出現一個很奇怪的問題,當你將手機橫豎屏切換幾次之后,會發現你的頁面自動放大了,出現了滾動條,但其實放大后的寬度其實和你設的width也并沒有關系。為了防止這種情況出現,你需要將width的寬度設置得比頁面最寬的地方更大,或者相同。


該文章在 2014/2/8 17:22:23 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved