1px边框线问

变粗原因

css中的1px并不等于移动设备的1px,因为不同的手机有不同的像素密度。在window对象中有一个devicePixelRatio属性,他可以反应css中的像素与设备的像素比。(devicePixelRatio = 物理像素 / 独立像素。)手机的精度越大,线越粗。

解决办法

媒体查询利用设备像素比缩放,设置小数像素
优点:简单,好理解
缺点:兼容性差,目前之余IOS8+才支持,在IOS7及其以下、安卓系统都是显示0px。

border1px(width = 1px,color = #ccc,style = solid,radius = 0)
  position relative
  &::after
    position absolute
    pointer-events none//边框遮盖问题
    left 0
    right 0
    bottom 0
    top 0

    z-index 999//防止被覆盖

    content ''

    border-width width
    border-color color
    border-style style
    border-radius radius

    width 200%
    height 200%

    @media (max--moz-device-pixel-ratio: 1.49),(-webkit-max-device-pixel-ratio: 1.49),(max-device-pixel-ratio: 1.49),(max-resolution: 143dpi),(max-resolution: 1.49dppx)
        height 100%
        border-radius radius
        transform scale(1)

    @media (min--moz-device-pixel-ratio: 1.5) and (max--moz-device-pixel-ratio: 2.49),(-webkit-min-device-pixel-ratio: 1.5) and (-webkit-max-device-pixel-ratio: 2.49),(min-device-pixel-ratio: 1.5) and (max-device-pixel-ratio: 49),(min-resolution: 144dpi) and (max-resolution:239dpi),(min-resolution:1.5dppx) and (max-resolution: 2.49dppx)
        width 200%
        height 200%
        border-radius radius*2
        transform scale(0.5)

    @media (min--moz-device-pixel-ratio: 2.5),(-webkit-min-device-pixel-ratio: 2.5),(min-device-pixel-ratio: 2.5),(min-resolution: 240dpi),(min-resolution: 2.5dppx)
        width 300%
        height 300%
        border-radius radius*3
        transform scale(0.3333333)

    transform-origin 0 0
posted @ 2021-05-03 19:22  柠檬!  阅读(50)  评论(0编辑  收藏  举报