PC端、移動(dòng)端的頁(yè)面適配及兼容處理

一黎比、關(guān)于移動(dòng)端兼容性

???? 目前針對(duì)跨終端的方案超营,主要分為兩大陣營(yíng):一套資源Vs兩套資源。

  第一種是通過(guò)響應(yīng)式或頁(yè)面終端判斷去實(shí)現(xiàn)一套資源適配所有終端焰手;

  第二種是通過(guò)終端判斷分別調(diào)取兩套資源以適配所有終端糟描。

  這兩種思路我們并不能斬釘截鐵的說(shuō)哪一個(gè)更優(yōu)選,正所謂”合適的才是最好的”书妻。

  思路一:通過(guò)響應(yīng)式或頁(yè)面終端判斷去實(shí)現(xiàn)一套資源適配所有終端

  優(yōu)勢(shì):只需維護(hù)一套資源船响,維護(hù)成本較低。

  劣勢(shì):需加載適配各個(gè)終端的各個(gè)資源躲履,在不同終端通過(guò)響應(yīng)式布局實(shí)現(xiàn)不同展現(xiàn)见间,部分交互效果需要在頁(yè)面中做終端判斷,代價(jià)較大工猜,若圖片資源為一套米诉,部分圖片在超高分辨率設(shè)備(例如iphone系列)下會(huì)失真,且在非wifi情況下即使加了延時(shí)加載也易出現(xiàn)加載慢的情況篷帅。

  技術(shù)選型:jquery(或原生js等)+ 響應(yīng)式 + 前端模塊加載器(seajs或RequireJS等)+ css預(yù)處理器(sass 或less等)史侣。jquery較好的兼容性配合響應(yīng)式可相對(duì)代價(jià)較小地實(shí)現(xiàn)跨終端。前端模塊加載器主要負(fù)責(zé)按需加載魏身,以提高頁(yè)面加載速度惊橱,css預(yù)處理器 的變量、運(yùn)算箭昵、嵌套等特性可大大提高手動(dòng)計(jì)算響應(yīng)式的效率税朴,媽媽再也不用擔(dān)心我把比例算錯(cuò)了。當(dāng)然后兩者可參考需求及成本決定是否采用。

  思路二:通過(guò)終端判斷分別調(diào)取兩套資源以適配所有終端

  優(yōu)勢(shì):可根據(jù)不同端做個(gè)性設(shè)計(jì)及個(gè)性化信息推送且可按需加載正林,如移動(dòng)端可配合重力感應(yīng)泡一、不同手勢(shì)做各種炫酷拽效果,pc頁(yè)面可不受流量限制做適合pc端的效果觅廓。

  劣勢(shì):需維護(hù)兩套資源鼻忠,維護(hù)成本增加。

  技術(shù)選型:zepto(或xui等移動(dòng)端輕量級(jí)框架)+ 響應(yīng)式 + 前端模塊加載器 + css預(yù)處理器 + 終端適配哪亿。zepto作為jquery的移動(dòng)端版本粥烁,依然延續(xù)其自身優(yōu)勢(shì)贤笆,大幅優(yōu)化了移動(dòng)端API且摒棄了兼容”非現(xiàn)代瀏覽器”的冗余代碼蝇棉,成為移動(dòng)端輕 便可用的js框架代表,對(duì)于習(xí)慣了jquery的同學(xué)來(lái)說(shuō)簡(jiǎn)直是不二之選芥永!

  終端適配目前一般通過(guò)ua判斷來(lái)實(shí)現(xiàn)篡殷。ua判斷可放在服務(wù)端也可放在頁(yè)面中,在代理服務(wù)器中做跳轉(zhuǎn)更快埋涧、更  準(zhǔn)確且不走應(yīng)用程序?qū)影辶桑词篂g覽器禁用了js依然可以跳轉(zhuǎn)到相應(yīng)的地址,同時(shí)秉承著公共服務(wù)放在服務(wù)端這樣的云端服務(wù)理念棘催,我們選擇了通過(guò)代理服務(wù)器做終端適配劲弦。

User-Agent嗅探,即Web瀏覽器發(fā)送一個(gè)Web頁(yè)面或資源請(qǐng)求時(shí)醇坝,會(huì)發(fā)送一個(gè)User-Agent首部作為HTTP請(qǐng)求的一部分邑跪,那么我們就可以在服務(wù)器端獲取想要的信息,進(jìn)而判斷并引導(dǎo)用戶到達(dá)相應(yīng)的頁(yè)面地址呼猪。


二画畅、pc上的網(wǎng)站在移動(dòng)端上怎么辦?

? 如果把移動(dòng)端的可視區(qū)域(320-768)的話宋距,大部分網(wǎng)站都會(huì)因?yàn)樘@示錯(cuò)亂轴踱;所以瀏覽器默認(rèn)把viewport設(shè)置為一個(gè)較寬的值 980px或1024px,至少保證PC網(wǎng)站在移動(dòng)端上可以顯示谚赎,只不過(guò)出現(xiàn)了橫向滾動(dòng)條而已淫僻。

