当前位置:  首页>> 技术小册>> Web响应式布局入门到实战

rem
概念:指相对于根元素(html)的字体大小的单位

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

rem响应式的原理:
根据屏幕不同的尺寸,调整根元素的font-size,实现响应式的效果。

rem与em的区别
rem是相对于根字体的size来设置的,而em是相对于父级元素字体的size来设置的。
因为父组字体还有一些继承关系等,因此,em的计算相对复杂,不推荐

rem响应式实现方式:
使用媒体查询+ rem ,或者使用js+rem,在不同宽度的视口下自动调整元素大小

rem示例:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <title>Document</title>
  8. <script>
  9. /**
  10. * 动态设置根字体大小
  11. */
  12. var c=()=>{
  13. let w=document.documentElement.clientWidth; /* 获取设备的宽度 */
  14. //设置一个默认值,以320的宽度(iphone)来计算20号字体
  15. let defaultWidth = 20*(w/320)
  16. //设置字号
  17. let n= defaultWidth > 40 ? 40 + 'px' : defaultWidth + 'px';
  18. //设置根字体大小
  19. document.documentElement.style.fontSize = n;
  20. }
  21. window.addEventListener("load",c);
  22. window.addEventListener("resize",c);
  23. </script>
  24. <style>
  25. div{
  26. font-size:1rem;
  27. }
  28. </style>
  29. </head>
  30. <body>
  31. <div>123</div>
  32. </body>
  33. </html>

可以通过F12,改变页面尺寸,来查看根字体随尽寸大小而变化:


该分类下的相关小册推荐: