当前位置: 首页 > news >正文

使用 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-width: 401px){
html {
font-size: 6px !important;
}
}
@media only screen and (min-width: 428px){
html {
font-size: 6.5px !important;
}
}
@media only screen and (min-width: 481px){
html {
font-size: 7.25px !important;
}
}
@media only screen and (min-width: 569px){
html {
font-size: 8.625px !important;
}
}
@media only screen and (min-width: 641px){
html {
font-size: 10px !important;
}
}

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

 

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

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

转载于:https://www.cnblogs.com/AlexBlogs/p/5025372.html


http://www.taodudu.cc/news/show-854174.html

相关文章:

  • 设计模式之 接口分离原则
  • java中简单工厂模式,工厂方法模式和抽象工厂模式的区别和联系?
  • 2.3 应用集成技术
  • 【Redis7】10大数据类型之HyperLogLog类型
  • 15 华三华为链路聚合综述
  • elasticsearch一些使用记录
  • 设计模式Adapter模式的五分钟
  • oracle的SCN和Checkpoint_Change#的关系
  • A problem while linking c++ to python
  • 几大基础算法
  • POPTEST学员就业面试题目!!!!!
  • 【自定义控件】自定义属性
  • 我的Git使用-资料查询,名博笔记
  • firefox-Developer开发者站点——关于Object.create()新方法的介绍
  • SharePoint 使用脚本为表单绑定事件
  • 解决Cannot change version of project facet Dynamic Web M
  • Github博客地址
  • c language compile process.
  • 阅读总结:如何在生产中成功运用Docker
  • [搜索]Trie树的实现
  • 老李分享:接口测试之jmeter
  • maven远程发布jar
  • GPRS模块AT呼叫控制命令
  • hadoop datanode启动失败
  • CentOS6.5下用yum安装 git .
  • 读博文学Android
  • javaWEB学习之filter
  • mysql字符集调整总结
  • C#ListBox对Item进行重绘,包括颜色
  • Android应用Activity、Dialog、PopWindow、Toast窗体加入机制及源代码分析
  • common_test使用注意事项
  • [转]如何写出不可维护的服务端程序
  • ubuntu14.04中 gedit 凝视能显示中文,而source insight中显示为乱码的解决的方法
  • 第四章 连接
  • eclipse插件安装,万能方法
  • freebsd从安装到想要的状态配置