博客列表 >动态布局em,rem 的原理与应用场景

动态布局em,rem 的原理与应用场景

空瓶子
空瓶子原创
2020年12月19日 20:26:541178浏览

动态布局

按自己理解的方式详细描述 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>

演示效果


声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议