92国产精品视频_亚洲a级在线观看_国产精品电影观看_国产精品免费观看在线_精品伊人久久97_亚洲人成在线观_尤物九九久久国产精品的特点_成人激情在线播放_成人黄色大片在线免费观看_亚洲成人精品久久久_久久免费视频在线观看_久久精品国产一区_国产一区二区三区18_亚洲欧美中文字幕在线一区_日韩美女中文字幕_日韩视频免费在线

移動端適配問題解決方案

2018-7-9    高勁

隨著時間的發展,現在基本上人手一部手機的低頭族。做為前端開發的程序猿,在開發移動端web應用的時候,對面一堆各色尺寸不一樣的屏幕,就有點淡淡的憂傷。

QQ截圖20180705114651.png

QQ截圖20180705114755.png

以上是2018年二月份的友盟數據,可在這里查看詳情
很明顯我們所要實現的就是在上述如此之多的屏幕,都能實現UI大大出的視覺圖上的效果。而要實現這樣的效果主要有兩個難點

  • 各屏幕適配
  • Retina屏下的細節處理(主要是1px的問題)

各屏幕適配各屏幕的適配,有兩種方案,flexible + rem 與 vw。這三個單詞是什么意思,看著很眼熟,但是這兩個方案居然是什么呢,請允許我細細道來。

flexible + rem顯而易見,該方案是由rem 以及 flexible組成的。rem (font size of the root element)相對于根元素(即html元素)font-size計算值的倍數,flexible 即 flexible.js, 手淘團隊提供的一個為該方案屏幕適配而寫的一個庫,主要實現的功能就是,根據屏幕的寬度給 html 元素設置一個合適的 font-size 值。

怎么樣看的不是很懂是吧。讓我來用一個頁面場景再復述一遍。

正常情況下,我們的UI大大會以iphone6的尺寸為標準,做一套視覺效果圖,并在上面進行標注,給到我們的標注圖,如下所示

QQ截圖20180705115007.png

拿到這個圖 我們該如何下手呢

  • 先設置 html 元素的 font-size, 這個值我們暫時設置為 font-size: 37.5px,即1rem = 37.5px;
  • 以iphone6為例子,其屏幕寬度為 750px, 整個屏幕的寬度即 20rem = 37.5 * 20px = 750px;
  • 此時手機號的輸入框為 490px = 13.06777777rem
  • 依次將頁面上的px轉換為rem,這樣我們就得到了全是rem為尺寸單位的頁面

到這里為止是不是就結束了呢 ? 很遺憾的告訴你并不是。為什么 html 元素的 font-size 要設置為 37.5px呢?現在這個界面在iphone6上能完美顯示了,在iphone5s,iphone6p能完美顯示嗎?(iphone6, iphone6s, iphone7. iphone8屏幕沒有發生變化,本文直接用iphone6代替了。)上面的兩個問題 我們還有沒解決,這個時候就輪到flexible登場了。只需要像如下引入就可實現用js來自動根據屏幕寬度設置 html元素的font-size的值。

<script src=";引申一下在上述過程中,你會發現,UI給到我們的一般是px標注的圖,我們將其轉化為rem,這個過程其實會花費很大的計算時間。做為一個合格的程序員,我們應該把這種機械性無腦的操作交給計算機來實現。我使用的是PostCss的插件 postcss-px2rem,這個插件能讓我們在寫代碼時候直接寫px,在構建的時候自動將我們所寫的px轉換為rem,大大提升了我們的開發效率。

vw這個vw的方案,相當而言還比較新。vw 即(viewport width)可視窗口的寬度。之所以把這個方案放在后面來說,是因為viewport在去年(2017年)的時候存在不少的兼容性問題,各個瀏覽器的支持并不是很好。但是來到了2018年這個時間點,viewport單位意見得到了眾多瀏覽器的支持(80.45%)。


QQ截圖20180705115133.png

可以在這里查看。
接下來就讓我們來正式了解下這個方案吧。vw既然是一個尺寸單位,那它的寬度等于多少呢?等于1%整個屏幕的寬度。舉個例子,再次以iphone6手機為例,100vw = 750px => 1vw = 7.5px
再一次那上次的界面做示范

QQ截圖20180705115007.png


  • 根據定義,我們了解了在iphone6手機上 1vw = 7.5px
  • 此時手機號的輸入框為 490px = 65.333333vw
  • 依次將頁面上的px轉換為vw,這樣我們就得到了全是vw為尺寸單位的頁面

