做了一个页面,其中有个问题是要把body的背景全部填充为一张图片.用bootstarp框架兼容手机端
使用的是下列这种方法:
body{ background: url("public/img/bg/dlbg.jpg") center no-repeat fixed;; background-size:cover; }
但是在手机上打开的时候发现页面只能打开一部分,下边另一部分被不显示了
后来发现,是主body的高度不够造成的,如果使用100%的话,参考的是父级标签的高度,而body已经没有父级标签.所以就使用
vh 这个单位去计算 ,它计算的是显示的高度,按照屏幕显示高度的百分比去指定高度, 这样就把body的高度改变成我们需要的高度,
body{ background: url("public/img/bg/dlbg.jpg") center no-repeat fixed;; background-size:cover; height: 100vh; }
以下是CSS3中的尺寸单位:
px:绝对单位,页面按精确像素展示
em:相对单位,基准点为父节点字体的大小,如果自身定义了font-size按自身来计算(浏览器默认字体是16px),整个页面内1em不是一个固定的值。
rem:相对单位,可理解为”root em”, 相对根节点html的字体大小来计算,CSS3新加属性,chrome/firefox/IE9+支持。
(另外需注意chrome强制最小字体为12号,即使设置成 10px 最终都会显示成 12px,当把html的font-size设置成10px,子节点rem的计算还是以12px为基准,所以网上很多文章提到的将html的font-size设为10方便计算不是那么可取)。
rem在移动端应用可参考淘宝的页面http://m.taobao.com (html的font-size通过动态计算获取)
页面基准320px(20px),html font-size值的计算:
- var ele=document.getElementsByTagName("html")[0],
- size=document.body.clientWidth/320*20;
- ele.style.fontSize=size+"px"
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no" />
vh: viewpoint height,视窗高度,1vh等于视窗高度的1%。
vmin: vw和vh中较小的那个。
vmax: vw和vh中较大的那个。
vw, vh, vmin, vmax:IE9+局部支持,chrome/firefox/safari/opera支持,ios safari 8+支持,android browser4.4+支持,chrome for android39支持
%:百分比
in:寸
cm:厘米
mm:毫米
pt:point,大约1/72寸
pc:pica,大约6pt,1/6寸
ch:以节点所使用字体中的“0”字符为基准,找不到时为0.5em(ie10+,chrome31+,safair7.1+,opera26+,ios safari 7.1+,android browser4.4+支持)