移动端1px像素问题

作者: 乔儿q | 来源:发表于2019-03-25 16:32 被阅读247次

一、问题

写css的样式时候,设置元素的边框为1px, 但在移动端上看起来却像是2px

二、为什么会有1px问题?

1.要处理这个问题,得先知道设备的物理像素(设备像素)逻辑像素(css像素)

物理像素:

移动设备出厂时,不同设备自带的不同像素

逻辑像素:

css中记录的像素

UI设计师要求的1px是指设备的物理像素1px,而CSS里记录的像素是逻辑像素,它们之间存在一个比例关系:设备像素比dpr(devicePixelRatio) = 设备像素 / CSS像素
dpr通常可以用 javascript 中的 window.devicePixelRatio 来获取,也可以用媒体查询的 -webkit-min-device-pixel-ratio 来获取。当然,比例多少与设备相关。
在手机上border无法达到我们想要的效果。这是因为 devicePixelRatio 特性导致,iPhone的 devicePixelRatio==2,而 border-width: 1px; 描述的是设备独立像素,所以,border被放大到物理像素2px显示,在iPhone上就显得较粗。

三、解决方案

利用选择器:before或:after和transfrom

原理:

把原先元素的border去掉,用:before或:after重做border,并用transfrom中的scale缩小一半,原先的元素相对定位,新做的border绝对定位

<style>
//单条border样式设置:
.box{
  border:none; 
  position: relative;
}
.box:bofore{   
     content: '';
     position: absolute; 
     bottom: 0; 
     background: #000; 
     width: 100%; 
     height: 1px;
     transform: scaleY(0.5); 
     transform-origin: 0 0;     
}

//四条border样式设置:
    .box{
        border:none;
         position: relative;
     }
    .box:before{
        content: '';
        width: 1200px;
        height: 1200px;
        border: 1px solid red;
        transform: scale(0.5);
        position: absolute;
        top: 0;
        left: 0;
        transform-origin: top left;
    }
</style> 
<body>
    <div class="box">box-shadow-1px</div>
</body>
<script>
    //结合js来代码来判断是否是Retina屏

  
    if(window.devicePixelRatio && devicePixelRatio >= 2){
         document.querySelector('div').className = 'box';
    }
</script>




相关文章

  • 面试题

    @1: 移动端1px问题,为什么会有?如何解决? 物理像素:移动设备出厂时,不同设备自带的不同像素,也称硬件像素...

  • 手机1px(下划线、上划线、边框)

    手机一像素问题 工作中我们会遇到很多移动端边框1像素的需求,这里为大家准备一份1像素的样式整理。 移动端1px变粗...

  • 1px

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

  • vuejs-h5 1px 像素高分辨率像素问题以及 平滑滚动到顶

    前言 一,vue开发移动端1px像素问题 使用伪类元素解决 transform:scaleY(0.5) 在项目...

  • 前端遇到的那些技术难点及性能优化之css篇

    移动端兼容 css篇 移动端的 1px 问题描述:1px 的边框。在高清屏下,移动端的 1px 会很粗。 产生原因...

  • 1像素边框问题

    0x001 基本问题 在移动端开发时CSS的像素显示是逻辑像素而并不是真实的物理像素,因此美工给出的图片的1px,...

  • 前端知识体系7.移动端/多平台

    本文目录: 1.说一下viewport的常见属性 2.说一下物理像素、逻辑像素、DPR、1px边框问题 3.移动端...

  • 移动端1px像素问题

    一、问题 写css的样式时候,设置元素的边框为1px, 但在移动端上看起来却像是2px 二、为什么会有1px问题?...

  • 移动端 1px

    因为移动端设备 dpr (物理像素)的缘故,导致 1px 在移动端会变成 2px 的情况,可以通过 伪类 + 缩放...

  • 移动端1像素的问题

    移动端1像素的问题 问题:一般在移动端,由于dpr(设备像素比)不为1,在PC端显示1像素的边框,在移动端其实显示...

网友评论

    本文标题:移动端1px像素问题

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