博客列表 >grid 布局一个课程列表

grid 布局一个课程列表

JKY辉哥
JKY辉哥原创
2020年07月06日 23:52:59730浏览

1. grid 布局要实现课程列表,效果图如下

gird

2. html & css 代码结

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  6. <title>0628作业:放php.cn课程列表</title>
  7. <style>
  8. * {
  9. margin: 0;
  10. padding: 0;
  11. box-sizing: border-box;
  12. }
  13. a {
  14. text-decoration: none;
  15. font-size: 14px;
  16. color: #666;
  17. }
  18. /* 大容器 */
  19. .courses-list {
  20. width: 1200px;
  21. height: 646px;
  22. display: grid;
  23. margin: auto;
  24. }
  25. /* 课程大标题 */
  26. .courses-list > .course-title {
  27. color: #555;
  28. text-align: center;
  29. height: 60px;
  30. line-height: 60px;
  31. }
  32. /* 课程列表 */
  33. .courses-list > .container {
  34. display: grid;
  35. grid-template-columns: repeat(5, 1fr);
  36. grid-template-rows: repeat(3, 1fr);
  37. }
  38. .courses-list > .container > .course {
  39. width: 217px;
  40. height: 166px;
  41. /* background-color: violet; */
  42. border-radius: 5%;
  43. box-shadow: 0 0 10px #888;
  44. place-self: start center;
  45. }
  46. .courses-list > .container > .course.first {
  47. grid-row: span 2;
  48. height: 362px;
  49. }
  50. /* 课程图片 */
  51. .courses-list > .container > .course img {
  52. width: 100%;
  53. border-radius: 5%;
  54. }
  55. .courses-list > .container > .course .desc {
  56. display: grid;
  57. place-content: space-between;
  58. min-height: 84px;
  59. background-color: white;
  60. border-radius: 5%;
  61. padding: 10px;
  62. position: relative;
  63. top: -42px;
  64. }
  65. .courses-list > .container > .course .desc span {
  66. color: #555;
  67. font-size: smaller;
  68. }
  69. .courses-list > .container > .course .desc a span {
  70. background-color: #939999;
  71. color: white;
  72. padding: 1px;
  73. border-radius: 2px;
  74. }
  75. .courses-list > .container > .course .desc:hover {
  76. min-height: 130px;
  77. position: relative;
  78. cursor: pointer;
  79. top: -90px;
  80. /* 添加css过度效果 */
  81. transition: top 0.5s;
  82. }
  83. </style>
  84. </head>
  85. <body>
  86. <div class="courses-list">
  87. <h3 class="course-title">PHP入门精品课程</h3>
  88. <!-- 课程列表,用grid布局 -->
  89. <div class="container">
  90. <div class="course first">
  91. <a href=""><img src="img/first.jpg" alt="" /></a>
  92. </div>
  93. <div class="course">
  94. <a href=""><img src="img/img01.png" alt="" /></a>
  95. <div class="desc">
  96. <a href=""><span>30分钟</span>学会布局网站布局</a>
  97. <span>6W+播放</span>
  98. </div>
  99. </div>
  100. <div class="course">
  101. <a href=""><img src="img/img02.jpg" alt="" /></a>
  102. <div class="desc">
  103. <a href=""><span>30分钟</span>学会布局网站布局</a>
  104. <span>6W+播放</span>
  105. </div>
  106. </div>
  107. <div class="course">
  108. <a href=""><img src="img/img03.jpg" alt="" /></a>
  109. <div class="desc">
  110. <a href=""><span>30分钟</span>学会布局网站布局</a>
  111. <span>6W+播放</span>
  112. </div>
  113. </div>
  114. <div class="course">
  115. <a href=""><img src="img/img04.jpg" alt="" /></a>
  116. <div class="desc">
  117. <a href=""><span>30分钟</span>学会布局网站布局</a>
  118. <span>6W+播放</span>
  119. </div>
  120. </div>
  121. <div class="course">
  122. <a href=""><img src="img/img05.jpg" alt="" /></a>
  123. <div class="desc">
  124. <a href=""><span>30分钟</span>学会布局网站布局</a>
  125. <span>6W+播放</span>
  126. </div>
  127. </div>
  128. <div class="course">
  129. <a href=""><img src="img/img06.jpeg" alt="" /></a>
  130. <div class="desc">
  131. <a href=""><span>30分钟</span>学会布局网站布局</a>
  132. <span>6W+播放</span>
  133. </div>
  134. </div>
  135. <div class="course">
  136. <a href=""><img src="img/img07.jpg" alt="" /></a>
  137. <div class="desc">
  138. <a href=""><span>30分钟</span>学会布局网站布局</a>
  139. <span>6W+播放</span>
  140. </div>
  141. </div>
  142. <div class="course">
  143. <a href=""><img src="img/img08.jpg" alt="" /></a>
  144. <div class="desc">
  145. <a href=""><span>30分钟</span>学会布局网站布局</a>
  146. <span>6W+播放</span>
  147. </div>
  148. </div>
  149. <div class="course">
  150. <a href=""><img src="img/img09.jpg" alt="" /></a>
  151. <div class="desc">
  152. <a href=""><span>30分钟</span>学会布局网站布局</a>
  153. <span>6W+播放</span>
  154. </div>
  155. </div>
  156. <div class="course">
  157. <a href=""><img src="img/img10.jpg" alt="" /></a>
  158. <div class="desc">
  159. <a href=""><span>30分钟</span>学会布局网站布局</a>
  160. <span>6W+播放</span>
  161. </div>
  162. </div>
  163. <div class="course">
  164. <a href=""><img src="img/img11.jpg" alt="" /></a>
  165. <div class="desc">
  166. <a href=""><span>30分钟</span>学会布局网站布局</a>
  167. <span>6W+播放</span>
  168. </div>
  169. </div>
  170. <div class="course">
  171. <a href=""><img src="img/img12.jpg" alt="" /></a>
  172. <div class="desc">
  173. <a href=""><span>30分钟</span>学会布局网站布局</a>
  174. <span>6W+播放</span>
  175. </div>
  176. </div>
  177. <div class="course">
  178. <a href=""><img src="img/img13.jpg" alt="" /></a>
  179. <div class="desc">
  180. <a href=""><span>30分钟</span>学会布局网站布局</a>
  181. <span>6W+播放</span>
  182. </div>
  183. </div>
  184. </div>
  185. </div>
  186. </body>
  187. </html>

