1.在页面头部加入如下的声明:

<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0">

viewport = 视口(设备屏幕)
content = 内容
device-width = 设备宽度
initial-scale = 初始-比例
minimum-scale = 最小-比例
maximum-scale = 最大-比例
user-scalable=yes 允许用户缩放网页
media = 媒体
query = 查询
<meta name="MobileOptimized" content="320" />(旧iphone)以320px宽度渲染页面

样式:@media screen and (max-width: 500px) {body { background-color: black;}}//屏幕宽度不超过500px时,背景设置为黑色。

max-width,min-width:显示区域的最大/小宽度,横屏时会变化;max-device-width,min-device-width:手机的最大/小宽度,横屏时不会变化;

动态加载样式表:<link rel="stylesheet" media="(max-width: 800px)" href="example.css" />//屏幕宽度不超过800px时,引用该样式表。

2.字体缩放 em/rem

em的特点:em的值并不是固定的;em始终会继承父级元素的字体大小。如果父级元素font-size:20px;子级font-size:2em;那么子级的字号就是 2*20px=40px;继承的最终标签是body标签。

em的问题:多层嵌套的布局,每层的font-size都继承其父级,字体会越来越小或越来越大。

rem特点:使用rem为元素设定字体大小时,仍然是相对大小,但相对的只是HTML根元素(就是<html>标签)。可以避免字体大小逐层复合的连锁反应,不至于层级越多字体越小/越大。

我们想实现手机端自适应,就是可以让页面的元素字体、间距、宽高等属性的属性值可以随着手机屏幕尺寸的变化而变化,

利用Js来动态的设置rem并实现移动端的自适应,Js代码如下:

//获取html元素
var html = document.getElementsByTagName('html')[0];
//屏幕的宽度(兼容处理)
var w = document.documentElement.clientWidth || document.body.clientWidth;
//750这个数字是根据你的设计图的实际大小来的,所以值具体根据设计图的大小
html.style.fontSize = w / 750 + "px";

以上代码实现了利用Js获取设备屏幕的宽度,并根据屏幕的宽度动态改变根元素html的font-siz属性的作用。比如说,对于iphone6而言,屏幕尺寸为750,那么在iPhone6下html的font-size为1px,所以1rem = 1px;对于iPhone5而言,屏幕尺寸为640,那么在iPhone5下html的font-size为640/750 = 0.85333px,所以1rem = 0.85333px。这样的话即使我们对一个元素设置同样的大小和单位,也会在不同的设备下显示不同的大小。比如说div{width:100rem},在iPhone6下它的宽度将等于100px,而在iPhone5下它的宽度等于100 * 0.85333 = 85.333px。这样我们就真正实现了移动端的自适应!

http://www.cnblogs.com/gaohuijiao/p/6200538.html

http://www.cnblogs.com/vajoy/p/3730014.html

http://www.cnblogs.com/vajoy/p/3903591.html

posted on 2018-05-17 10:55  邢帅杰  阅读(185)  评论(0编辑  收藏  举报