移动端常见布局:javascript
1.流式布局html
高度固定,宽度自适应java
2.响应式布局git
可以用一套代码适应不一样尺寸屏幕github
3.rem布局布局
宽高自适应,能实现整个页面像一张图片同样缩放且不失真的效果。字体
rem布局:flex
简单实例:ui
1.em布局spa
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> <style> div { font-size: 100px; width: 4em; /* 400px */ height: 4em; /* 400px */ background-color: pink; } </style> </head> <body> <div>我是400*400的盒子</div> </body> </html>
效果如图:div内字体大小为100px
2.rem布局
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> <style> html { font-size: 100px; } div { font-size: 16px; width: 4rem; /* 400px */ height: 4rem; /* 400px */ background-color: pink; } </style> </head> <body> <div>我是400*400的盒子</div> </body> </html>
效果如图:div内字体大小为16px
rem布局实现自适应:
1.配合媒体查询
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <title>Title</title> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> <style> /* 一个盒子, 在 750 屏幕上显示 200*200, 在375屏幕上显示 100*100 */ /* 375px屏幕中, font-size: 50px */ @media screen and (width: 375px){ html { font-size: 50px; } } /* 750px屏幕中, font-size: 100px */ @media screen and (width: 750px){ html { font-size: 100px; } } div { width: 2rem; height: 2rem; background-color: pink; } </style> </head> <body> <div></div> </body> </html>
2.经过javascript实现
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <title>Title</title> <style> body { font-size: 16px; } /* 设计图尺寸 640px 基准值 100px */ div { width: 2rem; height: 2rem; font-size: .3rem; background-color: pink; } </style> </head> <body> <div>我是自适应的文字</div> <script> var design = 640; var base = 100; function responsive() { var width = window.innerWidth; // 所求font-size = 当前屏幕宽度 / 设计图 * 基准值 var size = width / design * base; document.documentElement.style.fontSize = size + "px"; } responsive(); window.addEventListener("resize", responsive); </script> </body> </html>
3.使用flexible.js
flexible.js是淘宝移动适配方案,基本原理与上面的经过javascript实现自适应相同,可是作了不少兼容性处理,其中定义:基准值(即html根元素字体大小) = 设计图尺寸 / 10。使用的时候直接在文件中引入包便可。
下载地址:https://github.com/amfe/lib-flexible