欧美亚洲综合图区在线|天天射天天干国产成卜|99久久免费国产精精品|国产的欧美一区二区三区|日韩中文字幕无码不卡专区|亚麻成人aV极品一区二区|国产成人AV区一区二区三|成人免费一区二区三区视频网站

當(dāng)前位置:首頁(yè) > 網(wǎng)站建設(shè) > 正文內(nèi)容

h5手機(jī)端頁(yè)面適配(h5頁(yè)面適配手機(jī)尺寸)

網(wǎng)站建設(shè)2年前 (2023-04-09)1762

本篇文章給大家談?wù)刪5手機(jī)端頁(yè)面適配,以及h5頁(yè)面適配手機(jī)尺寸對(duì)應(yīng)的知識(shí)點(diǎn),希望對(duì)各位有所幫助,不要忘了收藏本站喔。

本文目錄一覽:

H5頁(yè)面自動(dòng)適應(yīng)橫豎屏

對(duì)于樣式:

通過(guò)html標(biāo)簽可強(qiáng)制移動(dòng)端瀏覽器橫屏或豎屏但兼容性較差,目前僅有:

UC強(qiáng)制豎屏:meta name="screen-orientation" content="portaint"

QQ強(qiáng)制豎屏:meta name="screen-orientation" content="landscape"

通過(guò)HTML標(biāo)簽media識(shí)別橫屏和豎屏,分別引用不同的css:

豎屏:

link rel="stylesheet" media="all and (orientation:portrait" href="portrait.css"

豎屏:

link rel="stylesheet" media="all and (orientation:landscape)" href="landscape.css"

通過(guò)css媒體查詢判斷橫豎屏,并分別指定樣式:

@media?screen?and?(orientation:?portrait)?{

//豎屏 ?CSS

}

@media?screen?and?(orientation:?landscape)?{

//橫CSS

}

對(duì)于事件:

通過(guò)onorientationchange事件或resize事件監(jiān)聽(tīng)手機(jī)的橫豎屏,分別指定對(duì)應(yīng)的事件。

強(qiáng)制通過(guò)頁(yè)面 禁止app或手機(jī)的橫豎屏的切換是不現(xiàn)實(shí)的,H5只能針對(duì)自身頁(yè)面做適配?。?!

手機(jī)端h5網(wǎng)頁(yè)適配的js,以及常用的一些meta

手機(jī)端網(wǎng)頁(yè)適配,一般設(shè)計(jì)稿寬750,根據(jù)設(shè)計(jì)稿適配。

頁(yè)面頭部一般會(huì)加這些meta

meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"

meta name="wap-font-scale" content="no"

meta name="viewport" content="width=device-width, minimum-scale=1, maximum-scale=1,user-scalable=no"

meta name="apple-mobile-web-app-capable" content="yes" /

!-- 忽略頁(yè)面中的數(shù)字識(shí)別為電話號(hào)碼,email識(shí)別 --

meta name="format-detection"content="telephone=no, email=no" /

!-- 啟用360瀏覽器的極速模式(webkit) --

meta name="renderer" content="webkit"

!-- 避免IE使用兼容模式(這個(gè)適合加在PC) --

meta http-equiv="X-UA-Compatible" content="IE=edge"

!--? 針對(duì)手持設(shè)備優(yōu)化,主要是針對(duì)一些老的不識(shí)別viewport的瀏覽器,比如黑莓? ? --

meta name="HandheldFriendly" content="true"

!-- uc強(qiáng)制豎屏 --

meta name="screen-orientation" content="portrait"

!-- QQ強(qiáng)制豎屏 --

meta name="x5-orientation" content="portrait"

!-- UC強(qiáng)制全屏 --

meta name="full-screen" content="yes"

!-- QQ強(qiáng)制全屏 --

meta name="x5-fullscreen" content="true"

!-- UC應(yīng)用模式 --

meta name="browsermode" content="application"

script type="text/javascript"

? ? ? (function(d,c){

? ? ? ? var e=d.documentElement,

? ? ? ? ? a="orientationchange" in window?"orientationchange":"resize",

? ? ? ? ? b=function(){

? ? ? ? ? ? var f=e.clientWidth;

? ? ? ? ? ? if(!f){return}

? ? ? ? ? ? if(f=750){

? ? ? ? ? ? ? ? e.style.fontSize="100px"

? ? ? ? ? ? }else{

? ? ? ? ? ? ? ? e.style.fontSize=100*(f/750)+"px"

? ? ? ? ? ? }

? ? ? ? ? };

? ? ? ? ? if(!d.addEventListener){return}

? ? ? ? ? b();

? ? ? ? ? c.addEventListener(a,b,false);

? ? ? ? ? d.addEventListener("DOMContentLoaded",b,false)

? ? ? ? }

? ? ? )(document,window);

