资讯专栏INFORMATION COLUMN

移动端border:1px问题解决方案

explorer_ddf / 2089人阅读

摘要:问题描述为了适配各种屏幕,我们写代码时一般使用设备独立像素来对页面进行布局。对此有如下解决方案这种方式可以满足各种场景。

问题描述:

为了适配各种屏幕,我们写代码时一般使用设备独立像素来对页面进行布局。
而在设备像素比大于 1的屏幕上,我们写的 1px实际上是被多个物理像素渲染,这就会出现 1px在有些屏幕上看起来很粗的现象。

对此有如下解决方案:

@mixin border-1px($color, $direction) {
  position: relative;

  &::before {
    content: "";
    position: absolute;
    z-index: 1;

    @if $direction==all {
      left: 0;
      top: 0;
      border: 1px solid $color;
      box-sizing: border-box;
      transform-origin: left top;
    }

    @else {
      background-color: $color;

      @if $direction==top {
        left: 0;
        top: 0;
        width: 100%;
        height: 1px;
      }

      @if $direction==right {
        right: 0;
        top: 0;
        width: 1px;
        height: 100%;
      }

      @if $direction==bottom {
        left: 0;
        bottom: 0;
        width: 100%;
        height: 1px;
      }

      @if $direction==left {
        left: 0;
        top: 0;
        width: 1px;
        height: 100%;
      }
    }
  }
}

@each $direction in all,
top,
right,
bottom,
left {
  @for $i from 1 to 10 {
    $scale: 1 / $i;

    @media only screen and (-webkit-min-device-pixel-ratio:$i) {
      .border-1px-#{$direction}::before {
        @if $direction==all {
          width: $i * 100%;
          height: $i * 100%;
          transform: scale($scale);
        }

        @if $direction==top {
          transform: scaleY($scale);
        }

        @if $direction==bottom {
          transform: scaleY($scale);
        }

        @if $direction==right {
          transform: scaleX($scale);
        }

        @if $direction==left {
          transform: scaleX($scale);
        }
      }
    }
  }
}

这种方式可以满足各种场景。

使用方式:

第一步:@include border-1px(blue, all);引入由mixin定义的代码块(创建伪类 模拟border)
第二步:

添加border-1px-#{$direction}类名(缩放尺寸)

*注:

为何没有直接对border-width直接操作 是因为有部分机型不支持0.5px这样的值 会被当成0来处理 故用缩放来实现。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/114940.html

相关文章

  • 移动border1px问题解决方案

    摘要:问题描述为了适配各种屏幕,我们写代码时一般使用设备独立像素来对页面进行布局。对此有如下解决方案这种方式可以满足各种场景。 问题描述: 为了适配各种屏幕,我们写代码时一般使用设备独立像素来对页面进行布局。而在设备像素比大于 1的屏幕上,我们写的 1px实际上是被多个物理像素渲染,这就会出现 1px在有些屏幕上看起来很粗的现象。 对此有如下解决方案: @mixin border-1px($...

    ethernet 评论0 收藏0
  • 移动H5页面中1px边框的几种解决方法

    问题提出 这是一个比较老的问题了,我第一次注意到的时候,是UI设计师来找我麻烦,emmm那时候我才初入前端职场,啥也不懂啊啊啊啊啊,情形是这样的:设计师拿着手机过来:这些边框都粗了啊,我的设计稿上是1px的我:????我写的是1px呀,不信你看。(说着拿出了css代码设计师:不对啊我眼睛看来这个边框比我设计稿上粗很多,看起来好奇怪(emmm果然像素眼我:那我把它改成0.5px你看看(边说边改了代码...

    ytwman 评论0 收藏0
  • 移动H5页面中1px边框的几种解决方法

    问题提出 这是一个比较老的问题了,我第一次注意到的时候,是UI设计师来找我麻烦,emmm那时候我才初入前端职场,啥也不懂啊啊啊啊啊,情形是这样的:设计师拿着手机过来:这些边框都粗了啊,我的设计稿上是1px的我:????我写的是1px呀,不信你看。(说着拿出了css代码设计师:不对啊我眼睛看来这个边框比我设计稿上粗很多,看起来好奇怪(emmm果然像素眼我:那我把它改成0.5px你看看(边说边改了代码...

    enda 评论0 收藏0
  • 移动H5页面中1px边框的几种解决方法

    问题提出 这是一个比较老的问题了,我第一次注意到的时候,是UI设计师来找我麻烦,emmm那时候我才初入前端职场,啥也不懂啊啊啊啊啊,情形是这样的:设计师拿着手机过来:这些边框都粗了啊,我的设计稿上是1px的我:????我写的是1px呀,不信你看。(说着拿出了css代码设计师:不对啊我眼睛看来这个边框比我设计稿上粗很多,看起来好奇怪(emmm果然像素眼我:那我把它改成0.5px你看看(边说边改了代码...

    shengguo 评论0 收藏0
  • 关于移动 1px 像素问题

    摘要:移动端变粗的原因移动端的总会有一句这句话定义了本页面的的宽度为设备宽度初始缩放值和最大缩放值都为并禁止了用户缩放通俗的讲是浏览器上可用来显示页面的区域这个区域是可能比屏幕大的,的设置和屏幕物理分辨率是按比例而不是相同的移动端对象有个 移动端1px变粗的原因 移动端html的header总会有一句这句话定义了本页面的viewport的宽度为设备宽度,初始缩放值和最大缩放值都为1,并禁止了...

    alogy 评论0 收藏0

发表评论

0条评论

explorer_ddf

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<