使用 rem 实现 适配各种屏幕布局

年数已久!!!技术更新太快,谨慎观看,不过作为了解一下思路还是可以的

在此呢,我只大略的谈一下在研究了px,em,rem,和手淘的做法之后,我所采用的做法及硬性规则;

我就不再过多的将上面三种单位的区别及好处了,因为这类文章太多了,自己百度去吧,只谈实际做法!

首先在CSS里要给html一个默认的font-size;毕竟你得知道,万一哪部分加载除了问题咋办,所以我设置font-size:10px;(好计算一点)

然后就是JS,这部分JS是用来动态的设置html的font-size;

(function (doc, win) {
/*初始化 默认宽度、字体、最小最大比例*/
var init_w = 640,
init_fs = 10,
max_scale = 1,
min_scale = 0.5;
var docEl = doc.documentElement,
resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize',
recalc = function () {
var clientWidth = docEl.clientWidth;
if (!clientWidth) return;
var percentage = clientWidth / init_w;
percentage = percentage > max_scale?max_scale: percentage <min_scale?min_scale: percentage ;

docEl.style.fontSize = init_fs * percentage + 'px';
};
if (!doc.addEventListener) return;
win.addEventListener(resizeEvt, recalc, false);
doc.addEventListener('DOMContentLoaded', recalc, false);
})(document, window);

然后就是根据设计稿怎么制作页面了,先拿到640的设计稿(我们这边常用的),如果不是得话可以把图像大小改成640的;

然后比如一个DIV,设计稿上的大小为200*100;那么在CSS里面写法就是,width=20rem;height=10rem;(然后如果要兼容IE低版本的话,还是乖乖的用上px吧)

如果一些margin,padding也同理,当然可能有些特殊情况需要用到固定高度或者其它情况也可以用固定像素;

另外一种不用JS的方法,就是利用css3中的媒体查询来根据不同的屏幕大小来写定html的font-size;

html {
font-size : 10px;
}
@media only screen and (min- 401px){
html {
font-size: 6px !important;
}
}
@media only screen and (min- 428px){
html {
font-size: 6.5px !important;
}
}
@media only screen and (min- 481px){
html {
font-size: 7.25px !important;
}
}
@media only screen and (min- 569px){
html {
font-size: 8.625px !important;
}
}
@media only screen and (min- 641px){
html {
font-size: 10px !important;
}
}

不过说实话,我喜欢用JS来控制html的font-size;因为CSS的做法太死板了,还要自己先去算好(多累呀,对吧);

后续可能会修改,完善,不足之处还请包涵。

仅作为个人笔记以供后期翻阅。

原文地址:https://www.cnblogs.com/AlexBlogs/p/5025372.html