? ? /script

移動(dòng)端H5頁(yè)面適配問(wèn)題研究

剛開(kāi)始做移動(dòng)端web開(kāi)發(fā)的同學(xué)應(yīng)該都碰到過(guò)頁(yè)面適配問(wèn)題,為什么我在開(kāi)發(fā)手機(jī)上調(diào)試好的頁(yè)面在其他手機(jī)會(huì)有這樣或那樣的樣式問(wèn)題? viewport 我也設(shè)置了,為什么還是顯示不正常?難道我要為每種手機(jī)屏幕寫媒體查詢,有沒(méi)有簡(jiǎn)單的方式,可以不用關(guān)注手機(jī)屏幕的差異性呢?

百度中搜索 移動(dòng)端H5頁(yè)面適配 關(guān)鍵字,大概可以得到180多萬(wàn)的搜索結(jié)果,由此可見(jiàn)這個(gè)問(wèn)題也得到很多人的關(guān)注。本文的目的主要是分析解決移動(dòng)端H5頁(yè)面適配問(wèn)題過(guò)程中牽扯到的知識(shí)點(diǎn),然后梳理分析目前常見(jiàn)的適配解決方案。

由于本文內(nèi)容較長(zhǎng),下面先給出文章的提綱:

1.1理解移動(dòng)端單位

  1.2理解viewport

2.1圖片高清適配

  2.2字體大小適配

  2.3布局寬度適配

---這里是分隔符,正文開(kāi)始---

不知道正在看文章的你對(duì)上面列出來(lái)的這些單位是不是很熟悉,如果是的話,就可以跳過(guò)了。

理解這些單位的用法以及區(qū)別,對(duì)理解移動(dòng)端頁(yè)面適配有很大的幫助。為了讓你對(duì)上面的單位有個(gè)大體的認(rèn)知,這里把上面的單位分成了三類:

下面分別對(duì)每個(gè)單位展開(kāi)分析:

*** dpi / ppi ***

** dpi ** , dot per inch ,每英寸的點(diǎn)數(shù);打印或印刷領(lǐng)域使用的單位,代表打印機(jī)每英寸可以打印出的點(diǎn)數(shù) 。

ppi , pixel per inch ,每英寸的像素?cái)?shù),像素密度;表示圖像或者顯示器單位面積上像素?cái)?shù)量。

dpi 和 ppi 都是描述分辨率的單位,但是兩者是有區(qū)別的,但是在描述手機(jī)分辨率時(shí),可以認(rèn)為兩者意義相同,以前android設(shè)備偏向于使用 dpi ,ios設(shè)備偏向于使用 ppi ,目前android和ios統(tǒng)一使用 ppi 描述手機(jī)屏幕的像素顯示密度。

ppi的計(jì)算方法:

*** ldpi、mdpi、hdpi、xhdpi、xxhdpi ***

android對(duì)移動(dòng)設(shè)備不同屏幕分辨率的分類。

*** pt,pc,sp ***

** pt ** ,磅(point的音譯),印刷中使用的表示字型的大小單位,1inch = 72pt (印刷中這個(gè)關(guān)系成立,ios中不成立),ios開(kāi)發(fā)中使用的邏輯單位,是和設(shè)備無(wú)關(guān)的單位。

** pc ** 印刷中使用的單位,1pc = 12pt,不需要關(guān)注。

** sp **, scale independent pixel ,android設(shè)備中用來(lái)顯示字體大小的,和設(shè)備無(wú)關(guān)的尺寸,當(dāng)設(shè)置字體大小單位為sp時(shí),android系統(tǒng)字體大小會(huì)影響設(shè)置的字體渲染時(shí)的大小。

*** dip / dp ***

** dp/dip**, device independent pixel,表示設(shè)備獨(dú)立像素,和設(shè)備無(wú)關(guān)的尺寸,相同的dp/dip值,不同設(shè)備展示的效果是一樣的。

android使用的單位,之前偏向使用dip,目前建議使用dp。

android設(shè)備中,規(guī)定160ppi的屏幕,1dp = 1px;320ppi的屏幕,1dp = 2px,所以android設(shè)備中dp的計(jì)算方法:dp = px * (ppi / 160),這里的px是指設(shè)備的物理像素點(diǎn)。

和ios開(kāi)發(fā)中用的pt單位類似。

*** px ***

