Blogger Information
Blog 22
fans 0
comment 0
visits 21196
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
em,rem原理与应用及视口单位(vh / vw / vmin / vmax)
豌豆君
Original
865 people have browsed it

em原理与应用代码

  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>em原理与应用</title>
  7. <style>
  8. /* 1.什么是em */
  9. /* h2 {
  10. font-size: 1.5em;
  11. } */
  12. /* 1.5em是用户代理(浏览器)为h2标签设置的默认字号 */
  13. /* em: 浏览器文本的默认字号的相对关键字,通常是16px */
  14. /* 1em = 16px */
  15. /* 1.5em = 1.5 * 16px = 24px */
  16. /* --------------------------------------------- */
  17. /* 2. em 用在哪? */
  18. /* 2.1 设置响应式的文本字号 */
  19. /* font-size: 是允许继承的 */
  20. /* 当前h2的字号,继承自它的祖先元素(body,html) */
  21. /* 想改变h2的字号,大小 */
  22. html{
  23. font-size: 20px;
  24. }
  25. /* h2 font-size: 1.5em 1.5em * 20px = 30px */
  26. /* 2.2 设置盒模型的属性的响应式 */
  27. div:first-of-type {
  28. font-size: 1em;
  29. /* width: 100px;
  30. height: 100px; */
  31. width: 5em;
  32. height: 5em;
  33. background-color: green;
  34. }
  35. /* 因为盒子的大小使用em,所以只需要设置盒子的font-size就可以动态的设置大小了 */
  36. div:first-of-type {
  37. font-size: 0.5em;
  38. }
  39. div:first-of-type {
  40. font-size: 2em;
  41. }
  42. </style>
  43. </head>
  44. <body>
  45. <h2>php.cn</h2>
  46. <div></div>
  47. </html>

em制作一组响应的按钮组件代码

  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>em制作一组响应的按钮组件</title>
  7. <style>
  8. .btn {
  9. background-color:skyblue;
  10. color: #fff;
  11. border: none;
  12. outline: none;
  13. padding: 0.5em 1em;
  14. border-radius: 0.3em;
  15. }
  16. .btn:hover {
  17. /* 透明度 */
  18. opacity: 0.8;
  19. /* 将鼠标设置为手型 */
  20. cursor: pointer;
  21. box-shadow: 0 0 3px #888;
  22. transition: 0.3s;
  23. }
  24. /* 如果想设置三个不同的大小的按钮,只需要为这三个按钮指定不同的字号就可以 */
  25. /* 较小的 */
  26. .small {
  27. /* font-size: 10px; */
  28. font-size: 0.8em;
  29. }
  30. /* 正常的 */
  31. .normal {
  32. /* font-size: 16px; */
  33. font-size: 1em;
  34. }
  35. /* 较大的 */
  36. .larger {
  37. /* font-size: 22px; */
  38. font-size: 1.3em;
  39. }
  40. </style>
  41. </head>
  42. <body>
  43. <buttton class="btn small">Button</buttton>
  44. <buttton class="btn normal">Button</buttton>
  45. <buttton class="btn larger">Button</buttton>
  46. </body>
  47. </html>

em定义字号代码

  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>em定义字号</title>
  7. <style>
  8. body {
  9. /* font-size: 20px; */
  10. /* 20px = 1.25 * 16px(1em) */
  11. font-size: 1.25em;
  12. }
  13. /* h2 : 1.5em 30px */
  14. </style>
  15. </head>
  16. <body>
  17. <h2>php.cn</h2>
  18. <!-- font-size 具有继承性,h2 font-size: 1.5em / 30px 所以span的font-size也是30px -->
  19. <!-- 本意并不想让span内的文本与它的描述的对象的大小一样 -->
  20. <h2>php.cn <span>php中文网</span></h2>
  21. <!-- em: 有动态性和继承性优点,但是也有缺点 -->
  22. <!-- 我们非常的需要一个固定值的em,它不应该随着它自身和祖先元素的字号大小而变动 -->
  23. <!-- 用rem就可以解决掉,rem 就是一个固定值的em -->
  24. </body>
  25. </html>

rem定义字号代码

  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>rem定义字号</title>
  7. <style>
  8. html {
  9. /* em的初始值就是用户代理的值,默认就是16px */
  10. /* 1em = 20px; */
  11. font-size: 1.25em;
  12. /* 此时 1em = 20px */
  13. /* 当前font-size属性出现在了html中 */
  14. /* html 叫根元素,一个页面中它是唯一的且是最大包含块 */
  15. /* 所以,在html中定义的em大小,可看成一个常量(固定的值) */
  16. /* html的所有后代元素,如果想引用html中的字号,就不能再用em了 */
  17. /* 因为em具有继承性 */
  18. /* 此时,我们用一个新的关键字来引用根元素中的字号大小font-size的值 */
  19. /* 这个关键字就是: rem */
  20. }
  21. h2 {
  22. /* 1.5rem = 1.5 * 20px = 30px */
  23. font-size: 1.5rem;
  24. }
  25. h2 span {
  26. /* 1rem = 1 * 20px = 20px; */
  27. font-size: 1rem;
  28. }
  29. </style>
  30. </head>
  31. <body>
  32. <h2>php.cn <span>php中文网</span></h2>
  33. </body>
  34. </html>

