rem单位

rem单位

rem基础

px是固定单位,不同分辨率下效果不一样,导致网页布局出现偏差。

em是根据父元素来改变字大小

rem是根据根元素html来改变字体大小,只要改变了根元素的font-size就可以改变所有字体的大小。

1,

html{font-size:20px;}

body{width:6rem;}

此处1rem=20px

2,

html{font-size:62.5%;}

body{width:6rem;}

此处1rem=10px;因为默认1rem=16px;

10/16=62.5%

rem跟随分辨率而变化的方法

我们的目的是分辨率不同,字体大小也不同,即适应屏幕分辨率。那么怎样才可以让rem的大小随着分辨率而变化呢?

1,media query,这个不是通用性方法,根据常用的分辨率制定rem。

 1    html {font-size : 20px;}
 2     @media only screen and (min-width: 401px){
 3         html {font-size: 25px !important;}
 4     }
 5     @media only screen and (min-width: 428px){
 6         html {font-size: 26.75px !important;}
 7     }
 8     @media only screen and (min-width: 481px){
 9         html {font-size: 30px !important; }
10     }
11     @media only screen and (min-width: 569px){
12         html {font-size: 35px !important; }
13     }
14     @media only screen and (min-width: 641px){
15         html {font-size: 40px !important; }
16     }

2,js方法

 1 <script>
 2 (function (doc, win) {
 3           var docEl = doc.documentElement,
 4             resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize',
 5             recalc = function () {
 6               var clientWidth = docEl.clientWidth;
 7               if (!clientWidth) return;
 8              clientWidth=(clientWidth>640)?640:clientWidth;
 9               docEl.style.fontSize = 20 * (clientWidth / 320) + 'px';
10             };
11 
12           if (!doc.addEventListener) return;
13           win.addEventListener(resizeEvt, recalc, false);
14           doc.addEventListener('DOMContentLoaded', recalc, false);
15         })(document, window);
16 </script>

其他布局方法

1,流式布局

宽度用百分比;高度用px单位,即高度固定。大分辨率下变形。

当然可以让高度值为rem单位;宽度也要注意兼容性问题。

2,限定宽度

固定的320px,大分辨率下,两边留白。不提倡。

3,响应式

不了解

道听途说:直接从web page直接转换为web app。对大公司来说工作量大,维护难,中小企业可以使用,节约成本。

4,设置viewport,缩放

<meta name="viewport" content="width=320,maximum-scale=1.3,user-scalable=no" />

效率高,效果也不错。

posted @ 2016-04-17 10:49  宋英杰  阅读(404)  评论(0编辑  收藏  举报