rem结合scss解决移动端自适应大小

原因 
我们眼中看到的屏幕是由一个一个物理像素组成的,而我们css使用的是逻辑像素,也可以成为虚拟像素。在我们呈现结果的终端,它们的像素比可能都不一样,这时候我们要采用设备的像素比(DPR),它体现了物理像素和逻辑像素之间的关系,计算公式如下所示: 
DPR = 物理像素/逻辑像素 
所以我们可以知道为啥我们设置的都是12px,14px,为啥显示字体大小不一样。 
rem介绍 
rem 是相对于根部字体的大小,我们一般默认为 16px。一般我们使用 rem 方案解决移动端适配问题。 
解决方案1 
我们可以在css通关-webkit-device-pixel-ratio,-webkit-min-device-pixel-ratio和 -webkit-max-device-pixel-ratio进行媒体查询,对于不同的DPR来进行相应的设置 
就比如1px像素问题,我们可以通过这个来找到一个很好的解决方案

@media (-webkit-min-device-pixel-ratio: 1.5),(min-device-pixel-ratio: 1.5){
  .border {
    &::after {
      -webkit-transform: scaleY(0.7);
      transform: scaleY(0.7);
    }
  }
}
@media (-webkit-min-device-pixel-ratio: 2),(min-device-pixel-ratio: 2) {
  .border {
    &::after {
      -webkit-transform: scaleY(0.5);
      transform: scaleY(0.5);
    }
  }
}

解决方案2 
1.js部分


function resize () {
        if (document.documentElement.clientWidth >= 600) {
          document.documentElement.style.fontSize = '30px'
          return
        }
        document.documentElement.style.fontSize = document.documentElement.clientWidth / 20 + 'px'
      }
      resize()
      window.onresize = resize

2.单位转换

/**单位转换
@param {int} $px - 设计图上的 px 大小
@returns {rem} - 转换后的 rem 值
 */
@function r($px) {
  @return $px / 18.75 + rem;
}
或者
@function j($px, $base-font-size: 75px) {
  @if (unitless($px)) {
    @return j($px + 0px);
  } @else if (unit($px) == rem) {
    @return $px;
  }
  @return ($px / $base-font-size) * 1rem;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值