1px边框问题

31 篇文章 0 订阅
(function () {
  const maxWidth = 540; //不考虑缩放和dpr
  const minWidth = 320;
  let dpr = window.devicePixelRatio || 1;
  //dpr可能是小数,要化为整数
  dpr = dpr >= 3 ? 3 : (dpr >= 2 ? 2 : 1);
  function setRem() {
    //获取html的dom元素
    const domEl = document.documentElement;
    //clientWidth就是屏幕的物理像素宽能够代表的css像素宽,在initial-scale为1时,物理像素为375->css像素也为375
    //initial-scale为2时,css像素变为750
    let cliWidth = domEl.clientWidth;
    if (maxWidth && (cliWidth / dpr > maxWidth)) {
      cliWidth = maxWidth * dpr;
    } else if (minWidth && (cliWidth / dpr < minWidth)) {
      cliWidth = minWidth * dpr;
    }
    //当initial-scale改变的时候,获取到的cliWidth会
    domEl.style.fontSize = (cliWidth / 375) * 20 + 'px';
    console.log("fontSize", (cliWidth / 375) * 20);

  }
  //设置缩放解决dpr不为1的情况
  const docEl = document.documentElement;
  docEl.setAttribute("data-dpr", dpr);
  //如dpr=2 -->一个css像素用了2个物理像素 --> 所以要缩小1倍 即 1/2
  const scale = 1 / dpr;
  const content = `width=device-width, initial-scale=${scale},maximum-scale=${scale},minimum-scale=${scale},user-scalable=no`
  const meta = document.querySelector('meta[name=viewport]');
  if (meta) {
    meta.setAttribute('content', content)
  } else {
    meta = document.createElement('meta');
    meta.setAttribute('name', 'viewport');
    meta.setAttribute('content', content);
    document.head.appendChild(meta);
  }
  setRem()
  window.onresize = setRem;
})();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值