博客列表 >em与rem,vw与vh

em与rem,vw与vh

小狐的博客
小狐的博客原创
2020年12月22日 17:40:25741浏览

八、em/rem 与响应式布局

1、em

em 是浏览器的默认字号,一般是 16px
1em = 16px,h2 标签是 1.5em = 24px
font-size 是可以被继承的,继承自他们的祖先元素(body、html)

(1)em 用在哪

用于响应式布局,动态调整标签大小

  1. <style>
  2. /* 设置响应式的文本字号 */
  3. /* font-size: 是允许被继承的 */
  4. /* 当前h2的字号,继承自它的祖先元素(body , html) */
  5. /* 想改变h2的字号,大小 */
  6. html {
  7. font-size: 20px;
  8. }
  9. body div:first-of-type {
  10. /* 1em = 20px */
  11. font-size: 1em;
  12. /* 从现在起请忘记像素px */
  13. /* width: 100px;
  14. height: 100px;
  15. */
  16. /* 10em : 10 * 20 = 200px */
  17. width: 10em;
  18. /* 8em : 8 * 20 = 160px */
  19. height: 8em;
  20. background-color: lightgreen;
  21. }
  22. /* 因为盒子的大小使用em,所以只需要设置盒子的font-size就可以动态的设置大小了 */
  23. body div {
  24. /* 2倍em就是40px,套用上面的声明,宽度400px,高度320px */
  25. font-size: 2em;
  26. }
  27. </style>
  28. <body>
  29. <!-- 这里的h2字号,就变成 20*1.5 = 30px -->
  30. <!-- 因为font-size会继承祖先元素,因此span的font-size与h2一样 -->
  31. <h2>www.10010.com<span>联通网厅</span></h2>
  32. <div></div>
  33. </body>

(2)em 模仿 layui 按钮

  1. <style>
  2. /* 基本样式 */
  3. .btn {
  4. /* 背景色 */
  5. background-color: #1e9fff;
  6. /* 字体颜色 */
  7. color: #fff;
  8. /* 去掉边框 */
  9. border: none;
  10. /* 去掉轮廓线 */
  11. outline: none;
  12. /* 外边距 */
  13. padding: 0.5em 1em;
  14. /* 设置圆角 */
  15. border-radius: 0.3em;
  16. }
  17. /* 鼠标悬停样式 */
  18. .btn:hover {
  19. /* 透明度 */
  20. opacity: 0.8;
  21. /* 将鼠标设置为手型 */
  22. cursor: pointer;
  23. /* 边框阴影:外发光 */
  24. box-shadow: 0 0 3px #888;
  25. /* 动画延迟(变淡的效果) */
  26. transition: 0.3s;
  27. }
  28. /* 如果想设置三个不同的大小的按钮,只需要为这个三个按钮指定不同的字号就可以 */
  29. /* 较小的 */
  30. .small {
  31. font-size: 10px;
  32. }
  33. /* 正常的 */
  34. .normal {
  35. font-size: 16px;
  36. }
  37. /* 较大的 */
  38. .larger {
  39. font-size: 22px;
  40. }
  41. </style>
  42. <body>
  43. <button class="btn small">Button</button>
  44. <button class="btn normal">Button</button>
  45. <button class="btn larger">Button</button>
  46. </body>

2、rem

rem 的定义

定义

由于 em 具有继承性,因此需要一个引用根元素中字号大小的关键字:rem,他是一个具有固定值的 em
rem 主要用于设置字号,而em则根据字号,动态设置元素大小的属性值

  1. <style>
  2. html {
  3. /* em的初始值就是用户代理的值,默认就是16px */
  4. /* 1em = 20px; */
  5. font-size: 1.25em;
  6. /* 此时1em = 20px */
  7. /* 当前font-size属性出现在了html中 */
  8. /* html叫根元素,一个页面中它是唯一的且是最大的包含块 */
  9. /* 所以,在html中定义的em大小,可看成一个常量(固定的值) */
  10. /* html的所有后代元素,如果想引用html中的字号,就不能再用em了 */
  11. /* */
  12. }
  13. h2 {
  14. /* 1.5rem : 1.5 * 20px = 30px; */
  15. font-size: 1.5rem;
  16. }
  17. h2 span {
  18. /* 1rem = 1 * 20px = 20px */
  19. font-size: 1rem;
  20. }
  21. </style>
  22. <body>
  23. <!-- span = 1rem,不再受到祖先元素的影响 -->
  24. <h2>www.10010.com<span>联通网厅</span></h2>
  25. </body>

九、视口单位(vh/vw)

视口:可视窗口,即浏览器中用于显示文档的可视区域
vh: 视口高度的百分比(50vh = 50%)
vw: 视口宽度的百分比(50vw = 50%)
初始包含块: 目前 可以简单的理解为html

  1. <style>
  2. /* 宽度与高度分别占据可视窗口的 50% */
  3. .box {
  4. width: 50vw;
  5. height: 50vh;
  6. background-color: lightgreen;
  7. margin: auto;
  8. }
  9. /* 如何画出一个正方形 */
  10. /* 宽度与高度,谁小以谁为准 */
  11. .box {
  12. width: 80vmin;
  13. height: 80vmin;
  14. background-color: lightgreen;
  15. margin: auto;
  16. }
  17. /* 宽度与高度,谁大以谁为准 */
  18. .box {
  19. width: 80vmax;
  20. height: 80vmax;
  21. background-color: lightgreen;
  22. margin: auto;
  23. }
  24. </style>
  25. <body>
  26. <div class="box"></div>
  27. </body>
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议