美文网首页大前端
Retina(视网膜)屏幕的1px如何实现

Retina(视网膜)屏幕的1px如何实现

作者: 天問_专注于大前端技术 | 来源:发表于2022-03-14 16:55 被阅读0次

开发过移动H5或者混合APP的前端小伙伴,估计都体会过各个机型兼容适配的痛苦。有时候为了 1px 而绞尽脑汁,本文就详细介绍一下 Retina (视网膜)屏幕的 1px 的实现方法。

DPR 1PX

背景

如果仅仅使用 css 的 1px 来设置 border ,那可能会出现比较粗的情况。因为有些手机屏幕的 DPR = 2,还有 DPR = 3 的情况,即 1px 它会用两个物理像素来显示,自然就粗了。
而这时候,你不能直接写 0.5px ,因为浏览器兼容性不好,渲染出来可能还是 1px 的效果,甚至无法正常显示。

PS:DPR 即为像素比,是 Window 对象下的一个属性,可以用以下方法获取。

const DPR = window.devicePixelRatio

解决单边框 border 问题

我们可以使用 css 伪类 + transform 缩小来优化这一问题。即把默认的 1px 宽度给压缩 0.5 倍。

#box {
    width: 200px;
    height: 100px;
    padding: 10px 0;
    position: relative;
}

#box::before {
    content: '';
    position: absolute;
    left: 0;
    bottom: 0;
    width: 100%;
    height: 1px;
    background: #333;
    transform: scaleY(0.5);
    transform-origin: 0 0;
}

解决 border-radius 为 1px 的情况

如果有 border-radius 就不能使用 transform 进行缩放了,因为如果是整体缩放,肯定会影响其中的content内容,这时就可以巧用 box-shadow 设置来解决。

box-shadow属性的值依次是:

  • X 偏移量 0
  • Y 偏移量 0
  • 阴影模糊半径 0
  • 阴影扩散半径 0.5px
  • 阴影颜色 #333
#box {
    width: 200px;
    height: 100px;
    margin-top: 20px;
    padding: 10px;
    border-radius: 10px;
    /* border: 1px solid #333; */
    box-shadow: 0 0 0 0.5px #333;
}

Perfect solution _


欢迎访问:天问博客

相关文章

  • Retina(视网膜)屏幕的1px如何实现

    开发过移动H5或者混合APP的前端小伙伴,估计都体会过各个机型兼容适配的痛苦。有时候为了 1px 而绞尽脑汁,本文...

  • 移动端1px问题的一种解决方案

    因为retina视网膜屏幕的大量使用,使移动端产生了1px问题。设备像素比由原本的1变为1.5/2甚至是现在的3,...

  • 常用css总结

    垂直居中 伪类 + transform 实现移动端 Retina 屏幕 1px 边框 flex常用布局盒结构 关于...

  • Retina屏幕1px的实现

    一些基本概念 viewport 视窗 在桌面浏览器中,viewport就是浏览器窗口的宽度高度。但在移动端设备上,...

  • 移动端相关问题

    1. 移动端适配 2. 解决1px细线问题 出现原因:在retina(视网膜)屏上面,devicePixel...

  • 很多人只买视网膜屏的手机,却过着马赛克的人生

    如果你是苹果产品的爱好者,那么一定对视网膜屏幕(Retina)不陌生。 视网膜屏幕是指分辨率超过人眼识别极限的高分...

  • 1px

    CSS中1px分割线处理移动web开发之像素和DPR详解7种方法解决移动端Retina屏幕1px边框问题IOS基础...

  • web常用库

    js retina.js 实现retina屏幕图片自动替换 slick.js jQuery插件,实现各种轮播图 w...

  • 响应式设计

    1.1px问题 在retina显示屏中,1px像素实际对应2px像素,为了实现真正的1px粗细,我们需要使用0.5...

  • css解决retina屏1像素边框变粗的问题

    苹果的retina屏幕(视网膜屏幕)为什么看起来那么爽?因为它的分辨率极高,可以达到眼睛几乎看不出来的地步。举个例...

网友评论

    本文标题:Retina(视网膜)屏幕的1px如何实现

    本文链接:https://www.haomeiwen.com/subject/mqhsdrtx.html