采用新的相对单位 rem 首先设置html的 font-size 为根大小. javascript
html{
font-size:1mm;
}
.titleheight{
height:10rem; //这里等于10mm
width:11rem; //这里等于11mm
}css
当
html{
font-size:2mm;
}html
.titleheight{
height:10rem; //这里等于20mm
width:11rem; //这里等于22mm
}前端
其它地方用rem作单位.java
html4 的浏览器时代, 一致都是用px来做为标准单位的.
自从有了手机之后, html的单位又变得混乱了起来. 自适应变的很是困难.
咱们公司 . 美工设计的宽度标准是750px
全部的手机移动页面所有按照 750px 设计出图.
在浏览器上若是按照750px 切图, 切好的图在窄屏手机上会出现各类, 换行. 变高.甚至变形的问题.
浏览效果彻底没法跟美工设计的效果相提并论.web
如何作到这种效果呢?浏览器
通常的百分比都是给宽度设置百分比. 高度 自动.或者定高.一个固定的数值.若是 高度也能够百分比话.就太好 了. 惋惜div 默认是没有高度的. 安全
rem 单位是相对 html 的font-size 来计算的.工具
若是html的 font-size = 10px
那么
1rem = 10px
2rem = 20px
同理750px = 75rem布局
若是html的 font-size = 12px
那么
1rem = 12px
2rem = 24px
同理 62.5rem = 750px
反过来说.
美工按照750px 设计的图. 到了675px的屏幕上.
尺寸就应该响应缩小到 9/10;
也就是说, 原来75rem的图片. 应该显示成 67.5rem 才对.
可是咱们不能每一个元素都根据界面宽度动态改尺寸长度.
根据rem的规则.咱们能够动态修改html 的 font-size 的大小.
原先750px 映射到10px 上, 每一个px 承载了 75 个px的宽度变化.
文字没法描述清楚,仍是上图吧.3张图.一看就清楚了.一图胜千文
因此写到这里大概也明白了.
若是屏幕尺寸变小了. html的font-size 也跟着变小. 那么你的图片也跟着等比例变小.
推理下去,有点使人吃惊. html的font-size 通常要 = 750px 了.
不过我目前的页面采用的是 html 的font-size = 10px;
font-size=750px 我还没试过.
10px很明显的缺点是梯度过高,平滑度不够好.
20px勉强能够接受
30px又很差算.
40px好像还能够接受,平滑度,和单位换算都还能够..
可是实际使用中最好用的仍是 1px = 1rem 而后用javascript 根据屏幕的宽度动态计算html 的font-size
采用rem方法布局页面的话
切图的时候要注意,
一. 要么文字和图片一块儿切成图片.
二. 要么,采用时下流行的表情字体..例如.Entypo字体
因此我在这里建议前端美工们,
一是.尽可能采用. 表情字体做为素材蓝本..(是尽可能,不是必定…)
二是.尽可能不要将图片和字体造成明显的对比.例如,明显的将图标和字体左右对齐.
三是.能单独用图片的地方尽可能只用图片.
四是.为了适应不一样宽度的手机. 请尽可能少出现左右布局. 多用上下布局.左右布局最多不能超过3列. 超过3列的,应该考虑把多的那一列放到内容里水平显示.
五是. 想不到了.
最后贴一下,css如何动态改变html的font-size
1 @media screen and (max-width:750px) 2 { 3 html{ 4 font-size:10mm; /*满屏按照10px来算,最好的写法是单位为 mm 毫米*/ 5 } 6 } 7 @media screen and (max-width:675px) 8 { 9 10 html{ 11 font-size:9mm; /*屏幕等于设计的 9/10, 标准尺寸也缩小到9/10 最好的写法是单位为 mm 毫米 */ 12 } 13 } 14 @media screen and (max-width:600px) 15 { 16 html{ 17 font-size:8mm;/*屏幕等于设计的 8/10, 标准尺寸也缩小到8/10 */ 18 } 19 } 20 @media screen and (max-width:525px) 21 { 22 html{ 23 font-size:7mm;/*屏幕等于设计的 7/10, 标准尺寸也缩小到7/10 */ 24 } 25 } 26 @media screen and (max-width:450px) 27 { 28 html{ 29 font-size:6mm; 30 } 31 } 32 @media screen and (max-width:375px) 33 { 34 html{ 35 font-size:5mm; 36 } 37 } 38 @media screen and (max-width:300px) 39 { 40 html{ 41 font-size:4mm; 42 } 43 } 44 45 46 .am-container { 47 -webkit-box-sizing: border-box; 48 box-sizing: border-box; 49 margin-left: auto; 50 margin-right: auto; 51 padding-left: 0rem; 52 padding-right: 0rem; 53 width: 100%; 54 max-width:75rem; 55 }
若是html font-size = 750px
1rem = 750px
因此,咱们在使用的时候.
美工出图750px, 咱们在代码里面得写成 1rem
美工出图75px, 咱们在代码里面得写成 0.1rem
问: 美工出图10px = 咱们的代码里面得写多少 rem?
估计要拿计算器了. 很差算.
因此为了计算方便. 建议仍是使用
font-size= 10px 或者
font-size=100px
这样咱们根据美工出图的宽度除以10 或者100就是对应的rem
为了平滑起见 html 的 font-size = 100px 最好.
并且网上看到有人说,大多数浏览器font-size的最小值为12px,因此只能用100了。嗯,为了安全起见100px 彷佛更合适.
最后在上另一个问题., 上面的方法只是解决了如何动态的适应不一样的宽度的设备.
可是如何适应不一样分辨率的设备呢?
一样的页面,在不一样分辨率的手机上. 显示效果是不同的.
例如: 下图.
指定分辨率会使得这种状况有所改善.
通过手动测试发现 . target-densitydpi=250 比较适合各种浏览器.
固然更好的办法是. 用js动态去建立viewport 这个标签.
可是这种改变分辨率的方法不太好.控制
不如直接把width=750,写死来的更直接.
以下代码
1 <meta name="viewport" content="width=750, initial-scale=1, maximum-scale=1, user-scalable=no">
3、为什么要更改为mm?
mm单位是实际的物理尺寸。这个单位是屏幕的物理尺寸。各类手机都进行过自动把1mm转换成对应的px。 由于屏幕质量不同。好的屏幕在1mm的地方能够放下10个像素。 差的屏幕1mm只能放3个像素。用放大镜看就会看出来。差的屏幕那个像素特别大。
用mm 单位做为基础单位。能够作到各类手机浏览器的可视尺寸98%一致。
再加上rem的等比缩放功能。 能够说基本上能解决常见的浏览器兼容问题。
不信你能够拿尺子量一下。 若是某款手机不支持mm。 确定是那款手机有问题。
下面的代码我没试过。 感受应该能够。
1 @media screen and (max-width:75mm) /*这里也要改为毫米吧。要不要?*/ 2 { 3 html{ 4 font-size:10mm; /*满屏按照10px来算,最好的写法是单位为 mm 毫米*/ 5 } 6 } 7 @media screen and (max-width:60mm) 8 { 9 html{ 10 font-size:8mm;/*屏幕等于设计的 8/10, 标准尺寸也缩小到8/10 */ 11 } 12 }