Blogger Information
Blog 26
fans 0
comment 0
visits 12198
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
1024作业:em,rem特点,应用场景;使用rem+vw重写课程表案例(无px)
高空中的云
Original
307 people have browsed it

em, rem特点,应用场景

em 特点&应用场景

em是相对于父元素的相对长度单位,是取决于自身的font-size大小.换句话说,如果某个元素未直接定义自身的font-size大小,则受其父元素font-size的影响(继承).特别需要说明的是,该元素的属性(width,height,padding,border,margin等)值都会受此影响.因此,在应用到多层嵌套的div时,可能会有很多计算的困扰~

应用场景

  • 解决文字放大缩小的问题
  • 对页面进行响应式开发时,便于修改
  • 结合px,在内容放大的时候边框”相对变小”,牺牲样式,确保内容尽可能被放大(个人开发习惯)

rem 特点&应用场景

rem是相对于root元素的相对长度单位.通俗的说,具备em的优点,并且不管怎么嵌套div,rem只认html这一个”爹”,不存在”多层认爹”的疑惑.当然,只要html改了font-size,所有使用rem的都会被改变.

应用场景

  • 除了上述em应用场景外,rem改动更便捷
  • 有些页面字体缩放效果,使用rem比em更合适
  • 个人感觉,pc端和移动端都可以优先使用rem,遇到一些标题和下拉菜单等样式(当我们缩放页面时,页面布局乱或者不符合预期),可以酌情使用empx进行调整.万事不绝对,有些时候,比如浮动的广告banner还是建议使用px[doge.gif]

其他

有一些特殊情况,

  • 当我们希望宽度拉满的时候,还是建议使用100%.或者不能拘泥于emrem.可以用后者去限制max-width
  • 在页面宽度固定的情况下,尤其是视窗禁止缩放(maximum-scale = 1.0 user-scalable = 0)情况下,比如一些表单页面,或者一些相对更”古老”的系统在特定设备上.用%px能确保列宽更为合适.起码,这时候emrem无法体现更大的优势.

为什么推荐使用rem

简单,用一种最友好和容易写的方式能解决90%以上的问题.

课程表重写

效果图,

核心代码及解释

  1. /*
  2. 朱老师写法
  3. 是把上午,中午休息,下午写到3个tbody中,
  4. 是指除去中午休息这个tbody,其他tbody的第一个tr包含的第一个td的背景色设置为rgb(23, 223, 43)
  5. */
  6. table tbody:not(tbody:nth-of-type(2)) tr:first-of-type td:first-of-type{
  7. background-color: rgb(23, 223, 43);
  8. }

我的做法是只写了一个tbody,所以这个地方”投机取巧”的代码如下

  1. table tbody:nth-of-type(n) tr:nth-of-type(5n+1) td:first-of-type{
  2. background-color: bisque;
  3. }

另外一种”投机取巧”的写法如下:

  1. table tbody:nth-of-type(n) tr:nth-of-type(1) td:first-of-type,
  2. table tbody:nth-of-type(n) tr:nth-last-of-type(3) td:first-of-type{
  3. background-color: bisque;
  4. }

第三种”不要脸”的写法如下:

  1. td[rowspan="4"]{
  2. background-color: bisque;
  3. }

实际中,可能不会去思考如此复杂的选择器,也不会凑巧知道某个或某些特殊块的”独门属性”.大部分时间是能处理好”首尾”或者”奇偶”就足够了.真是遇到这么复杂的情况,应该还是直接用class写一个样式了,或者在js中做相关处理…当然,能用css解决,就不用js.

课程表完整源代码

  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  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>课程表</title>
  8. <style>
  9. .text-align_center {
  10. text-align: center;
  11. }
  12. table {
  13. border-collapse: collapse;
  14. width: 50%;
  15. margin: auto;
  16. text-align: center;
  17. }
  18. table caption {
  19. font-size: 2rem;
  20. margin-top: 1rem;
  21. line-height: 3rem;
  22. }
  23. table thead {
  24. background-color: aquamarine;
  25. }
  26. /*
  27. 朱老师写法
  28. 是把上午,中午休息,下午写到3个tbody中,
  29. 所以这里是指除去中午休息这个tbody,其他tbody的第一个tr包含的第一个td的背景色设置为rgb(23, 223, 43)
  30. */
  31. /* table tbody:not(tbody:nth-of-type(2)) tr:first-of-type td:first-of-type{
  32. background-color: rgb(23, 223, 43);
  33. } */
  34. /* 偷鸡写法一
  35. table tbody:nth-of-type(n) tr:nth-of-type(5n+1) td:first-of-type{
  36. background-color: bisque;
  37. }*/
  38. /* 偷鸡写法二 */
  39. table tbody:nth-of-type(n) tr:nth-of-type(1) td:first-of-type,
  40. table tbody:nth-of-type(n) tr:nth-last-of-type(3) td:first-of-type{
  41. background-color: bisque;
  42. }
  43. /* 偷鸡写法三 */
  44. td[rowspan="4"]{
  45. background-color: bisque;
  46. }
  47. </style>
  48. </head>
  49. <body>
  50. <table border="1" cellpadding="10">
  51. <caption>课程表</caption>
  52. <thead>
  53. <tr>
  54. <th>时间</th>
  55. <th>周一</th>
  56. <th>周二</th>
  57. <th>周三</th>
  58. <th>周四</th>
  59. <th>周五</th>
  60. </tr>
  61. </thead>
  62. <tbody>
  63. <tr>
  64. <td rowspan="4">上午</td>
  65. <td>语文</td>
  66. <td>语文</td>
  67. <td>语文</td>
  68. <td>语文</td>
  69. <td>语文</td>
  70. </tr>
  71. <tr>
  72. <td>语文</td>
  73. <td>语文</td>
  74. <td>语文</td>
  75. <td>语文</td>
  76. <td>语文</td>
  77. </tr>
  78. <tr>
  79. <td>语文</td>
  80. <td>语文</td>
  81. <td>语文</td>
  82. <td>语文</td>
  83. <td>语文</td>
  84. </tr>
  85. <tr>
  86. <td>语文</td>
  87. <td>语文</td>
  88. <td>语文</td>
  89. <td>语文</td>
  90. <td>语文</td>
  91. </tr>
  92. <tr>
  93. <td colspan="6">中午休息</td>
  94. </tr>
  95. <tr>
  96. <td rowspan="4">下午</td>
  97. <td>语文</td>
  98. <td>语文</td>
  99. <td>语文</td>
  100. <td>语文</td>
  101. <td>语文</td>
  102. </tr>
  103. <tr>
  104. <td>语文</td>
  105. <td>语文</td>
  106. <td>语文</td>
  107. <td>语文</td>
  108. <td>语文</td>
  109. </tr>
  110. <tr>
  111. <td>语文</td>
  112. <td>语文</td>
  113. <td>语文</td>
  114. <td>语文</td>
  115. <td>语文</td>
  116. </tr>
  117. </tbody>
  118. <tfoot>
  119. <tr>
  120. <td>备注:</td>
  121. <td colspan="5">每天下午15:30~17:30在校写作业</td>
  122. </tr>
  123. </tfoot>
  124. </table>
  125. </body>
  126. </html>
Correcting teacher:PHPzPHPz

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