运行效果图courses

3. 总结

  • 3.1 基本术语
    • 容器: 使用网格布局的元素
    • 项目: 容器中的子元素
    • 网格线: 将容器划分为行与列的直线
    • 显式网络: 由用户根据项目数量指示容器生成的网格
    • 隐式网格: 由容器根据项目数量自动生成的网格
    • 单元格: 项目放置的具体空间
    • 网格区域: 一个以上的单元格组成的矩形区域
  • 3.2 常用属性

    1. /** 定义网格布局 ** /
    2. display: grid;
    3. /*设置5列*/
    4. grid-template-columns: 100px 100px 100px 100px 100px;
    5. /*简写 */
    6. grid-template-columns: repeat(5, 100px);
    7. / *设置3 */
    8. grid-template-rows: 100px 100px 100px;
    9. /*简写*/
    10. grid-template-rows: repeat(3, 100px);
  1. .container > .item:first-of-type {
  2. background-color: lightcoral;
  3. /*
  4. grid-column-start: 1;
  5. grid-column-end: 2;
  6. grid-row-start: 1;
  7. grid-row-end: 2; */
  8. /* grid-column-start: 3;
  9. grid-column-end: 4;
  10. grid-row-start: 2;
  11. grid-row-end: 3; */
  12. /* 默认总是跨一行或一列 */
  13. /* grid-column-start: 3;
  14. grid-row-start: 2; */
  15. /* 将项目放置到一个网格区域中,网格区域只能是矩形区域 */
  16. /* grid-column-start: 2;
  17. grid-column-end: 4;
  18. grid-row-start: 2;
  19. grid-row-end: 4; */
  20. /* 行与列的跨越 */
  21. /* grid-column-start: 2;
  22. grid-column-end: span 2;
  23. grid-row-start: 2;
  24. grid-row-end: span 2; */
  25. /* 简化 */
  26. /* grid-column: 起始列号 / 结束列号;
  27. grid-row: 起始行号 / 结束行号 */
  28. /* grid-column: 2 / 4;
  29. grid-row: 2 / 4; */
  30. /* 跨越行和列简写 */
  31. /* grid-column: 2 / 4;
  32. grid-row: 2 / span 2; */
  33. /* 跨越整行 */
  34. /* grid-column: 1 / 4; */
  35. /* grid-column: 1 / span 3; */
  36. /* grid-column: 2 / 4; */
  37. /* grid-column: -1 / -3; */
  38. /* 充满整个容器 */
  39. /* grid-column: 1 / span 3;
  40. grid-row: 1 / span 3; */
  41. /* 根据项目的当前默认位置进行简化 */
  42. /* grid-column: span 3;
  43. grid-row: span 3; */
  44. /* 想写得更加的直观 */
  45. /* grid-column-start: 1; */
  46. grid-column-end: span 3;
  47. /* grid-row-start: 1; */
  48. grid-row-end: span 3;
  49. /*项目在grid容器中的对齐方案*/
  50. /* 当容器在存在剩余空间的时候,才有意义 */
  51. /* place-content: 垂直方向对齐方式 水平方向对齐方式; */
  52. /* 剩余空间分配方案1: 在顶部和左侧进行分配,简单的理解为二边分配 */
  53. /* 垂直居中, 水平居左 */
  54. /* place-content: center start; */
  55. /* 垂直居上, 水平居中 */
  56. /* place-content: start center; */
  57. /* 垂直,水平全部居中 */
  58. /* place-content: center center; */
  59. /* 垂直,水平全部居中 简写 */
  60. place-content: center;
  61. /* 剩余空间分配方案2: 在每个单元格之间进行分配 */
  62. /* 垂直方向二端对齐, 水平分散对齐 */
  63. place-content: space-between space-around;
  64. /* 垂直分散对齐,水平平均对齐 */
  65. place-content: space-around space-evenly;
  66. /*项目在 grid 单元格中的对齐方案*/
  67. /* place-items: 垂直对齐方式 水平对齐方式; */
  68. /* 项目在grid单元格中的对齐方案 */
  69. /* place-items: 垂直对齐方式 水平对齐方式; */
  70. place-items: strech;
  71. /* 关键字 */
  72. /* place-items: auto;
  73. place-items: normal; */
  74. /* 垂直居中,水平居左 */
  75. /* place-items: center start; */
  76. /* 垂直,水平都居中 */
  77. /* place-items: center center; */
  78. place-items: center;
  79. /* 垂直居中,水平拉伸,单元格不能定义宽度,不然看不到效果*/
  80. place-items: center stretch;
  81. /*项目在 grid 网格区域中的对齐方案/
  82. /* 网格区域,就是一个或多个单元格组成的矩形空间 */
  83. grid-template-columns: repeat(3, 1fr);
  84. grid-template-rows: repeat(3, 1fr);
  85. /* 单元格垂直水平居中整体对齐 */
  86. place-items: center;
  87. /* 设置行列间隙 */
  88. /* row-gap: 5px;
  89. column-gap: 5px; */
  90. /* 行列相等 简写 */
  91. /* gap: 5px; */
  92. /* 行10px 列5px */
  93. /* gap:行间距 列间距 */
  94. gap: 10px 5px;
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议