移動端適配

介紹百分比懊蒸,em荣倾,rem

  • 百分比的情況比較復雜:主要分5種情況
    1. withpadding骑丸、margin舌仍、rightleft相對于父元素的width通危。
    2. height铸豁、topbottom相對于父元素的height黄鳍。
    3. font-size相對于父元素的font-size推姻。
    4. line-height相對于自身的font-size。
    5. border-radius框沟、background-size藏古、transform: translate()增炭、transform-originzoom拧晕、clip-path相對于自身寬/高
  • em 表示自身字體尺寸的倍數(shù)(不是相對于父元素)
  • rem Equal to the computed value of font-size on the root element.相當于根元素的計算值

適配方案

  • 首先一定要加上<meta name="viewport" content="width=device-width, initial-scale=1.0">為了讓頁面可視寬度與手機可視寬度相同

  • 我們試著讓1rem=頁面寬度的一半

function init (){
  var style = document.createElement('style')
  var pageWidth = document.documentElement.clientWidth;
  style.innerHTML = 'html{font-size :' + pageWidth/2 + 'px !important;}'
  document.head.appendChild(style);
}
window.onresize=function(){
  init()
}
window.onload=function(){
  init()
}

demo

這樣做雖然可以將rem做成類百分比隙姿。但是,當你遇到除不盡的尺寸的時候厂捞,寫起來會很麻煩输玷。而且,如果設(shè)計稿有定高的模塊的時候靡馁,你還得額外計算屏幕寬度的影響欲鹏。所以這樣做是很麻煩的,所以我們試著讓1rem與設(shè)計稿聯(lián)系起來臭墨,假設(shè)我們設(shè)計稿寬度是750赔嚎。那么我們可以這樣寫。

function init (designWidth){
  var style = document.createElement('style')
  var pageWidth = document.documentElement.clientWidth;
  style.innerHTML = 'html{font-size :' + pageWidth/designWidth + 'px !important;}'
  document.head.appendChild(style);
}
window.onresize=function(){
  init(750)
}
window.onload=function(){
  init(750)
}

這樣寫就能讓1rem等于設(shè)計稿的1px胧弛。但是還是會出現(xiàn)問題尤误,瀏覽器font-size的最小單位是12px,假設(shè)你在iphone6下面開發(fā)结缚,html的font-size.5px但是會被強制成12px损晤。這樣你做的就是無用功了。所以我們還需要一個rem2px的變量來放大我們的font-size

//設(shè)計稿的尺寸750
//設(shè)置之后1rem=設(shè)計稿的40px
function init (desginWidth,rem2px){
    var style = document.createElement('style')
    var pageWidth = document.documentElement.clientWidth;
    style.innerHTML = 'html{font-size :' + 40*pageWidth/desginWidth + 'px !important;}'
    document.head.appendChild(style);
}
window.onload=function(){ init(750,40) }

我個人比較喜歡將rem2px設(shè)置成40红竭,有人會好奇尤勋,為什么不是20。還是因為最小font-size的限制茵宪,如果rem2px為20在ipad下面很容易突破12px的限制斥黑。

  • 到目前為止還不算完,因為rem其實是一個計算值眉厨,在 html 的 fontSize 設(shè)置為 px 的情況下1rem = 1 * (htmlFontSize / 16) * defaultFontSize一般瀏覽器的默認值是16锌奴,但是如果用戶主動設(shè)置了defaultFontSize就會出現(xiàn)偏差,這種情況我們可以用百分比來繞過去憾股。
function init (designWidth,rem2px){
    var d = window.document.createElement('div');
    d.style.width = '1rem';
    d.style.display = "none";
    var head = window.document.getElementsByTagName('head')[0];
    head.appendChild(d);
    var defaultFontSize = parseFloat(window.getComputedStyle(d, null).getPropertyValue('width'));
    d.remove();
  /*
    到這里是為了獲得defaultFontSize系統(tǒng)默認字體
  */
    document.documentElement.style.fontSize = window.innerWidth / designWidth * rem2px / defaultFontSize * 100 + '%';
}

這樣設(shè)置在defaultFontSize為16與我們第三步?jīng)]什么區(qū)別

Reference

了解真實的rem

除了上面方法

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末鹿蜀,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子服球,更是在濱河造成了極大的恐慌茴恰,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,084評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件斩熊,死亡現(xiàn)場離奇詭異往枣,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評論 3 392
  • 文/潘曉璐 我一進店門分冈,熙熙樓的掌柜王于貴愁眉苦臉地迎上來圾另,“玉大人,你說我怎么就攤上這事雕沉〖牵” “怎么了?”我有些...
    開封第一講書人閱讀 163,450評論 0 353
  • 文/不壞的土叔 我叫張陵坡椒,是天一觀的道長扰路。 經(jīng)常有香客問我,道長倔叼,這世上最難降的妖魔是什么汗唱? 我笑而不...
    開封第一講書人閱讀 58,322評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮丈攒,結(jié)果婚禮上渡嚣,老公的妹妹穿的比我還像新娘。我一直安慰自己肥印,他們只是感情好,可當我...
    茶點故事閱讀 67,370評論 6 390
  • 文/花漫 我一把揭開白布绝葡。 她就那樣靜靜地躺著深碱,像睡著了一般。 火紅的嫁衣襯著肌膚如雪藏畅。 梳的紋絲不亂的頭發(fā)上敷硅,一...
    開封第一講書人閱讀 51,274評論 1 300
  • 那天,我揣著相機與錄音愉阎,去河邊找鬼绞蹦。 笑死,一個胖子當著我的面吹牛榜旦,可吹牛的內(nèi)容都是我干的幽七。 我是一名探鬼主播,決...
    沈念sama閱讀 40,126評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼溅呢,長吁一口氣:“原來是場噩夢啊……” “哼澡屡!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起咐旧,我...
    開封第一講書人閱讀 38,980評論 0 275
  • 序言:老撾萬榮一對情侶失蹤驶鹉,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后铣墨,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體室埋,經(jīng)...
    沈念sama閱讀 45,414評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,599評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了姚淆。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片睹逃。...
    茶點故事閱讀 39,773評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖吱抚,靈堂內(nèi)的尸體忽然破棺而出国拇,到底是詐尸還是另有隱情,我是刑警寧澤上忍,帶...
    沈念sama閱讀 35,470評論 5 344
  • 正文 年R本政府宣布骤肛,位于F島的核電站,受9級特大地震影響窍蓝,放射性物質(zhì)發(fā)生泄漏腋颠。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,080評論 3 327
  • 文/蒙蒙 一吓笙、第九天 我趴在偏房一處隱蔽的房頂上張望淑玫。 院中可真熱鬧,春花似錦面睛、人聲如沸絮蒿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽土涝。三九已至,卻和暖如春幌墓,著一層夾襖步出監(jiān)牢的瞬間但壮,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評論 1 269
  • 我被黑心中介騙來泰國打工常侣, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蜡饵,地道東北人。 一個月前我還...
    沈念sama閱讀 47,865評論 2 370
  • 正文 我出身青樓胳施,卻偏偏與公主長得像溯祸,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子舞肆,可洞房花燭夜當晚...
    茶點故事閱讀 44,689評論 2 354

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