博主信息
博文 26
粉丝 0
评论 0
访问量 18759
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
1024作业:em,rem特点,应用场景;使用rem+vw重写课程表案例(无px)
高空中的云
原创
543人浏览过

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>
批改老师:PHPzPHPz

批改状态:合格

老师批语:总结的很好,效果实现的也很好,继续加油
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学