移动端适配方法:rem+vw

1.百分比设置:几乎不用

因为各种属性百分比参照物(自身/父元素/...需要去查文档)很难统计固定,所以不用百分比进行适配 

2.rem单位+动态html的font-size

使用rem,因为rem参考html的fz,只需要在不同的屏幕上设置不同的html的fz即可,其他地方全用rem

 rem的fz尺寸

媒体查询

编写js代码

// 1.获取html的元素
const htmlEl = document.documentElement
 
function setRemUnit() {
  // 2.获取html的宽度(视口的宽度)
  const htmlWidth = htmlEl.clientWidth
  // 3.根据宽度计算一个html的font-size的大小
  const htmlFontSize = htmlWidth / 10
  // 4.将font-size设置到html上
  htmlEl.style.fontSize = htmlFontSize + "px"
}
// 保证第一次进来时, 可以设置一次font-size
setRemUnit()
 
// 当屏幕尺寸发生变化时, 实时来修改html的font-size
window.addEventListener("resize", setRemUnit)

lib-flexible库

在github下载

原理与js函数相似,但是库函数添加了查询浏览器是否支持0.5px,不支持可以使用scale缩小

以及前进后退页面的适配

 很多页面的fz默认继承了html字体,如果750px的宽度,fz可能默认为75px,太大了,所以需要重新设置一个默认的fz大小

 

但是!!!!!!!

 rem的单位换算

 1.手动计算,帮助理解,实际不会用

2.less/scss函数

.pxToRem(@px) {
  result: 1rem * (@px / 37.5);
}
 
.box {
  width: .pxToRem(100)[result];
  height: .pxToRem(100)[result];
  background-color: orange;
}
 
p {
  font-size: .pxToRem(14)[result];
}

3.真实开发使用webpack打包,不需要思考em的换算,也不需要使用less/scss

 4.安装vs code插件

 默认1em=75px,是固定的,所以我们需要手动配置

在插件的设置的拓展配置里面,

 

3.vw单位

使用vw,1%的width,不需要动态设置html的fz,自动根据视口宽度改变

直接给html的fz设置vw

 html {
      font-size: 10vw;
    } 

 为什么大部分仍然是rem

1.历史遗留,很久之前开发的,rem可以支持正常使用,改为vw反而可能会出bug

2.vw永远相对于视口大小变化,如果屏幕大到一定极限,依然放大(一般使用vw不考虑)

但是rem可以设置媒体查询,手动设置极限情况下的最大/小值

vw的单位换算

如果写100/37.5 px,最好使用calc函数,否则可能无法正常计算

 方案四要手动设置打开vw,因为默认只有rem自动转换;打开后修改默认的视口大小

4.flex的弹性布局

flex布局,flex=1自动拉伸

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值