em实现响应式布局代码

  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>em实现响应式布局</title>
  7. <style>
  8. /* 设置根元素字号 */
  9. html {
  10. /* font-size: 12px; */
  11. font-size: 0.75em;
  12. /* 后面就可以直接使用“rem”来引用“12px”来定义字号或其它属性 */
  13. }
  14. .panel {
  15. /* font-size: 1rem; */
  16. /* 此时,当前元素.panel中的其它属性,如果用到em就是1rem(12px) */
  17. /* 1em = 12px */
  18. padding: 1em;
  19. /* 0.5em = 6px */
  20. border-radius: .5em;
  21. /* 边框不要用em/rem,一定要用px */
  22. border: 1px solid #999;
  23. background-color: #eee;
  24. margin: 2em;
  25. }
  26. .panel h2 {
  27. /* 以后的字号,强烈推荐使用rem设置 */
  28. font-size: 1.2rem;
  29. /* 1em = 1.2rem */
  30. margin: 1em 0;
  31. }
  32. .panel p{
  33. /* 1.1rem = 1.1 * 12px = 13.2px */
  34. font-size: 1.1rem;
  35. /* 缩进2个字符 */
  36. text-indent: 2em;
  37. }
  38. /* 适配以小到大配置 */
  39. /* 屏幕宽度 >= 800px, 字号放大到14px */
  40. @media screen and (min-width: 800px) {
  41. /* 14/16 = 0.875em */
  42. html {
  43. font-size: 0.875em;
  44. }
  45. .panel {
  46. background-color: wheat;
  47. }
  48. }
  49. /* 屏幕宽度 >= 1000px, 字号放大到16px */
  50. @media screen and (min-width: 1000px) {
  51. /* 16/16 = 1em */
  52. html {
  53. font-size: 1em;
  54. }
  55. .panel {
  56. background-color: lightcyan;
  57. }
  58. }
  59. /* 屏幕宽度 >= 1200px, 字号放大到20px */
  60. @media screen and (min-width: 1200px) {
  61. /* 20/16 = 1.25em */
  62. html {
  63. font-size: 1.25em;
  64. }
  65. .panel {
  66. background-color: lightskyblue;
  67. }
  68. }
  69. </style>
  70. </head>
  71. <body>
  72. <div class="panel">
  73. <h2>除了“嫦娥”,还有谁带回太空“土特产”</h2>
  74. <div class="panel-body">
  75. <p>
  76. 1969年7月20日,NASA阿波罗11号登月舱带着2名宇航员——尼尔·阿姆斯特朗和巴兹·奥尔德林,成功踏上月球正面的静海基地。
  77. </p>
  78. </div>
  79. </div>
  80. </body>
  81. </html>