** px ** ,像素,有兩種像素概念,一種是網(wǎng)頁(yè)設(shè)計(jì)中使用的css像素,一種是原生移動(dòng)系統(tǒng)使用的物理像素。

作為css像素時(shí),表示的也是一種設(shè)備無(wú)關(guān)單位,與android中使用的dp類似,默認(rèn)情況下與系統(tǒng)分辨率下的像素大小相同,標(biāo)清設(shè)備中,一個(gè)css像素和一個(gè)設(shè)備物理像素大小相同;在高清設(shè)備中,一個(gè)css像素可以大于或者等于多個(gè)設(shè)備物理像素,具體一個(gè)css像素,需要多少個(gè)物理像素來(lái)展示,瀏覽器會(huì)根據(jù)dpr計(jì)算。

原生移動(dòng)系統(tǒng)中使用px單位時(shí),表示的就是屏幕的物理像素點(diǎn),每種屏幕的物理像素點(diǎn)大小可能不一樣。

*** dpr ***

** dpr ** ,device pixel ratio, 橫向或者縱向設(shè)備物理像素?cái)?shù)量與設(shè)備獨(dú)立像素?cái)?shù)量的比值,瀏覽器中可以通過(guò)window.devicePixelRatio獲取(存在兼容性問(wèn)題)。

對(duì)于原生app,ios和android系統(tǒng)會(huì)自動(dòng)根據(jù)dpr計(jì)算出渲染時(shí)需要的px值,最終不同屏幕上展示出來(lái)的大小很接近;而移動(dòng)端頁(yè)面渲染時(shí)想要做到這一點(diǎn),就必須首先得到設(shè)備的dpr,然后再根據(jù)dpr計(jì)算渲染需要的px值。

ios設(shè)備中iphone3的dpr為1;iphone4,5,6,7的dpr為2;iphone6+,7+的dpr為3。iphone6+和iphone7+實(shí)際計(jì)算出來(lái)的dpr應(yīng)該時(shí)2.6左右,但是官方還是建議dpr為3,這是因?yàn)閕os系統(tǒng)利用了一種“縮減像素采樣”算法,自動(dòng)縮減到2.6。

android設(shè)備中dpr值有多種,可知的有0.75,1,1.5,1.75,2,2.5,2.75,3,4等。

*** em,rem ***

** em ** 相對(duì)單位,CSS2引入的單位,作為字體大小使用時(shí)和百分比單位類似,都是相對(duì)于最近的父元素設(shè)置的字體大小,在body上設(shè)置字體大小為100%和設(shè)置字體大小為1em是一樣的效果,默認(rèn)情況下瀏覽器的字體大小為16px,這樣只要瀏覽器默認(rèn)得字體大小不變,1em = 16px。

** rem ** 相對(duì)單位,root em,CSS3新增的單位,作用和em類似,唯一的區(qū)別就是em是相對(duì)父元素的,rem是相對(duì)html根節(jié)點(diǎn)的,即所有使用rem單位的子元素的字體大小都是相對(duì)根節(jié)點(diǎn)的,所以使用rem可以避免使用em帶來(lái)的子元素字體大小逐層復(fù)合的連鎖反應(yīng)。

更多關(guān)于em,rem的知識(shí)參見(jiàn)這篇文章 理解web開(kāi)發(fā)中的em單位和rem單位 。

*** 分辨率 ***

平時(shí)說(shuō)的手機(jī)屏幕分辨率,也稱為物理分辨率或者原生分辨率,通常包括縱向分辨率和橫向分辨率,例如iphone6的物理分辨率是1334 x 750,其中縱向分辨率是1334px,橫向分辨率是750px,表示縱向方向可以顯示1334個(gè)物理像素點(diǎn),橫向上可以顯示750個(gè)物理像素點(diǎn),這里描述分辨率使用的px單位,和css中使用的px單位意義不一樣,這里代指物理設(shè)備的像素點(diǎn)。

還有一種分辨率叫做系統(tǒng)分辨率,例如iphone6的系統(tǒng)分辨率是667 x 375,其中高度是667pt,寬度是375pt,這里描述分辨率使用了pt單位,是一種設(shè)備無(wú)關(guān)單位。

屏幕尺寸相同的設(shè)備,物理分辨率越高,ppi也就越大,絕對(duì)單位面積上展示的物理像素?cái)?shù)量越多,展示圖片也就越細(xì)膩。

蘋果把ppi 300的屏幕稱為視網(wǎng)膜屏,Retina屏。