到這里為止是不是就結束了呢? 是的就是這么簡單。

引申一下跟之前一樣的痛點,我們仍然需要花費大量不必要的計算時間去把標注圖中的px轉換為vw,有沒有類似于postcss-px2rem的工具呢?很榮幸能再次站在巨人的肩膀上,已經有大神寫了了類似的PostCss插件 postcss-px-to-viewport

1px問題移動端的屏幕不僅僅分辨率有差異,其實還有Retina屏的問題。正常情況下,我們代碼里的1px在屏幕上就應該顯示一個像素點,但是在Retina屏下則不僅僅是一個像素點。再次拿iphone6為例,其dpr(device pixel ratio)設備像素比為2,css中一個1x1的點,其實在iphone6上是2x2的點,并且1px的邊框在devicePixelRatio = 2的Retina屏下會顯示成2px,在iPhone6 Plus下甚至會顯示成3px。

這樣的話,我們就會發現在有些手機上1px明顯跟另外的一些手機的1px粗細不一樣。其實大多數的小公司不會扣這樣的一個細節,比如說我們公司不會。(^__^) 嘻嘻……

但是作為一個有追求的前端工程師,我們應該盡量的把事情做的完美一點,(ps.像大公司看齊,在大公司這個細節問題其實是不容忽視的,為了自己以后的發展前途,我們有必要把這個細節完善掉的。)

這個問題的解決方案有很多,個人覺得最簡單方面的還是大漠大大的一種解決方案。使用postcss-write-svg插件,

