实现1物理像素

实现1物理像素

我们写的1css像素都会跨越好几个物理像素,并且显示出来是按1像素的。那我们怎么实现1物理像素。(淘宝实现)

通过缩放

(function () {
    var dpr = window.devicePixelRatio || 1;
    const styleNode = document.createElement('style');
    let size = document.documentElement.clientWidth * dpr / 16;
    styleNode.innerHTML = `html {font-size: ${size}px!important}`;
    document.head.appendChild(styleNode);
    let scale = 1 / dpr;
    const meta = document.querySelector('meta[name="viewport"]');
    console.log(meta);
    meta.content = `width=device-width, initial-scale=${scale}`;
})()

采用 rem 适配,并放大 rem 的基值 (dpr倍)

再通过系统缩放,缩放回dpr倍, initial-scale=1/dpr

通过 transform

@media only screen and (-webkit-device-pixel-ratio: 2) {
    #test {
        transform: scaleY(.5);
    }
}

@media only screen and (-webkit-device-pixel-ratio: 3) {
    #test {
        transform: scaleY(.33333333333333333);
    }
}

伪元素+transform

@media only screen and (-webkit-device-pixel-ratio: 2) {
    #test {
        transform: scaleY(.5);
    }
}

@media only screen and (-webkit-device-pixel-ratio: 3) {
    #test {
        transform: scaleY(.33333333333333333);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值