傳統(tǒng)桌面web頁(yè)面布局通常是定寬布局,但是定寬布局的方式對(duì)移動(dòng)端卻不適用,原因手機(jī)屏幕尺寸大小各異,定寬布局可能在某些手機(jī)上出現(xiàn)橫向滾動(dòng)條,導(dǎo)致閱讀效果比較差。

為了讓手機(jī)有更好的網(wǎng)頁(yè)瀏覽體驗(yàn),蘋果引入了viewport,為頁(yè)面提供了一個(gè)虛擬的布局窗口,在這個(gè)虛擬的布局窗口中渲染頁(yè)面,然后系統(tǒng)會(huì)把渲染好的頁(yè)面自動(dòng)縮放到手機(jī)屏幕大小。

雖然viewport還沒(méi)有成為正式的規(guī)范,但是現(xiàn)在絕大部分瀏覽器都支持viewport。

在桌面瀏覽器中,viewport嚴(yán)格等于瀏覽器窗口大小,頁(yè)面渲染時(shí),頁(yè)面寬度不會(huì)超過(guò)瀏覽器的寬度。

移動(dòng)端屏幕太窄,為了提供更好的頁(yè)面體驗(yàn),移動(dòng)端提供了兩種viewport: 可視viewport , 布局viewport 。

可視viewport 就是當(dāng)前屏幕正在展示的區(qū)域,也就是移動(dòng)設(shè)備屏幕的寬度,寬高通過(guò)window.innerWidth和window.innerHeight獲取(存在兼容性問(wèn)題)。

布局viewport ,頁(yè)面布局實(shí)際用到的viewport,通常比可視viewport要寬,寬高通過(guò)document.documentElement.clientWidth和document.documentElement.clientHeight獲取。

移動(dòng)端還有一種viewport概念,可以理解為 理想viewport ,作用就是在理想viewport下,不同移動(dòng)設(shè)備,展示的字體大小接近,并且不需要用戶縮放就可以展示全部的頁(yè)面內(nèi)容。

理想viewport的寬度默認(rèn)等于可視viewport的寬度,但是對(duì)同一臺(tái)設(shè)備來(lái)說(shuō),這個(gè)理想viewport的寬度是可以改變的,而可視viewport的寬度是不可變的。

如何使用理想viewport來(lái)布局頁(yè)面呢?只需要設(shè)置viewport的width等于device-width。

viewport的屬性,推薦使用以及支持度較廣泛的屬性只有6個(gè): width , height , initial-scale , maximum-scale , minimum-scale , user-scalable 。

width 設(shè)置viewport布局寬度,內(nèi)核是webkit的瀏覽器默認(rèn)值是980px,取值范圍在200-10000px,也可以取值為設(shè)備寬度device-width(等于橫向設(shè)備無(wú)關(guān)像素?cái)?shù)量)。

height 設(shè)置viewport布局高度,默認(rèn)值依賴設(shè)備長(zhǎng)寬比以及寬度值,取值范圍在223-10000px,也可以取值為設(shè)備高度device-height。

initial-scale 設(shè)置初始縮放比例,頁(yè)面第一次加載時(shí)的縮放比例。默認(rèn)比例依賴于顯示密度。在密度低于200 dpi的顯示設(shè)備上,比例為1.0。在密度介于200及300 dpi之間的顯示設(shè)備上,比例為1.5。對(duì)于具有300 dpi以上密度的顯示設(shè)備,比例為密度/150 dpi向下取整的結(jié)果。取值范圍由 maximum-scale 屬性以及 minimum-scale 屬性決定。如果設(shè)置 initial-scale 值為1, width 默認(rèn)是device-width, height 默認(rèn)是device-height

initial-scale 設(shè)置的縮放大小會(huì)改變理想viewport的大小,不會(huì)改變可視viewport的大小,也不會(huì)改變布局viewport的大小,這是某些適配方案依賴的基本原理,也是解決 1px問(wèn)題 的關(guān)鍵。后面分析適配方案時(shí),動(dòng)態(tài)viewport適配方案就依賴這個(gè)知識(shí)點(diǎn)。

maximum-scale 允許用戶縮放到的最大比例,默認(rèn)值是0.5,范圍從0到10.0。

minimum-scale 允許用戶縮放到的最小比例,默認(rèn)值是5.0,范圍從0到10.0。

user-scalable 用戶是否可以手動(dòng)縮放,值可以是:yes/true允許用戶縮放;no/false不允許用戶縮放。

圖片適配的目的是為了在頁(yè)面中可以高清還原設(shè)計(jì)圖中用到的圖片。

