Html百分比设宽偏差大,前端开发之移动端适配详细讲解

适配问题

怎么适配iphone6

1px问题

为什么页面与设计稿会出现偏差?

dpr=设备像素/ css像素,只有dpr等于1的时候,实际效果和设计稿的尺寸比例才是1:1。

因为iPhone6的DPR(设备像素比)为2,设备像素为750,所以iPhone6的理想视口尺寸为375px。

因为设计稿是基于设备像素,页面是基于css像素的。css中的宽度是基于理想视口的(宽度375px),设计图上是基于设备宽度750px,所以尺寸不对。

怎么处理?

init-scale=0.5 。

缺陷:但是宽度不能自适应

⭐️rem大法

基于html标签的font-size设置的

手淘的做法:

把缩放尺寸设置成dpr的倒数。

读设备宽度,动态设置meta标签的 content属性中的maximun,minimum,user-scable值

body{

margin: 0;

padding: 0;

}

.box{

width: 2.66666667rem;

height: 2.66666667rem;

background: red;

}

var scale = 1 / window.devicePixelRatio;

document.querySelector('meta[name="viewport"]').setAttribute('content','width=device-width,initial-scale=' + scale + ', maximum-scale=' + scale + ', minimum-scale=' + scale + ', user-scalable=no');

document.documentElement.style.fontSize = document.documentElement.clientWidth / 10 + 'px';

网易的做法

现在的设计稿都是750px宽度(p6的宽),那要想实现 css样式:设计图=1:100 这种比较方便的折算方式,font-size就要设置成7.5px;

也就是说1rem = 7.5px

body{

margin: 0;

padding: 0;

}

.box{

width: 2rem;

height: 2rem;

background: red;

}

document.documentElement.style.fontSize = document.documentElement.clientWidth / 7.5 + 'px';

总结

rem是为了实现移动端自适应布局。通过在html元素下设置font-size定义。

另外,手淘的做法是通过判断设备的dpr,将缩放规模scale设置为dpr的倒数,再用js动态设置meta标签的content属性和font-size基准值的大小。

网易的做法是,禁用用户缩放,scale始终为1,将font-size设置为625%,即 1rem=100px。

1px问题

如何实现移动端的1px边框

方法一:transformY:scale(50%)

方法二:

border-width:0 0 2px 0;

border-image:url("xxx.png") 0 0 2 0 stretch // 图片地址 上下剪切 左右剪切 上下边宽 左右边宽 图片拉伸

vm/vh+rem大法

vm/vh是未来的趋势

rem方式弊端:需要动态计算根字体大小

做法:用vm/vh来计算根字体大小,剩下的自适应布局依旧按照rem的方法

⭐️关于vm/vh

1. 与%百分比的区别

vm/vh 是基于视窗的

%基于父元素

2. 使用场景

随着页面不同,文字图片缩小放大(适配页面)

3. 与rem的区别

vm/vh没有最大、最小宽大的限制(设备很小的时候,图文会缩得特别特别小……)

措施:

1.解决背景过小问题

body{

min-width:xxx px;

max-width: xxx px;

}

2.媒体查询限制根文字大小(解决文字过小问题)

html { font-size: ($vw_fontsize / ($vw_design / 2)) * 100vw; // 同时,通过Media Queries 限制根元素最大最小值 @media screen and (max-width: 320px) { font-size: 64px; } @media screen and (min-width: 540px) { font-size: 108px; } }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值