移动设备下小数位px的渲染

起因

起初发现文字未垂直居中,以为是行高和基线引起,后来将行高,字体大小指定为1rem高度用padding支撑,但发现为元素指定相同高度的情况下,上面的高度永远比下面的小一些,导致文字上移,未能垂直居中

原因

但是PC上显示正常,随后想到可能是因为手机dpi高导致浏览器渲染小数形式的px时,自动做出调整。所以随便写了个测试,如下:

// 小demo
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style media="screen">
        .a, .b {
            width: 100px;
            height: 1.42px;
            background-color: red;
            margin-top: 1px;
        }
        .b {
            background-color: green;
        }
        .c {
            width: 100px;
            height: 1.61px;
            margin-top: 1px;
            background-color: yellow;
        }
    </style>
</head>
<body>
    <div class="a"></div>
    <div class="b"></div>
    <div class="c"></div>
</body>
</html>复制代码

image.png

很明显红色的是1px,绿色的是2px,黄色的是1px,那结果就很明确了,手机浏览器对于小数渲染采用四舍五入的方式(注意:只是展示,实际占位还是原始大小),上一个元素舍去的部分会和下一个元素相加

  1. 红色区域(1.41px)- 舍去0.41px - 渲染大小为1px - 下一个元素渲染高度加上0.41px
  2. 绿色区域(1.41px + 0.41px = 1.82px) - 掠夺0.18px - 渲染大小为2px - 下一个元素渲染高度减去0.18px
  3. 黄色区域(1.61px - 0.18px = 1.43px)- 舍去0.43px - 渲染大小为1px - 下一个元素渲染大小高度增加0.43px

想法

rem等单位的好处很明显,但是在有些场景下还是px更加合适,多灵活按照实际情况运用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值