Blogger Information
Blog 18
fans 1
comment 0
visits 16256
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
动态布局em,rem 的原理与应用场景
空瓶子
Original
1175 people have browsed it

动态布局

按自己理解的方式详细描述 em,rem 的原理与应用场景 ,并实例演示 2. 分析 rem / em /vh/ vw 的区别与联系

关于 em 和 rem

  • 于 em 的的知识:
    1. 通常情况下,用户的浏览器默认渲染的文字大小是 16px。
    2. 用户可以通过重新定义根标签(或者父元素标签)的 font-size 属性来重新定义默认的文字大小
    3. 在响应式布局中,页面中的所有元素都使用额 em 单位值,em 是一个相对的大小,默认情况下 1em=16px
    4. 相对的大小计算的的参考物是指元素父元素的 font-size 的属性
    5. 比如一个在<div>设置字体大小为 16px,此时这个<div>的后代元素就基层了他的字体大小
    6. font-size 属性具有继承性
  • em 的应用

    1. 设置响应式文本字号
      代码:
    1. <style>
    2. 自定义html标签中的font-size属性
    3. html {
    4. font-size: 20px;
    5. }
    6. h2 {
    7. font-size: 2em;
    8. color: skyblue;
    9. }
    10. </style>
    11. </head>
    12. <body>
    13. <h2>PHP是世界上最美丽的语言</h2>
    14. </body

    效果演示:

    1. 设置盒模型的属性响应式

代码:

  1. <style>
  2. .box {
  3. width: 10em;
  4. height: 10em;
  5. background-color: skyblue;
  6. }
  7. html {
  8. font-size: 20px;
  9. }
  10. </style>
  11. </head>
  12. <body>
  13. <div class="box"></div>
  14. </body>

演示效果:

  1. 设置一组响应式的按钮
    代码:
  1. <style>
  2. /* 设置按钮的基本样式 */
  3. .btn {
  4. background-color: skyblue;
  5. padding: 0.5em 1em;
  6. border-radius: 0.3em;
  7. border: none;
  8. outline: none;
  9. }
  10. /* 设置按钮的动态样式 */
  11. .btn:hover {
  12. opacity: 0.8;
  13. cursor: pointer;
  14. box-shadow: 1em #888888;
  15. transition: 0.3s;
  16. }
  17. /* 通过修改font-size属性实现按钮的响应式 */
  18. .small {
  19. font-size: 12px;
  20. }
  21. .normal {
  22. font-size: 16px;
  23. }
  24. .larger {
  25. font-size: 20px;
  26. }
  27. </style>
  28. </head>
  29. <body>
  30. <button class="btn small">按钮</button>
  31. <button class="btn normal">按钮</button>
  32. <button class="btn larger">按钮</button>
  33. </body>

效果演示:

  1. em 定义字号和 rem 定义字号的区别
    em 定义字号代码:
  1. <style>
  2. body {
  3. font-size: 1.25em;
  4. }
  5. h2 span {
  6. font-size: 1em;
  7. }
  8. </style>
  9. </head>
  10. <body>
  11. <h2>php.cn</h2>
  12. <h2>php.cn<span>PHP中文网</span></h2>
  13. </body>


这里 span 标签继承了 h2 标签 font-size 的属性
而 h2 标签中的 font-size 大小为 30px,
所以 span 标签中的 font-size 大小为 30px,而不是 body 标签 font 属性定义的 20px

  1. rem定义字号代码
  1. <title>rem定义字号</title>
  2. <style>
  3. body {
  4. font-size: 1.25em;
  5. }
  6. h2 span {
  7. font-size: 0.5em;
  8. }
  9. </style>
  10. </head>
  11. <body>
  12. <h2>php.cn</h2>
  13. <h2>php.cn<span>PHP中文网</span></h2>
  14. </body>

效果演示

当前 font-size 属性出现在了 body 中;body 定义的 em 大小可以看做一个常量。因为 em 具有继承性,所以 body 的所有后代元素想用应用 body 中的字号的话就不能再使用 em。此时需要使用到 rem 来引用 body 中的字号
(继承性和相对性)

  1. em 实现响应式布局
    css 代码:
  1. <style>
  2. html {
  3. font-size: 12px;
  4. }
  5. .panel {
  6. font: size 1rem;
  7. padding: 1em;
  8. border-radius: 0.5em;
  9. border: 1px solid #999;
  10. background-color: #eee;
  11. margin: 2em;
  12. }
  13. .panel h2 {
  14. font-size: 1.2rem;
  15. margin: 1.5em 0;
  16. }
  17. .panel p {
  18. font-size: 1.1rem;
  19. text-indent: 2em;
  20. line-height: 2;
  21. }
  22. /* 响应式 */
  23. @media screen and (min-width: 800px) {
  24. html {
  25. font-size: 0.875em;
  26. }
  27. .panel {
  28. background-color: wheat;
  29. }
  30. }
  31. @media screen and (min-width: 1000px) {
  32. html {
  33. font-size: 1em;
  34. }
  35. .panel {
  36. background-color: lightgray;
  37. }
  38. }
  39. @media screen and (min-width: 1200px) {
  40. html {
  41. font-size: 1.25em;
  42. }
  43. .panel {
  44. background-color: skyblue;
  45. }
  46. }
  47. </style>

效果演示



  1. 视口单位 vw、wh 和 wmin 和 wmax
  • vw 和 wh
    vh: 视口的”初始包含块”的高度的百分之一(1/100)
    vw: 视口的”初始包含块”的宽度的百分之一(1/100)
    代码:
  1. <style>
  2. .box {
  3. height: 50vh;
  4. width: 50vw;
  5. background-color: skyblue;
  6. margin: auto;
  7. }
  8. </style>
  9. </head>
  10. <body>
  11. <div class="box"></div>
  12. </body>

效果演示


  • wmin 和 wmax
    代码
  1. <style>
  2. .box {
  3. height: 50vh;
  4. width: 50vw;
  5. background-color: skyblue;
  6. margin: auto;
  7. }
  8. </style>
  9. </head>
  10. <body>
  11. <div class="box"></div>
  12. </body>

演示效果


Correcting teacher:天蓬老师天蓬老师

Correction status:qualified

Teacher's comments:不会前端的php是找不到工作的
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post