(一)幾個(gè)概念

? 1.css像素

html中度量的單位 用px來(lái)計(jì)算,在pc中往往 1 css px = 1 物理像素

css像素時(shí)抽象和相對(duì)的了壶唤,在不同設(shè)備中1px對(duì)應(yīng)不同的設(shè)備像素雳灵;iphone3分辨率是320*480 即 css 1px = 1個(gè)物理像素;iphone4 分辨率640x960但屏幕尺寸沒(méi)有改變视粮,意味著同一塊區(qū)域像素多了1倍 即 css 1px =2個(gè)物理像素细办;

? 2.物理像素

表示每英寸所擁有的像素?cái)?shù)目,數(shù)值越高,代表屏幕能夠以更高的密度來(lái)顯示圖像

? 3.分辨率

顯示器所能顯示的像素多少笑撞,顯示器可以顯示的像素越多岛啸,畫面就越精細(xì),同樣的屏幕區(qū)域能顯示的信息就越多

?? 4.devicePixelRatio

window.devicePixelRadio = 物理像素/css像素 在iphone4中devicePixelRatio=2 也就是1css像素=2個(gè)物理像素

devicePixelRatio在不同瀏覽器中存在一些兼容性問(wèn)題茴肥,并不是完全可靠的

??? 5.layout viewport

移動(dòng)設(shè)備的默認(rèn)viewport,css布局是以layout viewport 來(lái)做為參考系計(jì)算的

document.documenElement.clientWidth 獲取

該尺寸時(shí)動(dòng)態(tài)設(shè)置

??? 6.visual viewport

代表瀏覽器窗口的尺寸坚踩,當(dāng)用戶放大瀏覽器時(shí)這個(gè)尺寸就會(huì)變小

window.innerWidth 獲取

??? 7.ideal viewport

屏幕尺寸 設(shè)備屏幕的尺寸 單位是物理像素

screen.width 獲取 屏幕尺寸是不變的

在該viewport中用戶不需要縮放和橫向滾動(dòng)就可以正常查看網(wǎng)站的所有內(nèi)容

設(shè)置移動(dòng)端網(wǎng)站一般以這個(gè)viewport為準(zhǔn),ideal viewport 的寬度等于設(shè)備屏幕寬度,使得無(wú)論在什么分辨率下瓤狐,那些針對(duì)ideal viewport設(shè)計(jì)的網(wǎng)站都可以完美的呈現(xiàn)給用戶瞬铸。

(二)如何實(shí)現(xiàn)屏幕適配

  需要用到

1

  meta viewport 中有6個(gè)通用屬性:

width 設(shè)置layout viewport的寬度 正整數(shù)或字符串 'width-device'

initial-scale 設(shè)置頁(yè)面的初始縮放值,數(shù)字或小數(shù)

minimum-scale 允許用戶的最小縮放值 數(shù)字或小數(shù)

maximum-scale 允許用戶的最大縮放值 數(shù)字或小數(shù)

height 設(shè)置layout viewport 的高度础锐,這個(gè)屬性很少用到

user-scaleabel 是否允許用戶進(jìn)行縮放 'no'或‘yes’ 還有2個(gè)需要特別注意的兩個(gè)屬性

target-densitydpi 在andriod 4.0一下的設(shè)備中嗓节,不支持設(shè)置viewport的width,android 自帶瀏覽器支持設(shè)置 target-densitydpi來(lái)達(dá)到目的皆警;

target-densitydpi = UI-width/device-width*window.devicePixelRation*160

//UI-width: 布局寬度

//device-width:屏幕分辨率寬度 iphone4為640

//target-densitydpi=device-dpi 標(biāo)示使用設(shè)備本身物理屏幕的像素,不會(huì)發(fā)生默認(rèn)縮放

miniual-ui ios的safari為meta表天新增的屬性拦宣,在網(wǎng)頁(yè)加載是隱藏頂部的地址欄和底部的導(dǎo)航欄

? (三)相關(guān)代碼講解

//移動(dòng)頁(yè)面設(shè)計(jì) 480*854的比例

//dpi = 480/screen.width*window.devicePixelRatio*160;

//scalevalue = screen.width/480;

//控制適配 分為5種組合

/* width + target-densitydpi(計(jì)算出來(lái)的) *//* width *//* width+target-densitydpi=device-dpi *//* width+initial-scale *//* targrt-densitydpi *///通過(guò)順序設(shè)置5次來(lái)實(shí)現(xiàn)適配 直到

Math.abs(window.innerWidth-480)<=10 表示viewport設(shè)置正確了。

(四)橫豎屏

js代碼控制

