下面的代码一是我根据rem的使用经验,自己写的一个rem.js,发现很好用,能适用所有移动端h5页面的自适应需求:

代码一:

window.onload = function(){
/*720代表设计师给的设计稿的宽度,你的设计稿是多少,就写多少;100代表换算比例,这里写100是
为了以后好算,比如,你测量的一个宽度是100px,就可以写为1rem,以及1px=0.01rem等等*/
getRem(720,100)
};
window.onresize = function(){
getRem(720,100)
};
function getRem(pwidth,prem){
var html = document.getElementsByTagName("html")[0];
var oWidth = document.body.clientWidth || document.documentElement.clientWidth;
html.style.fontSize = oWidth/pwidth*prem + "px";
}

下面的代码二,是我在小米网上看到的移动端h5页面自适应代码,效果跟我的一样,也可以使用:

代码二: 小米官网的写法

!function(n){
var e=n.document,
t=e.documentElement,
i=720,
d=i/100,
o="orientationchange"in n?"orientationchange":"resize",
a=function(){
var n=t.clientWidth||320;n>720&&(n=720);
t.style.fontSize=n/d+"px"
};
e.addEventListener&&(n.addEventListener(o,a,!1),e.addEventListener("DOMContentLoaded",a,!1))
}(window);

看这两个函数,把这些代码放到js里面,规则就是,调用函数,放两个参数,第一个参数,是设计稿的宽度,第二个参数是px与rem的转换比例,通常会写100(因为好算);当然了,要把这段js代码最好封装在一个单独的js文件里,并且放在所有的css文件引入之前加载。
实际应用起来就是,#box1{ height:100px;}而调用了rem就是#box1{ height:1rem;}以此类推。 100px = 1rem . 1px = 0.01rem。在页面中,凡是跟尺寸有关的padding、margin、width、height等等,都可以用rem来写单位,这样当不同分辨率的手机在看同一个页面时,效果几乎是一样的。

下面附图,看效果:

代码:

<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
<link rel="stylesheet" href="../css/reset-min.css"/>
<script>
window.onload = function(){
getRem(720,100)
};
window.onresize = function(){
getRem(720,100)
};
function getRem(pwidth,prem){
var html = document.getElementsByTagName("html")[0];
var oWidth = document.body.clientWidth || document.documentElement.clientWidth;
html.style.fontSize = oWidth/pwidth*prem + "px";
}
/*
//小米官网的写法
!function(n){
var e=n.document,
t=e.documentElement,
i=720,
d=i/100,
o="orientationchange"in n?"orientationchange":"resize",
a=function(){
var n=t.clientWidth||320;n>720&&(n=720);
t.style.fontSize=n/d+"px"
};
e.addEventListener&&(n.addEventListener(o,a,!1),e.addEventListener("DOMContentLoaded",a,!1))
}(window);*/
</script>
<style>
.wrap{position:absolute;top:0;left:0;bottom:0;right:0;background:#fefefe;}
.title{width:100%;height:0.98rem;line-height:0.98rem;color:#fff;background:#e02222;text-align: center;font-size:0.32rem;}
</style>
</head>
<body>
<div class="wrap">
<div class="title">首页</div>
</div>
</body> </html>

这里的demo只对字体大小、高度、行高做了rem换算,其他的没做,只是给大家看一个效果。就到这了,希望点赞哦!

原文地址:https://segmentfault.com/a/1190000008721148

最新文章

  1. 如何扩展 Visual Studio 编辑器
  2. MVVM 开发的几种模式讨论(WPF)
  3. c++ 类的静态变量
  4. git项目开发版本控制实践
  5. Codeforces 271 Div 2 B. Worms
  6. 关于新中新二代身份证读卡器DKQ-A16D的一些问题
  7. ccc 单点触控
  8. 关于jQuery的一些实用代码
  9. Jmeter java.lang.OutOfMemoryError: GC overhead limit exceeded
  10. (转)[老老实实学WCF] 第二篇 配置WCF
  11. Spring实战——Profile
  12. Python数据分析Pandas库之熊猫(10分钟二)
  13. 包建强的培训课程(16):Android新技术入门和提高
  14. 【转】【Linux】Linux下统计当前文件夹下的文件个数、目录个数
  15. Hexo+Github 搭建属于自己的博客(Mac下安装 其他操作系统大同小异)
  16. oracle查询语句查询增加一列内容
  17. sqlserver查询区分大小写
  18. ROS多线程订阅消息
  19. MPEG-4 压缩编码标准
  20. arping

热门文章

  1. 【九章算法免费讲座第一期】转专业找CS工作的“打狗棒法”
  2. ubuntu下eclipse连接mysql
  3. LeetCode208:Implement Trie (Prefix Tree)
  4. oc51--循环retain
  5. Codesys——常用快捷键列表
  6. 使用poi读取word2007(.docx)中的复杂表格
  7. hdu1704——floyd
  8. PCB MS SQL表值函数与CLR 表值函数 (例:字符串分割转表)
  9. Drainage Ditches(网络流(EK算法))
  10. mybatis+oracle实现一对多,多对一查询