移動端自適應(yīng)方案

自適應(yīng)需要從以下幾個方面入手:
布局轩勘、字體伞芹、retina帶來的問題

一栈雳、布局:

1. 用%做單位
老方案护奈,兼容性高
在制作落地頁的時候,一般會有一屏展示的需求哥纫,就是不需要滾動就展示全部內(nèi)容霉旗,我的解決方案是通過

html,body{height:100%} /*設(shè)置body高度為屏幕高度*/
.section-header{height:30%}
.section-content{height:60%}
.section-footer{height:10%}

2. 用flex方案 (推薦)
這里有兼容第一版本和第三版本flex的庫 https://github.com/lzxb/flex.css
比%精準(zhǔn),而且靈活

3. 用rem做單位(不推薦)
需要設(shè)置基準(zhǔn)font-size蛀骇,見下面自適應(yīng)字體的解決方案

二厌秒、字體

1. 使用rem,設(shè)置基準(zhǔn)font-size (有的說法說rem有問題)
可以設(shè)置動態(tài)基準(zhǔn)font-size = clientWidth / 10擅憔,將clientWidth平均劃成10份鸵闪,模擬vw作為單位,彌補(bǔ)vw的兼容性

2. 根據(jù)dpr動態(tài)生成
用js判斷出dpr之后暑诸,設(shè)置body的屬性dpr岛马,根據(jù)不同的dpr來設(shè)置不同的字體大小

3. 根據(jù)設(shè)計稿的尺寸
可以根據(jù)設(shè)計稿來設(shè)置基準(zhǔn)clientWidth / designWidth * designFontSize棉姐,然后使用css編譯工具來編譯。

tips:
方案1和方案2可以用postcss的px2rem一起實現(xiàn)

三啦逆、retina屏幕

當(dāng)dpr為2的時候伞矩,一個抽象像素要用到122個物理像素來顯示;當(dāng)dpr為3的時候夏志,一個抽象像素要用到133個物理像素來顯示乃坤。

retina屏帶來的問題:

① 圖片高清問題

當(dāng)一張位圖的1個抽象像素用4個物理像素(dpr=2)展示的時候,每個物理像素需要取該顏色和亮度的近似值沟蔑,所以會產(chǎn)生模糊的問題湿诊;相反,一張位圖的4個抽象像素用1個物理像素展示的時候瘦材,圖像顯示的銳度會降低(downsampling)厅须。

解決方案:
1. 動態(tài)viewport (只解決了blur的問題,而downsampling我覺得這個肯定會有吧食棕?)
根據(jù)設(shè)備的dpr用圖片服務(wù)器生成1x朗和、2x、3x的圖片

2. 阿里lib.img
https://github.com/amfe/article/issues/8

問題延伸:icon的高清問題以及解決方案
https://github.com/amfe/article/issues/2

② 1px問題

設(shè)置1px的時候簿晓,用了4個物理像素(dpr=2)展示眶拉,會顯得比較粗

解決方案:
1. 見動態(tài)viewport
2. 設(shè)置transform scale

transform:scaleX(0.5);
transform:scaleY(0.5);

總結(jié):

淘寶方案lib-flexible使用了使用了動態(tài)viewport、rem布局憔儿、根據(jù)dpr動態(tài)生成字體大幸渲病(自行postcss)
可以參考以下文章:
https://github.com/amfe/lib-flexible
http://div.io/topic/1092
https://github.com/amfe/article/issues/17
http://huodong.m.taobao.com/act/yibo.html

其實有時候如果對1px和高清圖片要求不是很高,只需要考慮設(shè)置scale為1谒臼,然后選用flex朝刊,動態(tài)設(shè)置font-size即可

參考:http://f2e.souche.com/blog/yi-dong-duan-zi-gua-ying-fang-an/


