美文网首页
1px像素问题

1px像素问题

作者: sdcV | 来源:发表于2017-07-28 16:23 被阅读38次
    移动端1px变粗的原因

    为什么移动端css里面写了1px, 实际看起来比1px粗. 其实原因很好理解:这2个’px’的含义是不一样的. 移动端html的header总会有一句

      <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
    

    这句话定义了本页面的viewport的宽度为设备宽度,初始缩放值和最大缩放值都为1,并禁止了用户缩放. viewport通俗的讲是浏览器上可用来显示页面的区域, 这个区域是可能比屏幕大的.

    第一种方法:after与transform

    viewport的设置和屏幕物理分辨率是按比例而不是相同的. 移动端window对象有个devicePixelRatio属性, 它表示设备物理像素和css像素的比例, 在retina屏的iphone手机上, 这个值为2或3, css里写的1px长度映射到物理像素上就有2px或3px那么长.

    <div class="border-1px"></div>
    <style type="text/scss">
    .border-1px {
        position: relative;
        &:after{
            display: block;
            position: absolute;
            left: 0;
            bottom: 0;
            width: 100%;
            border-top: 1px solid #000;
            content: '';
        }
    }
    @media (-webkit-min-device-pixel-ratio: 1.5),(min-device-pixel-ratio: 1.5) {
        .border-1px{
            &::after{
                -webkit-transform: scaleY(0.7);
                transform: scaleY(0.7);
            }
         }
    }
    @media (-webkit-min-device-pixel-ratio: 2),(min-device-pixel-ratio: 2) {
        .border-1px{
            &::after{
                -webkit-transform: scaleY(0.5);
                transform: scaleY(0.5);
            }
        }
    }
    </style>
    
    第二种方法 flexible.js

    相关文章

      网友评论

          本文标题:1px像素问题

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