頁(yè)面中用到的圖片是否清晰和展示頁(yè)面的硬件設(shè)備的dpr以及圖片分辨率這兩個(gè)因素有關(guān),下面會(huì)通過(guò)三個(gè)例子來(lái)說(shuō)明這個(gè)問(wèn)題。

***示例一 ***

例如dpr=2的設(shè)備,1個(gè)設(shè)備無(wú)關(guān)像素(android中的1dp,ios中的1pt)需要4個(gè)設(shè)備物理像素點(diǎn)填充。對(duì)于尺寸為100 x 120 (px)的圖片,如果用 img 來(lái)展示,圖片顯示時(shí)會(huì)產(chǎn)生模糊現(xiàn)象。

原因:渲染圖片時(shí),寬度是100px,所以橫向會(huì)占用100個(gè)設(shè)備無(wú)關(guān)像素,高度是120px,所以縱向會(huì)占用120個(gè)設(shè)備無(wú)關(guān)像素,每個(gè)設(shè)備無(wú)關(guān)像素又需要2x2個(gè)物理像素點(diǎn)來(lái)填充,而圖片在每個(gè)設(shè)備無(wú)關(guān)像素(px)單位上提供的像素點(diǎn)只有1x1個(gè),這時(shí),系統(tǒng)通過(guò)一定的算法在這1個(gè)像素點(diǎn)上就近取色,取到4個(gè)顏色(這4種顏色接近但是有一定區(qū)別)之后,當(dāng)成4個(gè)像素點(diǎn),然后填充到1個(gè)設(shè)備無(wú)關(guān)像素點(diǎn)上,這樣就導(dǎo)致圖片顯示時(shí)模糊,dpr越大,這種方式顯示的圖片越模糊。

示例二

還是dpr=2的設(shè)備,但是準(zhǔn)備了一個(gè)尺寸為200 x 240 (px)的圖片,還是用 img 來(lái)展示,這時(shí)顯示的圖片就比較清晰了。

原因:這時(shí)圖片本身可以在一個(gè)設(shè)備無(wú)關(guān)像素單位上提供2x2個(gè)物理像素點(diǎn),設(shè)備展示圖片時(shí)直接拿圖片提供的像素點(diǎn)來(lái)填充就可以了,不用對(duì)像素點(diǎn)進(jìn)行處理,所以可以比較清晰的顯示圖片。

示例三

還是dpr=2的設(shè)備,這次準(zhǔn)備一個(gè)尺寸400 x 480 (px)的圖片,還是用 img 來(lái)展示時(shí),這種情況展示的圖片缺少銳利度,也影響了圖片的清晰度,但是很難看出來(lái)。

原因:圖片本身在一個(gè)設(shè)備無(wú)關(guān)像素點(diǎn)單位上提供了4x4個(gè)物理像素點(diǎn),而設(shè)備本身只需要2x2個(gè)物理像素點(diǎn),所以會(huì)通過(guò)縮減采樣算法,在圖片提供的4x4個(gè)物理像素點(diǎn)中,選取顏色接近的2x2個(gè)物理像素點(diǎn)填充到設(shè)備無(wú)關(guān)像素點(diǎn)上,所以也會(huì)產(chǎn)生一定的色差,這種情況下圖片尺寸越大,這種色差也就越明顯,但是人眼很難區(qū)分這種色差。

下面是我在oppo的一款手機(jī)上的測(cè)試結(jié)果,結(jié)合這張效果圖就可以很好的理解上面的三個(gè)示例了:

圖片適配最佳實(shí)踐

要想高清顯示圖片,如果條件允許(有單獨(dú)的圖片服務(wù)器)最直接的解決辦法,肯定是根據(jù)設(shè)備的dpr,為不同dpr的設(shè)備加載不同倍率大小圖片顯示;沒(méi)這種條件的或者對(duì)用戶體驗(yàn)沒(méi)有很高要求的,只能選一種折中的方案了,一般情況下只需要提供布局尺寸2倍大小的切圖就可以了,也就是只高清適配dpr=2的設(shè)備,但是dpr為3或者4的設(shè)備展示效果也能接受,不容易看出來(lái)模糊現(xiàn)象。目前主流機(jī)型的dpr也就在2和3之間。

字體適配目標(biāo)主要還是看設(shè)計(jì)要求,主要有兩種:

1.不同屏幕下,字體顯示大小都一樣,即需要等寬顯示字體;

2.不同屏幕下,一行能顯示的字?jǐn)?shù)固定,即需要按比例縮放字體大?。?/p>

開(kāi)始分析之前,先看下這兩種字體適配的示例:

第1種字體適配方案的示例