@svg 1px-border {  height: 2px;  @rect {    fill: var(--color, black);    width: 100%; height: 50%;    }  }.example {  border: 1px solid transparent;  border-image: svg(1px-border param(--color #00b1ff)) 2 2 stretch;}編譯出來就是

.example {  border: 1px solid transparent;  border-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='其他小程序中的屏幕適配最近在寫小程序,在小程序里,使用的是小程序的那套,跟平時用的vue全家桶以及react全家桶不一樣,并沒有配置webpack,在這種情況下我們使用postcss其實很困難(反正我是搞不出來/(ㄒoㄒ)/~~)

那該怎么辦呢,小程序提供了一個自己的單位, rpx(responsive pixel): 可以根據屏幕寬度進行自適應。規定屏幕寬為750rpx。如在 iPhone6 上,屏幕寬度為375px,共有750個物理像素,則750rpx = 375px = 750物理像素,1rpx = 0.5px = 1物理像素。



設備

rpx換算px (屏幕寬度/750)
px換算rpx (750/屏幕寬度)



iPhone5

1rpx = 0.42px
1px = 2.34rpx



iPhone6

1rpx = 0.5px
1px = 2rpx



iPhone6p

1rpx = 0.552px
1px = 1.81rpx

我們直接用拿到iphone6的標注圖,直接寫rpx就好。



日歷

鏈接

個人資料

藍藍設計的小編 http://www.skdbbs.com

存檔

92国产精品视频_亚洲a级在线观看_国产精品电影观看_国产精品免费观看在线_精品伊人久久97_亚洲人成在线观_尤物九九久久国产精品的特点_成人激情在线播放_成人黄色大片在线免费观看_亚洲成人精品久久久_久久免费视频在线观看_久久精品国产一区_国产一区二区三区18_亚洲欧美中文字幕在线一区_日韩美女中文字幕_日韩视频免费在线
国产国语videosex另类| 精品国产户外野外| 97在线视频免费| 国产美女搞久久| 国产精品午夜国产小视频| 久久资源免费视频| 欧美性猛交xxxx乱大交| 91色琪琪电影亚洲精品久久| 欧美午夜激情在线| 国产精品爽爽爽爽爽爽在线观看| 成人444kkkk在线观看| 亚洲视频在线免费看| 国产精品高潮呻吟久久av野狼| 欧美日韩一区二区在线播放| 91精品国产综合久久香蕉| 日韩av手机在线看| 日韩欧美在线中文字幕| 在线视频免费一区二区| 成人美女av在线直播| 色综合天天狠天天透天天伊人| 国产精品久久视频| 亚洲天堂av在线免费观看| 91国产视频在线| 91视频国产精品| 亚洲精品国产综合区久久久久久久| 91精品国产99久久久久久| 狠狠爱在线视频一区| 久久久亚洲网站| 俺去啦;欧美日韩| 欧美黑人国产人伦爽爽爽| 中文在线不卡视频| 91精品免费久久久久久久久| 国产精品久久在线观看| 国产精品视频一区二区高潮| 亚洲成人av在线播放| 青青草原成人在线视频| 亚洲色图激情小说| 川上优av一区二区线观看| 国产成人精彩在线视频九色| 97香蕉久久夜色精品国产| 国产成人精品优优av| 久久精品国产欧美激情| 国产日韩欧美电影在线观看| 日本伊人精品一区二区三区介绍| 久久久久久久久久久免费| 97在线看福利| 精品欧美一区二区三区| 久久久久久久久网站| 色综合久久久888| 亚洲色图在线观看| 综合国产在线观看| 亚洲人精品午夜在线观看| 日本精品久久久久久久| 久久99国产综合精品女同| 欧美一级bbbbb性bbbb喷潮片| 成人国产精品一区| 国产精品九九九| 91在线观看免费高清| 在线视频日本亚洲性| 九九精品在线播放| 亚洲激情视频在线播放| 欧美日韩黄色大片| 午夜精品一区二区三区视频免费看| 北条麻妃一区二区三区中文字幕| 欧美激情中文字幕在线| 欧美老少做受xxxx高潮| 日韩免费av一区二区| 久久精品国亚洲| 亚洲理论电影网| 668精品在线视频| 最近2019年手机中文字幕| 日韩亚洲欧美中文在线| 一道本无吗dⅴd在线播放一区| 人人做人人澡人人爽欧美| 北条麻妃一区二区在线观看| 久久久久久久久久久亚洲| 久久久精品亚洲| 欧美猛少妇色xxxxx| 国产精品黄视频| 久久综合伊人77777蜜臀| 国语自产精品视频在线看抢先版图片| 久久久女女女女999久久| 国产精品第二页| 午夜剧场成人观在线视频免费观看| 性欧美xxxx视频在线观看| 精品久久久久久电影| 日韩中文字幕av| 美日韩精品免费视频| 久热精品在线视频| 久久天天躁夜夜躁狠狠躁2022| 国产精品69精品一区二区三区| 欧美亚洲一区在线| 亚洲欧美国产另类| 亚洲精品www久久久久久广东| 91午夜理伦私人影院| 国产精品久久久亚洲| 欧美激情奇米色| 国产精品日韩在线播放| 国产不卡一区二区在线播放| 国产精自产拍久久久久久蜜| 久久亚洲国产精品成人av秋霞| 91久久久久久久一区二区| 国产欧亚日韩视频| 日韩av快播网址| 久久最新资源网| 亚洲午夜色婷婷在线| 国产欧美一区二区三区视频| 57pao成人国产永久免费| 国产精品一区二区久久久| 欧美午夜精品久久久久久久| 91免费在线视频网站| 中文字幕亚洲国产| 色天天综合狠狠色| 亚洲欧美资源在线| 97热精品视频官网| 日韩大胆人体377p| 一道本无吗dⅴd在线播放一区| 91精品视频在线播放| 在线成人一区二区| 97成人精品区在线播放| 欧美老女人性视频| 久久久久久久一区二区| 亚洲天堂色网站| 国产精品久久久久91| 日韩av在线导航| www国产91| 91日韩在线视频| 日韩少妇与小伙激情| 欧美国产日韩精品| 欧美一级大片视频| 欧美在线视频网站| 亚洲欧美激情视频| 91精品啪aⅴ在线观看国产| 欧美性色视频在线| 亚洲电影免费观看| 国产亚洲精品久久久久动| 欧美日韩国产va另类| 欧美成人精品一区二区| 国产精品都在这里| 亚洲乱码av中文一区二区| 77777亚洲午夜久久多人| 日韩中文字幕网站| 日韩av电影在线播放| 日韩av在线免费| 国产精品男人爽免费视频1| 久久人人爽人人爽人人片av高请| 久久影视三级福利片| 亚洲国产成人精品女人久久久| 亚洲一级一级97网| 欧美午夜片欧美片在线观看| 久久久99久久精品女同性| 久久香蕉频线观| 尤物yw午夜国产精品视频| 亚洲一区久久久| 97视频人免费观看| 欧美性生交大片免费| 俺去啦;欧美日韩| 亚洲嫩模很污视频| 欧美美最猛性xxxxxx| 欧美一区二区三区……| 欧洲永久精品大片ww免费漫画| 国产精品69av| www.亚洲成人| 两个人的视频www国产精品|