经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » HTML/CSS » HTML5 » 查看文章
rem布局简介
来源:cnblogs  作者:yream  时间:2019/1/4 9:23:23  对本文有异议

移动端常见布局:

  1.流式布局

  高度固定,宽度自适应

  2.响应式布局

  能够用一套代码适应不同尺寸屏幕

  3.rem布局

  宽高自适应,能实现整个页面像一张图片一样缩放且不失真的效果。

rem布局:

  • em:是一个相对单位,计算方法为用元素的带px属性值除以自身字体大小,用的很少。
  • rem:是一个相对单位,计算方法为一个html文件中任意元素的带px属性值除以根元素html的字体大小,从而实现宽高自适应。

简单实例:

  1.em布局

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <meta http-equiv="X-UA-Compatible" content="ie=edge">
  7. <title>Document</title>
  8. <style>
  9. div {
  10. font-size: 100px;
  11. width: 4em; /* 400px */
  12. height: 4em; /* 400px */
  13. background-color: pink;
  14. }
  15. </style>
  16. </head>
  17. <body>
  18. <div>我是400*400的盒子</div>
  19. </body>
  20. </html>

  效果如图:div内字体大小为100px

  2.rem布局

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <meta http-equiv="X-UA-Compatible" content="ie=edge">
  7. <title>Document</title>
  8. <style>
  9. html {
  10. font-size: 100px;
  11. }
  12. div {
  13. font-size: 16px;
  14. width: 4rem; /* 400px */
  15. height: 4rem; /* 400px */
  16. background-color: pink;
  17. }
  18. </style>
  19. </head>
  20. <body>
  21. <div>我是400*400的盒子</div>
  22. </body>
  23. </html>

  效果如图:div内字体大小为16px

rem布局实现自适应:

  1.配合媒体查询

  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. <meta name="viewport"
  7. content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
  8. <style>
  9. /* 一个盒子, 在 750 屏幕上显示 200*200, 在375屏幕上显示 100*100 */
  10. /* 375px屏幕中, font-size: 50px */
  11. @media screen and (width: 375px){
  12. html {
  13. font-size: 50px;
  14. }
  15. }
  16. /* 750px屏幕中, font-size: 100px */
  17. @media screen and (width: 750px){
  18. html {
  19. font-size: 100px;
  20. }
  21. }
  22. div {
  23. width: 2rem;
  24. height: 2rem;
  25. background-color: pink;
  26. }
  27. </style>
  28. </head>
  29. <body>
  30. <div></div>
  31. </body>
  32. </html>

  2.通过javascript实现

  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. <style>
  7. body {
  8. font-size: 16px;
  9. }
  10. /* 设计图尺寸 640px 基准值 100px */
  11. div {
  12. width: 2rem;
  13. height: 2rem;
  14. font-size: .3rem;
  15. background-color: pink;
  16. }
  17. </style>
  18. </head>
  19. <body>
  20. <div>我是自适应的文字</div>
  21. <script>
  22. var design = 640;
  23. var base = 100;
  24. function responsive() {
  25. var width = window.innerWidth;
  26. // 所求font-size = 当前屏幕宽度 / 设计图 * 基准值
  27. var size = width / design * base;
  28. document.documentElement.style.fontSize = size + "px";
  29. }
  30. responsive();
  31. window.addEventListener("resize", responsive);
  32. </script>
  33. </body>
  34. </html>

  3.使用flexible.js

  flexible.js是淘宝移动适配方案,基本原理与上面的通过javascript实现自适应相同,但是做了很多兼容性处理,其中定义:基准值(即html根元素字体大小) = 设计图尺寸 / 10

。使用的时候直接在文件中引入包即可。

  下载地址:https://github.com/amfe/lib-flexible

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号