談?wù)勎业囊苿佣藃em適配方案

最近有點懷疑人生,畢竟一個人寫前端终蒂,有時候會懷疑自己理解的一些東西包括用法有沒有符合標準。趁著這陣子閑下來遥诉,翻了翻別人的rem適配博客拇泣,發(fā)現(xiàn)有點繞口,怪自己是個強迫癥矮锈,啥都要自己去試試結(jié)果并從中理解霉翔,趁著這段時間有點閑就整理了一下自己的移動端rem適配方案:

1.思路很簡單,首先我們得明白一樣東西苞笨,就是viewport债朵,簡單的說就是我們打開谷歌瀏覽器模擬手機不同型號時看到的不同像素比例大小,i5為320x568,i6為375x667,其它的就不一一列舉了瀑凝,現(xiàn)在假設(shè)我們ui給出的設(shè)計圖大小是750x1334的基準序芦,也就是i6的viewport的兩倍大小。那么我就會通過js來自定義根元素的字體像素大小:如下:

    var w = document.documentElement.clientWidth,
       fz = w * 20 / 375;
    document.getElementsByTagName('html')[0].style.fontSize = fz + 'px';

解釋一下=>clientWidth也就是我們經(jīng)常所說的viewport視口寬度大小猜丹,除以375是因為設(shè)計稿是基于750x1334的基準做出來的芝加,也就是i6設(shè)備device-width的兩倍寬度大小(375px),這個寬度大小可以根據(jù)設(shè)計圖實際大小自定義,假設(shè)設(shè)計圖的寬度大小是640px,那么就要將375px換成640/2=320px大小;

=>而20的意義是用來自定義你要設(shè)置的viewport的device-width為375px下的根字體大小射窒,可隨意更改,因此設(shè)定了上面一段代碼后你會看到谷歌瀏覽器模擬下的設(shè)備為i6(375pxX667px)的html元素上多了style="font-size:20px"這個樣式将塑,也就是我們自己定義的根字體的像素大小脉顿,當然不能少了window.onresize事件讓視口被改變時自動算出并跟新html根字體大小,所以完整的代碼是這樣的:

    Window.onload=window.onresize=function () {
            var w = document.documentElement.clientWidth,
            fz = w * 20 / 375;
            document.getElementsByTagName('html')[0].style.fontSize = fz + 'px';
            },

那么此時1rem就相當于20px=>(html根目錄字體大小)点寥,于是我們可以通過設(shè)計圖中某一塊元素的標記大小來調(diào)整它對應(yīng)的rem值艾疟,比如設(shè)計圖上(基于750x1334的基準)某一個logo的寬度為100px,那么寫成rem樣式就是100/2(1/20)=2.5rem,為什么要除以2呢,不要忘了設(shè)計圖寬度750px是i6設(shè)備viewport的兩倍寬度大小(375px)蔽莱。當然弟疆,可以通過sass的@mixin()自定義方法設(shè)定一個缺省變量將轉(zhuǎn)化公式100/2(1/20)寫在該方法中,sass會自動幫你完成轉(zhuǎn)換盗冷,寫其它元素樣式時就可以@include該方法啦怠苔!

關(guān)于sass的使用可以看這篇文章
http://www.ruanyifeng.com/blog/2012/06/sass.html

這樣子基本上就實現(xiàn)了rem適配,原理就是在你轉(zhuǎn)換成不同型號手機時1rem的相對大小==html根字體大小仪糖,而html根字體大小是會隨時變動的,1rem相對大小也就會跟著變動.

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末柑司,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子锅劝,更是在濱河造成了極大的恐慌攒驰,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,651評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件故爵,死亡現(xiàn)場離奇詭異玻粪,居然都是意外死亡,警方通過查閱死者的電腦和手機诬垂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評論 3 392
  • 文/潘曉璐 我一進店門奶段,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人剥纷,你說我怎么就攤上這事痹籍。” “怎么了晦鞋?”我有些...
    開封第一講書人閱讀 162,931評論 0 353
  • 文/不壞的土叔 我叫張陵蹲缠,是天一觀的道長。 經(jīng)常有香客問我悠垛,道長线定,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,218評論 1 292
  • 正文 為了忘掉前任确买,我火速辦了婚禮斤讥,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘湾趾。我一直安慰自己芭商,他們只是感情好,可當我...
    茶點故事閱讀 67,234評論 6 388
  • 文/花漫 我一把揭開白布搀缠。 她就那樣靜靜地躺著铛楣,像睡著了一般。 火紅的嫁衣襯著肌膚如雪艺普。 梳的紋絲不亂的頭發(fā)上簸州,一...
    開封第一講書人閱讀 51,198評論 1 299
  • 那天鉴竭,我揣著相機與錄音,去河邊找鬼岸浑。 笑死搏存,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的矢洲。 我是一名探鬼主播璧眠,決...
    沈念sama閱讀 40,084評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼兵钮!你這毒婦竟也來了蛆橡?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,926評論 0 274
  • 序言:老撾萬榮一對情侶失蹤掘譬,失蹤者是張志新(化名)和其女友劉穎泰演,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體葱轩,經(jīng)...
    沈念sama閱讀 45,341評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡睦焕,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,563評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了靴拱。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片垃喊。...
    茶點故事閱讀 39,731評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖袜炕,靈堂內(nèi)的尸體忽然破棺而出本谜,到底是詐尸還是另有隱情,我是刑警寧澤偎窘,帶...
    沈念sama閱讀 35,430評論 5 343
  • 正文 年R本政府宣布乌助,位于F島的核電站,受9級特大地震影響陌知,放射性物質(zhì)發(fā)生泄漏他托。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,036評論 3 326
  • 文/蒙蒙 一仆葡、第九天 我趴在偏房一處隱蔽的房頂上張望赏参。 院中可真熱鬧,春花似錦沿盅、人聲如沸把篓。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間窒悔,已是汗流浹背敌买。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評論 1 269
  • 我被黑心中介騙來泰國打工聋庵, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留芙粱,地道東北人。 一個月前我還...
    沈念sama閱讀 47,743評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像律姨,于是被迫代替她去往敵國和親择份。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,629評論 2 354

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