最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 移动端1px实现和问题踩坑

    正文概述 掘金(random__)   2021-03-19   554

    效果

    要实现移动端上的一像素线,

    window.devicePixelRatio=物理像素 /CSS像素
    目前主流的屏幕DPR=2或者3。拿2倍屏来说,设备的物理像素要实现1像素,而DPR=2,
    所以css 像素只能是 0.5。
    一般设计稿是按照750来设计的,它上面的1px是以750来参照的,而我们写css样式是以设备375为参照的,所以我们应该写的0.5px

    先看看效果:

    Chrome浏览器PC

    移动端1px实现和问题踩坑

    移动端1px实现和问题踩坑

    Chrome浏览器移动端

    移动端1px实现和问题踩坑

    IE浏览器下,显示问题

    移动端1px实现和问题踩坑

    实现代码

    <div class="wrap">
        <div class="box1"></div>
        <div class="box2"></div>
        <div class="box3"></div>
        <div class="box4"></div>
        <div class="box5"></div>
        <div class="box6"></div>
    </div>
    

    1、0.5px

    .box1 {
        width: 0.5px;
        height: 100px;
        border-right: black 1px solid;
    }
    

    2、transform: scaleX(0.5);

    .box3 {
        width: 1px;
        height: 100px;
        position: relative;
    }
    
    .box3:after {
        content: '';
        position: absolute;
        width: 1px;
        width: 2px\0;
        height: 100%;
        top: 0;
        right: 0;
        -webkit-transform: scaleX(0.5);
        -moz-transform: scaleX(0.5);
        -o-transform: scaleX(0.5);
        transform: scaleX(0.5);
        -webkit-transform-origin: left top;
        /*设置旋转元素的基点位置*/
        -moz-transform-origin: left top;
        -o-transform-origin: left top;
        transform-origin: left top;
        background: black
    }
    

    3、利用0.5px的线图片

    .box4 {
        width: 1px;
        height: 100px;
        position: relative;
    }
    
    .box4:after {
        content: '';
        position: absolute;
        left: 0;
        width: 100px;
        height: 1px;
        background: url('../assets/imgs/问题&&解决/xian.png') 0 0 repeat-x;
        -webkit-transform: rotate(90deg);
        -moz-transform: rotate(90deg);
        -o-transform: rotate(90deg);
        transform: rotate(90deg);
    
        -webkit-transform-origin: left top;
        /*设置旋转元素的基点位置*/
        -moz-transform-origin: left top;
        -o-transform-origin: left top;
        transform-origin: left top;
    }
    

    问题

    1.直接写0.5px不起作用 2.利用 transform: scaleX(0.5)实现在IE浏览器上出现显示问题

    如图:第三根线,显示不出来

    移动端1px实现和问题踩坑

    解决 transform方法兼容性

    1.媒体查询min-device-pixel-ratio

    用min-device-pixel-ratio判断,如果设备像素比例大于2,再设置transform: scaleX(0.5);

    .box5 {
        width: 1px;
        height: 100px;
        position: relative;
    }
    
    .box5:after {
        content: '';
        position: absolute;
        width: 1px;
        height: 100%;
        top: 0;
        right: 0;
        background: black
    }
    
    @media only screen and (-webkit-min-device-pixel-ratio: 2),
    (min-device-pixel-ratio: 2) {
        .box5:after {
            content: '';
            position: absolute;
            width: 1px;
            height: 100%;
            top: 0;
            right: 0;
            -webkit-transform: scaleX(0.5);
            -moz-transform: scaleX(0.5);
            -o-transform: scaleX(0.5);
            transform: scaleX(0.5);
            -webkit-transform-origin: left top;
            /*设置旋转元素的基点位置*/
            -moz-transform-origin: left top;
            -o-transform-origin: left top;
            transform-origin: left top;
            background: black
        }
    }
    

    2.媒体查询max-width

    用max-width判断,如果小于800px,则判定为移动端,再设置transform: scaleX(0.5);

    .box6 {
        width: 1px;
        height: 100px;
        position: relative;
    }
    
    .box6:after {
        content: '';
        position: absolute;
        width: 1px;
        height: 100%;
        top: 0;
        right: 0;
        background: black
    }
    
    @media screen and (max-width: 800px) {
        .box6:after {
            content: '';
            position: absolute;
            width: 1px;
            height: 100%;
            top: 0;
            right: 0;
            -webkit-transform: scaleX(0.5);
            -moz-transform: scaleX(0.5);
            -o-transform: scaleX(0.5);
            transform: scaleX(0.5);
            -webkit-transform-origin: left top;
            /*设置旋转元素的基点位置*/
            -moz-transform-origin: left top;
            -o-transform-origin: left top;
            transform-origin: left top;
            background: black
        }
    }
    

    拓展

    其他移动端1px解决方案

    • box-shadow
    • 设置viewport的scale值

    起源地下载网 » 移动端1px实现和问题踩坑

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元