window.addEventListener("orientationchange",function () {

? ? ? ? This.isOrietation = true;

? ? ? ? This.changeOriention();

? ? });

//建議執(zhí)行橫豎屏的事件都通過(guò)一個(gè)偵聽完成信姓,做一個(gè)統(tǒng)一的管理鸵隧;在屏幕橫豎屏切換完成之后再執(zhí)行相應(yīng)的事件

css控制

//定義橫屏顯示的樣式

@media screen and(orientation:landspace){...}

//定義豎屏顯示的樣式

@media screen and(orientation:portrait){...}

//某個(gè)尺寸的特殊樣式 豎屏?xí)r寬度為768px 符合一般ipad的條件

@media only screen and(orientation:portrait) and(device-width:768px){...}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市意推,隨后出現(xiàn)的幾起案子豆瘫,更是在濱河造成了極大的恐慌,老刑警劉巖菊值,帶你破解...
    沈念sama閱讀 206,839評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件外驱,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡俊性,警方通過(guò)查閱死者的電腦和手機(jī)略步,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)定页,“玉大人趟薄,你說(shuō)我怎么就攤上這事〉浠玻” “怎么了杭煎?”我有些...
    開封第一講書人閱讀 153,116評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)卒落。 經(jīng)常有香客問(wèn)我羡铲,道長(zhǎng),這世上最難降的妖魔是什么儡毕? 我笑而不...
    開封第一講書人閱讀 55,371評(píng)論 1 279
  • 正文 為了忘掉前任也切,我火速辦了婚禮扑媚,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘雷恃。我一直安慰自己疆股,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評(píng)論 5 374
  • 文/花漫 我一把揭開白布倒槐。 她就那樣靜靜地躺著旬痹,像睡著了一般。 火紅的嫁衣襯著肌膚如雪讨越。 梳的紋絲不亂的頭發(fā)上两残,一...
    開封第一講書人閱讀 49,111評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音把跨,去河邊找鬼人弓。 笑死,一個(gè)胖子當(dāng)著我的面吹牛节猿,可吹牛的內(nèi)容都是我干的票从。 我是一名探鬼主播漫雕,決...
    沈念sama閱讀 38,416評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼滨嘱,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了浸间?” 一聲冷哼從身側(cè)響起太雨,我...
    開封第一講書人閱讀 37,053評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎魁蒜,沒(méi)想到半個(gè)月后囊扳,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,558評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡兜看,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評(píng)論 2 325
  • 正文 我和宋清朗相戀三年锥咸,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片细移。...
    茶點(diǎn)故事閱讀 38,117評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡搏予,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出弧轧,到底是詐尸還是另有隱情雪侥,我是刑警寧澤,帶...
    沈念sama閱讀 33,756評(píng)論 4 324
  • 正文 年R本政府宣布精绎,位于F島的核電站速缨,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏代乃。R本人自食惡果不足惜旬牲,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧原茅,春花似錦牍陌、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至贝室,卻和暖如春契讲,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背滑频。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工捡偏, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人峡迷。 一個(gè)月前我還...
    沈念sama閱讀 45,578評(píng)論 2 355
  • 正文 我出身青樓银伟,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親绘搞。 傳聞我的和親對(duì)象是個(gè)殘疾皇子彤避,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • title: 移動(dòng)端Web頁(yè)面適配淺析date: 2018-01-31 16:38:01tags: 移動(dòng)端 適配 ...
    豆板兒閱讀 12,257評(píng)論 0 16
  • 剛開始做移動(dòng)端web開發(fā)的同學(xué)應(yīng)該都碰到過(guò)頁(yè)面適配問(wèn)題,為什么我在開發(fā)手機(jī)上調(diào)試好的頁(yè)面在其他手機(jī)會(huì)有這樣或那樣的...
    留七七閱讀 19,299評(píng)論 5 80
  • 前言 對(duì)于熟悉pc端的小伙伴來(lái)說(shuō),對(duì)于靜態(tài)頁(yè)面的布局,一般都是沒(méi)有什么問(wèn)題的,為了保持各瀏覽器顯示的一致性,無(wú)論是...
    itclanCoder閱讀 13,632評(píng)論 5 61
  • 在移動(dòng)互聯(lián)網(wǎng)快速發(fā)展的今天夯辖,手機(jī)的種類和尺寸越來(lái)越多琉预,作為前端的小伙伴們可能會(huì)越來(lái)越頭疼,但又不得不去適配一款又一...
    keenjaan閱讀 26,793評(píng)論 9 86
  • “生活不只是眼前的茍且,還有詩(shī)和遠(yuǎn)方。” 也許詩(shī)過(guò)于理想化谦屑,也許遠(yuǎn)方又過(guò)于未來(lái)化混萝;那么鑒于兩者之間的能否算得上適中...
    鐵航旅行閱讀 607評(píng)論 0 0