第2種字體適配方案的示例

下面就來(lái)具體分析下兩種字體適配方案的原理以及優(yōu)劣。

** 第1種字體適配方案原理 **

在開(kāi)始分析這種方式的原理之前,先通過(guò)一張圖理解下px和dp以及絕對(duì)長(zhǎng)度之間關(guān)系。

由上圖可知字體大小只與css單位px有關(guān),而每個(gè)設(shè)備上px的絕對(duì)寬度又和設(shè)備的絕對(duì)寬度以及絕對(duì)寬度上劃分出的設(shè)備無(wú)關(guān)像素點(diǎn)dp有關(guān);只要設(shè)備的橫向dp數(shù)量與絕對(duì)寬度的比值(dp/cm)相同,就可以保證px在不同設(shè)備上展示的絕對(duì)寬度是一樣的;如果dp/cm的比值過(guò)大,那么px的絕對(duì)長(zhǎng)度就會(huì)變小,看起來(lái)就會(huì)顯??;如果dp/cm的比值過(guò)小,那么px的絕對(duì)長(zhǎng)度就會(huì)變大,看起來(lái)就會(huì)顯大;一般來(lái)說(shuō)手機(jī)屏幕分辨率越高,相同px值的字體看起來(lái)就會(huì)越小。

iphone5和6的dp/cm比值十分接近,所以12px大小的字體在這兩種手機(jī)上顯示的大小基本一樣,看不出來(lái)區(qū)別,但是iphone6+的dp/cm比值要比iphone5,6的略大,這就導(dǎo)致12px大小的字體在6+上顯示的比5,6上顯示的略小,上面的淘寶對(duì)比圖仔細(xì)分辨可以看出來(lái)。

android的手機(jī)屏幕dp/cm比值在各個(gè)設(shè)備之間也有差異性,并且比較有多樣性。所以同樣12px大小的字體,各個(gè)設(shè)備顯示時(shí)也是有差別的。

這種顯示差別在iphone系列手機(jī)中可以忽略不計(jì),但是android碎片化比較嚴(yán)重,完美兼容各種機(jī)型沒(méi)有必要,主流機(jī)型中這種顯示差別也可以忽略不計(jì),所以采用這種方式進(jìn)行字體適配只需要px值設(shè)置成一樣的就可以了。

** 第1種字體適配方案優(yōu)缺點(diǎn)**

優(yōu)點(diǎn):1.不同設(shè)備中字體大小顯示一致,比較統(tǒng)一;2.大屏手機(jī)可以顯示更多的文字;

缺點(diǎn):1.由于單個(gè)字體寬度是定死的,所以在有些機(jī)型下可能會(huì)影響頁(yè)面布局;

** 第2種字體適配方案原理 **

在設(shè)計(jì)稿中,計(jì)算出字體大小相對(duì)于基準(zhǔn)字體大?。ɑ鶞?zhǔn)字體大小可以選擇設(shè)計(jì)稿寬度,一般為了計(jì)算方便,會(huì)把設(shè)計(jì)稿寬度/10得到的值作為基準(zhǔn)字體大小)的比值,然后在不同布局寬度下,先得到基準(zhǔn)字體大小,再根據(jù)上面計(jì)算出來(lái)的比值,就可以計(jì)算出來(lái)不同布局寬度下的字體大小,也就是不同布局寬度下等比例縮放字體。

利用rem的特性,在頁(yè)面的html標(biāo)簽上設(shè)置一個(gè)基準(zhǔn)字體大小,就可以實(shí)現(xiàn)這種方式。

例如,寬是750px的設(shè)計(jì)圖中,字體大小是32px,計(jì)算出基準(zhǔn)字體大小為75px,比值為 32 * 10 / 75 = 0.426667。

如果布局寬度是414px,此時(shí)基準(zhǔn)字體大小變成 414 / 10 = 41.4px,然后設(shè)置html style="font-size:41.4px",字體大小是0.426667rem,計(jì)算出來(lái)的字體大小為41.4x0.42667=17.66px。

如果布局寬度變成360px,此時(shí)基準(zhǔn)字體大小變成36px,然后設(shè)置html style="font-size:36px",字體大小仍然用0.426667rem表示,計(jì)算出來(lái)的字體大小為36x0.42667=15.36px。

750/32 約等于 414/17.66 約等于 360/15.36,這樣就做到了等比縮放字體了。

** 第2種字體適配方案優(yōu)缺點(diǎn)**

