rem適配,解決用戶設置系統(tǒng)字體大小導致樣式錯亂問題

開發(fā)移動端有一段時間了,目前移動端主流的適配方案依然是rem。由于rem適配以根元素字體大小為基準的單位,當用戶設置了系統(tǒng)字體大小的時候,普通的rem適配方法會失效,導致樣式錯亂。我在開發(fā)的時候也遇到這個問題,所以在原有rem適配方法上加了校驗功能。

鏈接:https://github.com/blcyzycc/hs_rem


(function (doc, win) {
  var remFull = 3.75 // 3.75rem全屏
  var docEl = doc.documentElement
  var resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize'
  var recalc = function () {
    var clientWidth = docEl.clientWidth
    if (!clientWidth) return;

    var fontSize = clientWidth / (remFull * 100) * 100
    docEl.style.fontSize = fontSize + 'px'

    var eDivWidth = 0
    var eDiv = document.createElement('div')

    eDiv.style.width = remFull + 'rem'
    eDiv.style.height = '1px'
    eDiv.style.position = 'fixed'
    eDiv.style.boxSizing = 'border-box'
    document.body.appendChild(eDiv)
    eDivWidth = eDiv.clientWidth

    if (clientWidth !== eDivWidth) {
      var timer = setInterval((function () {
        clientWidth = docEl.clientWidth
        eDivWidth = eDiv.clientWidth

        if (clientWidth !== eDivWidth) {
          docEl.style.fontSize = fontSize * (clientWidth / eDivWidth) + 'px'
        } else {
          clearInterval(timer)
          document.body.removeChild(eDiv)
        }
        return arguments.callee
      })(), 100)
    } else {
      document.body.removeChild(eDiv)
    }
  };
  if (!doc.addEventListener) return;
  win.addEventListener(resizeEvt, recalc, false)
  doc.addEventListener('DOMContentLoaded', recalc, false)
})(document, window);
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • 昨天是開學第一天,有些不適應,主要是各種常規(guī)事務的忙碌,開學典禮,發(fā)書,常規(guī)要求,物色班委等等事情。 接到新生有些...
    華客魯俊閱讀 308評論 5 1
  • 0827聆聽的是葉老師所講的點問搜三個字去接觸一個新工具 小學時候媽媽給我買了一個打字機,同時也給我一本打字的練習...
    清鳳徐來簡書作者閱讀 154評論 0 0
  • 第一飲食,吃太多吃太飽人的精力都要去消化這些食物,人體沒有得到休息,各種器官,肝膽,胃里都要繼續(xù)工作大腦血氣就會缺...
    c5646c213098閱讀 475評論 0 0
  • 整改意見:ps-ef|grepsshd|grep-v"grep"ps-ef|grepsshd ps-ef:打開所有...
    留白_bb77閱讀 431評論 1 0
  • 那一天 你穿上潔白的婚紗 在天下人眼里,當然我更希望在你眼里 你是最美的 這一年 南國冬暖 桃花誤入她們的春天 依...
    笑燕書閱讀 242評論 0 0

友情鏈接更多精彩內(nèi)容