em实现响应式布局: 动态调整响应级别代码

  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>em实现响应式布局: 动态调整响应级别</title>
  7. <style>
  8. /* 设置根元素字号 */
  9. html {
  10. /* font-size: 12px; */
  11. font-size: 0.75em;
  12. /* 后面就可以直接使用“rem”来引用“12px”来定义字号或其它属性 */
  13. }
  14. .panel {
  15. /* font-size: 1rem; */
  16. /* 此时,当前元素.panel中的其它属性,如果用到em就是1rem(12px) */
  17. /* 1em = 12px */
  18. padding: 1em;
  19. /* 0.5em = 6px */
  20. border-radius: .5em;
  21. /* 边框不要用em/rem,一定要用px */
  22. border: 1px solid #999;
  23. background-color: #eee;
  24. margin: 2em;
  25. }
  26. .panel h2 {
  27. /* 以后的字号,强烈推荐使用rem设置 */
  28. font-size: 1.2rem;
  29. /* 1em = 1.2rem */
  30. margin: 1em 0;
  31. }
  32. .panel p{
  33. /* 1.1rem = 1.1 * 12px = 13.2px */
  34. font-size: 1.1rem;
  35. /* 缩进2个字符 */
  36. text-indent: 2em;
  37. }
  38. /* 适配以小到大配置 */
  39. /* 屏幕宽度 >= 800px, 字号放大到14px */
  40. @media screen and (min-width: 800px) {
  41. /* 14/16 = 0.875em */
  42. html {
  43. font-size: 0.875em;
  44. }
  45. .panel {
  46. background-color: wheat;
  47. }
  48. }
  49. /* 屏幕宽度 >= 1000px, 字号放大到16px */
  50. @media screen and (min-width: 1000px) {
  51. /* 16/16 = 1em */
  52. html {
  53. font-size: 1em;
  54. }
  55. .panel {
  56. background-color: lightcyan;
  57. }
  58. }
  59. /* 屏幕宽度 >= 1200px, 字号放大到20px */
  60. @media screen and (min-width: 1200px) {
  61. /* 20/16 = 1.25em */
  62. html {
  63. font-size: 1.25em;
  64. }
  65. .panel {
  66. background-color: lightskyblue;
  67. }
  68. }
  69. .panel.large{
  70. font-size: 2rem;
  71. }
  72. </style>
  73. </head>
  74. <body>
  75. <button>缩小</button>
  76. <div class="panel large">
  77. <h2>除了“嫦娥”,还有谁带回太空“土特产”</h2>
  78. <div class="panel-body">
  79. <p>
  80. 1969年7月20日,NASA阿波罗11号登月舱带着2名宇航员——尼尔·阿姆斯特朗和巴兹·奥尔德林,成功踏上月球正面的静海基地。
  81. </p>
  82. </div>
  83. </div>
  84. </body>
  85. </html>
  86. <script>
  87. document.querySelector('button').addEventListener('click',(ev) =>{
  88. const panel = document.querySelector('.panel');
  89. panel.classList.toggle('large');
  90. if(panel.classList.contains('large')) ev.target.innerHTML = '缩小';
  91. else ev.target.innerHTML = '放大';
  92. })
  93. </script>

视口单位:vh / vw 代码

  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>视口单位:vh / vw </title>
  7. <style>
  8. /* 视口:“可视窗口”,浏览器窗口中用于显示文档的可视区域 */
  9. /* 视口不包括地址栏,菜单栏,工具条,状态栏 */
  10. /* vh: 视口的“初始包含块”的高度的百分之一(1/100)
  11. vw: 视口的“初始包含块”的宽度的百分之一(1/100)
  12. 初始包含块:目前 可以简单的理解为“html” */
  13. .box {
  14. width: 50vw;
  15. height: 25vh;
  16. background-color: lightgreen;
  17. margin: auto;
  18. }
  19. </style>
  20. </head>
  21. <body>
  22. <div class="box"></div>
  23. </body>
  24. </html>

视口单位:vmin / vmax代码

  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>视口单位:vmin / vmax </title>
  7. <style>
  8. /* .box {
  9. width: 50vw;
  10. height: 25vh;
  11. background-color: lightgreen;
  12. margin: auto;
  13. } */
  14. .box {
  15. width: 50vmin;
  16. height: 50vmin;
  17. background-color: lightgreen;
  18. margin: auto;
  19. }
  20. /* 用在手机横竖屏适配(但是一些老系统不支持) */
  21. </style>
  22. </head>
  23. <body>
  24. <div class="box"></div>
  25. </body>
  26. </html>

css原生变量 / css自定义属性

  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>css原生变量 / css自定义属性</title>
  7. <style>
  8. body {
  9. --color: #f00;
  10. --active-color: #0f0;
  11. --a--border:1px solid;
  12. }
  13. a {
  14. color: var(--color);
  15. }
  16. a:hover {
  17. color: var(--active-color);
  18. border: var(--a--border);
  19. }
  20. </style>
  21. </head>
  22. <body>
  23. <a href="">php.cn</a>
  24. </body>
  25. </html>

总结:

em:

文本字号单位(也叫元素符号),浏览器文本的默认字号的相对关键字,根元素html中font-size单位通常是1em=16px(可以修改1em为其它px),em具有继承性(子元素em是以父元素font-size为单位大小)。主要是设置动态的尺寸

rem:

根元素html中font-size单位,rem不具有继承性,主要是设置固定的字号。
视口:“可视窗口”,浏览器窗口中用于显示文档的可视区域,视口不包括地址栏,菜单栏,工具条,状态栏

@media screen:

为屏幕适配,适配以小到大配置。

vh:

视口的高度的百分之一(1/100)

vw:

视口的宽度的百分之一(1/100)

vmin:

视口的最小的边的百分之一

vmax:

视口的最大的边的百分之一

vmin和vmax:

用在手机横竖屏适配(但是一些老系统不支持)

css原生变量 / css自定义属性:

变量名称必须以 — 开头,变量只能存储一个属性的值,而不能用来存储一个属性,变量中无法使用加减等数学方法,如果需要使用计算,则可以使用 calc 函数,CSS变量是区分大小写的,通过var()函数来引用。

Correcting teacher:天蓬老师天蓬老师

Correction status:qualified

Teacher's comments:下次配运行图
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