相關(guān)基礎(chǔ)知識:

  1. retina相關(guān)
    http://www.w3cplus.com/css/viewports.html
    https://github.com/riskers/blog/issues/17
    ①設(shè)備像素比(device pixel ratio ) = 物理像素(physical pixel) / 設(shè)備獨(dú)立像素(density-independent pixel)
    ②pc的viewport大小恒等于瀏覽器窗口的大小
    ③移動端的viewport分為layoutviewport和visualviewport,viewport的本質(zhì)是html元素的wrapper蜈缤,它限制了html的寬度拾氓。但是viewport不在HTML范疇內(nèi),所以不可以通過html的css來設(shè)置viewport的寬度劫樟。layoutviewportde的默認(rèn)值一般在 768px ~ 1024px 之間痪枫,最常見的寬度是 980px。而visualviewport是控制meta viewport的scale程度的
    ④如果設(shè)置的meta viewport width="device-width"叠艳,layoutviewport的寬度就會變?yōu)閷?yīng)的物理大心坛隆(注意不是物理像素),這樣就是理想視口附较,用戶一加載進(jìn)來的時候不用縮放來瀏覽吃粒。
    ⑤設(shè)置了initial-scale=1,就會觸發(fā)width="device-width"
    ⑥meta viewport的width的值是dip拒课,就算它的值為“device-width”

  2. 加載相關(guān)
    ①onload和onpageshow的區(qū)別:當(dāng)頁面是從緩存中讀取的徐勃,onload就不執(zhí)行事示,而onpageshow仍然執(zhí)行;
    ②document.readyState有三種狀態(tài):loading、interactive僻肖、complete
    ③domcontentloaded肖爵、onload的區(qū)別

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市臀脏,隨后出現(xiàn)的幾起案子劝堪,更是在濱河造成了極大的恐慌,老刑警劉巖揉稚,帶你破解...
    沈念sama閱讀 218,546評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件秒啦,死亡現(xiàn)場離奇詭異,居然都是意外死亡搀玖,警方通過查閱死者的電腦和手機(jī)余境,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來灌诅,“玉大人芳来,你說我怎么就攤上這事⊙铀埽” “怎么了绣张?”我有些...
    開封第一講書人閱讀 164,911評論 0 354
  • 文/不壞的土叔 我叫張陵答渔,是天一觀的道長关带。 經(jīng)常有香客問我,道長沼撕,這世上最難降的妖魔是什么宋雏? 我笑而不...
    開封第一講書人閱讀 58,737評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮务豺,結(jié)果婚禮上磨总,老公的妹妹穿的比我還像新娘。我一直安慰自己笼沥,他們只是感情好蚪燕,可當(dāng)我...
    茶點故事閱讀 67,753評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著奔浅,像睡著了一般馆纳。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上汹桦,一...
    開封第一講書人閱讀 51,598評論 1 305
  • 那天鲁驶,我揣著相機(jī)與錄音,去河邊找鬼舞骆。 笑死钥弯,一個胖子當(dāng)著我的面吹牛径荔,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播脆霎,決...
    沈念sama閱讀 40,338評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼总处,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了睛蛛?” 一聲冷哼從身側(cè)響起辨泳,我...
    開封第一講書人閱讀 39,249評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎玖院,沒想到半個月后菠红,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,696評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡难菌,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,888評論 3 336
  • 正文 我和宋清朗相戀三年试溯,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片郊酒。...
    茶點故事閱讀 40,013評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡遇绞,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出燎窘,到底是詐尸還是另有隱情摹闽,我是刑警寧澤,帶...
    沈念sama閱讀 35,731評論 5 346
  • 正文 年R本政府宣布褐健,位于F島的核電站付鹿,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏蚜迅。R本人自食惡果不足惜舵匾,卻給世界環(huán)境...
    茶點故事閱讀 41,348評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望谁不。 院中可真熱鬧坐梯,春花似錦、人聲如沸刹帕。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽偷溺。三九已至蹋辅,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間亡蓉,已是汗流浹背晕翠。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人淋肾。 一個月前我還...
    沈念sama閱讀 48,203評論 3 370
  • 正文 我出身青樓耳幢,卻偏偏與公主長得像可霎,于是被迫代替她去往敵國和親龄恋。 傳聞我的和親對象是個殘疾皇子短蜕,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,960評論 2 355

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

  • 一,flexible.js 的使用方式: github地址:https://github.com/amfe/lib...
    愿你如夏日清涼的風(fēng)閱讀 129,949評論 5 117
  • 一碌尔、基礎(chǔ)原理 1.基準(zhǔn)值 (1)選擇一種尺寸作為設(shè)計和開發(fā)的基準(zhǔn)浇辜。(2)定義適配規(guī)則,自動適配其他屏幕下的尺寸唾戚。 ...
    如弦閱讀 1,401評論 1 2
  • 剛開始做移動端web開發(fā)的同學(xué)應(yīng)該都碰到過頁面適配問題柳洋,為什么我在開發(fā)手機(jī)上調(diào)試好的頁面在其他手機(jī)會有這樣或那樣的...
    留七七閱讀 19,368評論 5 80
  • 問題來源 傳統(tǒng)web開發(fā)我們一般只需要用像素去描述dom的寬高,但考慮到移動端屏幕的尺寸千奇百怪叹坦,我們希望找到一種...
    蘇上方閱讀 560評論 0 3
  • 在移動互聯(lián)網(wǎng)快速發(fā)展的今天熊镣,手機(jī)的種類和尺寸越來越多,作為前端的小伙伴們可能會越來越頭疼募书,但又不得不去適配一款又一...
    keenjaan閱讀 26,824評論 9 86