【移动端】rem+sass适配所有移动端分辨率

众所周知,现在PC电脑和手机的分辨率是越来越多,适配也就成了需要前端这个职业一个原因,具体有那些主流的可以看下面这这篇文章:
PC-移动适配

CSS单位

说到适配,我们就想到CSS的单位:px,em,rem,vw,vh,vmin,vmax以及不常用到的ex,ch等

  • px : 我们最基础的单位(像素)
  • em : 相对于当前父节点字体的大小 ---- 1em = 父节点字体大小
  • rem: 相对于当前根节点字体的大小 ---- 1rem = 根(html)节点字体大小
  • vw: 当前视窗宽度 ---- 1vw = 1%视窗宽度
  • vh: 可以理解成当前一个屏幕高度(一页高度) ---- 1vh = 1%视窗宽度
  • vmin: vw和vh中较小的那个
  • vmax: vw和vh中较大的那个

rem适配

这篇文章运用的是rem,也是当前适配最流行用的最多的单位。
创建一个reset.js来控制字体适配屏幕大小,这里我是以iphone 6为标准

(function flexible (window, document) {
  var docEl = document.documentElement    	//获取文档根节点
  var dpr = window.devicePixelRatio || 1     // 获取当前手机dpr值
  
  //设置1rem = viewWidth / 10
  function setRemUnit () {
    var rem = docEl.clientWidth / 10					// 当前视宽 / 10
    docEl.style.fontSize = rem + 'px'				   // 重置根节点字体大小
  }

  setRemUnit()

  // 在页面上重置rem单元调整大小
  window.addEventListener('resize', setRemUnit)				//绑定resize事件
  window.addEventListener('pageshow', function (e) { 		//页面进入的触发,pageshow事件在onload之后
    if (e.persisted) {
      setRemUnit()
    }
  })

  // 检测0.5px支持
  if (dpr >= 2) {
    var fakeBody = document.createElement('body')
    var testElement = document.createElement('div')
    testElement.style.border = '.5px solid transparent'
    fakeBody.appendChild(testElement)
    docEl.appendChild(fakeBody)
    if (testElement.offsetHeight === 1) {
      docEl.classList.add('hairlines')
    }
    docEl.removeChild(fakeBody)
  }
}(window, document))

SASS(css预处理)

在sass文件中写一个函数来控制 适配我们的设计稿

@function set($n) {
  @return ($n / 2) / 37.5+rem;
} 

因为设计稿是按照750*1334所以我要除以2,这样设计稿标注多少,就可以直接set(xx)就行了。

至此就可以实现适配所有移动端了,ipad的也不例外。如果有更好的适配方法,请传授给小弟我

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值