flexible.js

flexible.js是一个用于前端响应式布局的JavaScript库,它根据设备像素比(dpr)调整body字体大小,并设置1rem等于视口宽度的1/24。当窗口尺寸变化时,会重新计算rem单位,确保布局适应性。此外,库还检测并支持0.5px边框在高分辨率屏幕上的显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(function flexible(window, document) {

  var docEl = document.documentElement;

  var dpr = window.devicePixelRatio || 1;

  // adjust body font size

  function setBodyFontSize() {

    if (document.body) {

      document.body.style.fontSize = 12 * dpr + "px";

    } else {

      document.addEventListener("DOMContentLoaded", setBodyFontSize);

    }

  }

  setBodyFontSize();

  // set 1rem = viewWidth / 10

  function setRemUnit() {

    var rem = docEl.clientWidth / 24;

    docEl.style.fontSize = rem + "px";

  }

  setRemUnit();

  // reset rem unit on page resize

  window.addEventListener("resize", setRemUnit);

  window.addEventListener("pageshow", function(e) {

    if (e.persisted) {

      setRemUnit();

    }

  });

  // detect 0.5px supports

  if (dpr >= 2) {

    var fakeBody = document.createElement("body");

    var testElement = document.createElement("div");

    testElement.style.border = ".5px solid transparent";

    fakeBody.appendChild(testElement);

    docEl.appendChild(fakeBody);

    if (testElement.offsetHeight === 1) {

      docEl.classList.add("hairlines");

    }

    docEl.removeChild(fakeBody);

  }

})(window, document);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值