缺點(diǎn):1.小尺寸設(shè)備屏幕上字體顯示小,大尺寸設(shè)備屏幕字體顯示大,導(dǎo)致字體顯示不一致;2.不能發(fā)揮大屏手機(jī)的優(yōu)勢(shì)(顯示更多的字);3.字體大小會(huì)出現(xiàn)奇數(shù)或者小數(shù)點(diǎn)大小的值,某些字體不支持這些值,渲染時(shí)增加計(jì)算量;

優(yōu)點(diǎn):1.適配簡(jiǎn)單,不同設(shè)備不會(huì)影響頁(yè)面布局,可以和設(shè)計(jì)稿布局保持一致;

布局中對(duì)寬度的適配,也是采用rem來(lái)實(shí)現(xiàn),和上面第2種字體大小適配方式中的原理類似,也是計(jì)算出一個(gè)比例值,然后不同布局寬度中等比縮放,這里偷下懶,不在贅述。

目前的解決方案有兩類

第一類就是js動(dòng)態(tài)生成viewport標(biāo)簽,標(biāo)簽中的initial-scale值根據(jù)設(shè)備的dpr計(jì)算,不同dpr設(shè)備的viewport值不同。

第二類就是js不操作viewport,每個(gè)設(shè)備都使用理想viewport來(lái)布局。

** 動(dòng)態(tài)viewport解決方案分析 **

這里分析兩個(gè)動(dòng)態(tài)viewport解決方案:

1.手機(jī)淘寶的flexible方案;

2.hotcss方案;

手機(jī)淘寶的flexible方案 ,特點(diǎn):

1.僅針對(duì)iphone生成動(dòng)態(tài)viewport,因?yàn)槟壳癷phone的dpr只有1,2,3三種,android的dpr很有多種,不具有一致性;

2.字體大小不用rem做縮放處理,仍然使用px單位,設(shè)置不同dpr下對(duì)應(yīng)的字體大??;

3.寬度利用rem等比縮放;

4.允許強(qiáng)制定義dpr;

使用時(shí)頁(yè)面頭部需要引入 flexible.js .

hotcss方案 ,特點(diǎn):

1.不區(qū)分iphone和android,dpr只取三種1,2,3,android的dpr做近似處理;

2.寬度以及字體利用rem等比縮放;

3.允許強(qiáng)制定義dpr;

使用時(shí)頁(yè)面頭部需要引入 hotcss.js

動(dòng)態(tài)viewport方案之所以會(huì)稱為動(dòng)態(tài)viewport是因?yàn)?,這個(gè)適配過(guò)程會(huì)根據(jù)系統(tǒng)dpr值設(shè)置initial-scale屬性的大小,大小等于1/dpr。

** 靜態(tài)viewport解決方案分析 **

利用rem特性,先根據(jù)標(biāo)注圖算出各元素相對(duì)于設(shè)計(jì)稿寬度的比值,這個(gè)比值就作為rem值,然后頁(yè)面布局時(shí)就用算出的rem值表示,并且在html根元素設(shè)置當(dāng)前布局頁(yè)面寬度作為基準(zhǔn)。更rem值計(jì)算具體的解釋可以參考這篇文章 使用Flexible實(shí)現(xiàn)手淘H5頁(yè)面的終端適配 。通過(guò)這種方式設(shè)置標(biāo)簽元素的寬高,位置以及字體大小,這樣利用rem特性就可以在不同手機(jī)屏幕上實(shí)現(xiàn)等比縮放。

參考資料

h5手機(jī)端頁(yè)面適配的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于h5頁(yè)面適配手機(jī)尺寸、h5手機(jī)端頁(yè)面適配的信息別忘了在本站進(jìn)行查找喔。

掃描二維碼推送至手機(jī)訪問(wèn)。

版權(quán)聲明:本文由飛速云SEO網(wǎng)絡(luò)優(yōu)化推廣發(fā)布,如需轉(zhuǎn)載請(qǐng)注明出處。

本文鏈接:http://m.landcheck.net/post/15993.html

“h5手機(jī)端頁(yè)面適配(h5頁(yè)面適配手機(jī)尺寸)” 的相關(guān)文章

釣魚網(wǎng)站制作(釣魚網(wǎng)站制作的三種方法)

釣魚網(wǎng)站制作(釣魚網(wǎng)站制作的三種方法)

本篇文章給大家談?wù)勧烎~網(wǎng)站制作,以及釣魚網(wǎng)站制作的三種方法對(duì)應(yīng)的知識(shí)點(diǎn),希望對(duì)各位有所幫助,不要忘了收藏本站喔。 本文目錄一覽: 1、什么是釣魚網(wǎng)站,怎么識(shí)別? 2、怎樣手機(jī)制作釣魚網(wǎng)站 3、釣魚網(wǎng)站怎么制作 4、“釣魚”網(wǎng)站的制作者應(yīng)該承擔(dān)什么法律責(zé)任? 5、怎么制作釣魚網(wǎng)站...

h5制作模板免費(fèi)(H5模板免費(fèi))

h5制作模板免費(fèi)(H5模板免費(fèi))

今天給各位分享h5制作模板免費(fèi)的知識(shí),其中也會(huì)對(duì)H5模板免費(fèi)進(jìn)行解釋,如果能碰巧解決你現(xiàn)在面臨的問(wèn)題,別忘了關(guān)注本站,現(xiàn)在開(kāi)始吧!本文目錄一覽: 1、想做個(gè)h5,那么問(wèn)題來(lái)了,h5素材免費(fèi)模板哪里有下載?。?2、有沒(méi)有免費(fèi)的h5頁(yè)面制作工具 3、比如易企秀、凡科這個(gè)兩個(gè)都是免 費(fèi)的h5工具嗎...

中醫(yī)ppt模板免費(fèi)下載百度云(中醫(yī)ppt模板免費(fèi)下載 素材)

中醫(yī)ppt模板免費(fèi)下載百度云(中醫(yī)ppt模板免費(fèi)下載 素材)

今天給各位分享中醫(yī)ppt模板免費(fèi)下載百度云的知識(shí),其中也會(huì)對(duì)中醫(yī)ppt模板免費(fèi)下載 素材進(jìn)行解釋,如果能碰巧解決你現(xiàn)在面臨的問(wèn)題,別忘了關(guān)注本站,現(xiàn)在開(kāi)始吧!本文目錄一覽: 1、免費(fèi)的ppt模板哪里有 2、PPT模版的下載資源有哪些? 3、哪里可以下載PPT模板? 4、請(qǐng)問(wèn)大佬有PPT模...

源代碼設(shè)計(jì)筆記下載工具(源代碼設(shè)計(jì)筆記Demo)

源代碼設(shè)計(jì)筆記下載工具(源代碼設(shè)計(jì)筆記Demo)

今天給各位分享源代碼設(shè)計(jì)筆記下載工具的知識(shí),其中也會(huì)對(duì)源代碼設(shè)計(jì)筆記Demo進(jìn)行解釋,如果能碰巧解決你現(xiàn)在面臨的問(wèn)題,別忘了關(guān)注本站,現(xiàn)在開(kāi)始吧!本文目錄一覽: 1、適合程序員做含有源代碼的筆記的工具有哪些? 2、聊天照片刪了,如何找回復(fù)原? 3、微信里的圖片刪除了還能恢復(fù)嗎? 4、qq...

婚宴菜單設(shè)計(jì)模板素材(婚宴菜單設(shè)計(jì) 模板)

婚宴菜單設(shè)計(jì)模板素材(婚宴菜單設(shè)計(jì) 模板)

本篇文章給大家談?wù)劵檠绮藛卧O(shè)計(jì)模板素材,以及婚宴菜單設(shè)計(jì) 模板對(duì)應(yīng)的知識(shí)點(diǎn),希望對(duì)各位有所幫助,不要忘了收藏本站喔。 本文目錄一覽: 1、婚宴菜單設(shè)計(jì)原則 設(shè)計(jì)菜單需要注意什么 2、婚宴的菜單有哪些呢? 3、結(jié)婚酒席有什么菜譜 4、農(nóng)村婚宴菜譜大全云南口味結(jié) 5、結(jié)婚酒席菜單有哪些...

空白個(gè)人簡(jiǎn)歷模板電子版免費(fèi)(個(gè)人簡(jiǎn)歷模板 空白電子版)

空白個(gè)人簡(jiǎn)歷模板電子版免費(fèi)(個(gè)人簡(jiǎn)歷模板 空白電子版)

本篇文章給大家談?wù)効瞻讉€(gè)人簡(jiǎn)歷模板電子版免費(fèi),以及個(gè)人簡(jiǎn)歷模板 空白電子版對(duì)應(yīng)的知識(shí)點(diǎn),希望對(duì)各位有所幫助,不要忘了收藏本站喔。 本文目錄一覽: 1、個(gè)人簡(jiǎn)歷表格空白word下載 2、求個(gè)人空白簡(jiǎn)歷模板下載百度云? 3、個(gè)人空白簡(jiǎn)歷模板下載百度云 4、求一份標(biāo)準(zhǔn)的個(gè)人簡(jiǎn)歷模版word表格...