Blogger Information
Blog 27
fans 0
comment 0
visits 19024
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
实例演示Grid常用的容器与项目属性和仿写PHP中文网首页:最新课程片断
茂林
Original
878 people have browsed it

1. Grid布局概念:网格布局或栅格布局,是二维布局,可以在水平和垂直方向上同时布局

  1. 容器:`display:grid/inline-grid`
  2. 项目:grid容器的子元素(仅限子元素,可以嵌套)
  3. 单元格:项目载体,多个单元格可构成`网格区域`
  4. 单元格或网格区域,对用户不可见,仅用于存放grid项目

2.Grid必知属性

2.1 容器属性

  1. display: grid: 容器类型(块或行内)
  2. grid-template-row/columns: 创建显式网格
  3. grid-auto-rows/columns: 创建隐式网格
  4. grid-auto-flow: 项目排列方向
  5. gap: 行列间隙
  6. place-content: 项目在容器中的排列方式
  7. place-items: 项目在单元格中的排列方式

2.2 项目属性

  1. grid-row/column: 某项目占据的网格区域
  2. grid-area: grid-row/column语法糖
  3. place-self: 某项目在单元格中的排列方式

3 实例演示Grid属性

  1. <body>
  2. <div class="container">
  3. <div class="item">item</div>
  4. </div>
  5. </body>
  6. <style>
  7. .container {
  8. width: 300px;
  9. height: 150px;
  10. /*转为grid网格容器 */
  11. display: grid;
  12. /* 使用显式网格容器分成3行3列 */
  13. /* grid-template-rows: 50px 50px 50px; */ /* 分成三行 */
  14. /* grid-template-columns: 100px 100px 100px; */ /* 分成三列 */
  15. /* 对相同的且相邻的值,可以用repeat简化 */
  16. /* grid-template-rows: repeat(3, 50px); */ /* 分成三行 */
  17. /* grid-template-columns: repeat(3, 100px); */ /* 分成三列 */
  18. /* 如宽度与高度等分,可单位fr 表示 比例单位fr */
  19. grid-template-rows: repeat(3, 1fr); /* 分成三行 */
  20. grid-template-columns: repeat(3, 1fr); /* 分成三列 */
  21. }
  22. .container > .item {
  23. background-color: bisque;
  24. /* 项目属性 grid-row/grid-column:项目占据的网格区域*/
  25. /* grid-row: 1/2; */ /* grid-row:行开始编号/行结束编号 */
  26. /* grid-column: 1/2; */ /* grid-column:列开始编号/列结束编号 */
  27. /* 一个项目至少要占据一个单元格,一个单元格,默认是跨越1行1列,可以简写 */
  28. /* grid-row: 2; */ /* 行开始编号 2,结束编号不写默认3 */
  29. /* grid-column: 2; */ /* 列开始编号 2,结束编号不写默认3 */
  30. /* grid-row: 1/3; */ /* grid-row:行开始编号/行结束编号 */
  31. /* grid-column: 1/3; */ /* grid-column:列开始编号/列结束编号 */
  32. /* 当跨越多个单元格时,开成一个矩形的空间,称为“网格区域” */
  33. /* grid-area: 2/2/4/4; *//* grid-area:行开始/列开始/行结束/列结束 */
  34. grid-area: 2/2 / span2/span2;/* span表示跨越的意思,span2 表示跨越2行或2列 */
  35. }

  1. <body>
  2. <div class="container">
  3. <div class="item">item1</div>
  4. <div class="item">item2</div>
  5. <div class="item">item3</div>
  6. <div class="item">item4</div>
  7. <div class="item add">item5</div>
  8. <div class="item">item6</div>
  9. <div class="item">item7</div>
  10. <div class="item">item8</div>
  11. <div class="item">item9</div>
  12. </div>
  13. <style>
  14. .container {
  15. width: 450px;
  16. height: 300px;
  17. /* 转为grid网格容器 */
  18. display: grid;
  19. border: 1px solid black;
  20. /* 创建3行3列的容器 */
  21. grid-template-columns: repeat(3, 120px); /* 3列 */
  22. grid-template-rows: repeat(3, 80px); /* 3行 */
  23. /* 容器项目的排列规则,默认是行优先row */
  24. grid-auto-flow: row;
  25. /* grid-auto-flow: column; */
  26. /* 2. 隐式网格 */
  27. /* 超出显式网格数量的项目,创建在隐式网格中(自动生成) */
  28. /* grid-auto-rows: 50px; */
  29. grid-auto-rows: 1fr;
  30. /*
  31. 1.项目在容器中的排列方式 (垂直方向与水平方向) place-content: 垂直的排列方式 水平的排列方式
  32. 2.排列前提:容器中必须存在 "剩余空间"
  33. 3.对齐本质:剩余空间,在"项目"之间的分配方案
  34. 4.剩余空间:Flex(主轴,交叉轴), Grid(容器,单元格)
  35. 5.值包含:start center end(对齐方式)
  36. space-between space-around space-evenly(剩余空间在项目之间的分配)
  37. */
  38. /* 默认方式 垂直与水平都是 start */
  39. place-content: start start;
  40. /* 垂直与水平方向的值相同,可以简写成一个 */
  41. place-content: start;
  42. /* 垂直居中,水平居右 */
  43. place-content: center end;
  44. /* 剩余空间在所有项目之间分配 */
  45. place-content: space-between space-around;
  46. place-content: space-between space-between;
  47. place-content: space-between;
  48. place-content: space-around;
  49. place-content: space-evenly;
  50. /* 项目在单元格的排列方式,值与项目在容器中的一样
  51. place-items:垂直方向 水平方向
  52. 值包含:start center end(对齐方式)
  53. space-between space-around space-evenly(剩余空间在项目之间的分配)
  54. */
  55. /* 垂直和水平方向 都居中 */
  56. place-items: center center;
  57. /* 双值相同,可简写成一个值 */
  58. place-items: center;
  59. /* 垂直末尾对齐,水平居中 */
  60. place-items: end center;
  61. }
  62. .container > .item {
  63. background-color: bisque;
  64. width: 100px;
  65. height: 60px;
  66. }
  67. .container > .item.add {
  68. background-color: aqua;
  69. position: relative;
  70. /* 某个项目的单独排列方法 */
  71. place-self: center;
  72. /* position: absolute;
  73. top: 0; */
  74. }
  75. </style>

排列方式

  1. <body>
  2. <div class="container">
  3. <div class="item">item1</div>
  4. <div class="item">item2</div>
  5. <div class="item">item3</div>
  6. <div class="item">item4</div>
  7. <div class="item">item5</div>
  8. <div class="item">item6</div>
  9. <div class="item">item7</div>
  10. <div class="item">item8</div>
  11. <div class="item">item9</div>
  12. </div>
  13. </body>
  14. <style>
  15. .container {
  16. width: 300px;
  17. height: 150px;
  18. /*转为grid网格容器 */
  19. display: grid;
  20. border: 1px solid black;
  21. padding: 5px;
  22. /* 如宽度与高度等分,可单位fr 表示 比例单位fr */
  23. grid-template-rows: repeat(3, 1fr); /* 分成三行 */
  24. grid-template-columns: repeat(3, 1fr); /* 分成三列 */
  25. /* gap: 行列间隙/轨道间距 */
  26. /* gap: 垂直方向 水平方向 */
  27. gap: 5px 5px;
  28. /* 双值一样,简写成1个值 */
  29. gap: 5px;
  30. }
  31. .container > .item {
  32. background-color: bisque;
  33. }

gap属性

4 仿写PHP中文网首页:最新课程片断

html代码

  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>Grid布局作业-仿首页最新课程</title>
  8. <link rel="stylesheet" href="css/reset.css" />
  9. <link rel="stylesheet" href="css/base.css" />
  10. <link rel="stylesheet" href="css/font-icon.css" />
  11. </head>
  12. <body>
  13. <!-- New Course 整体看成1行2列 -->
  14. <div class="newcourse">
  15. <div class="top">
  16. <h2>最新课程</h2>
  17. <a href="">更多> </a>
  18. </div>
  19. <!-- ul 2行 5列 -->
  20. <div class="course">
  21. <ul class="list">
  22. <li class="item1">
  23. <a href="">
  24. <img src="/0209/img/midjourneyAI.png" alt="MidjourneyAI" />
  25. </a>
  26. <div class="detail">
  27. <span>初级</span>
  28. <a href="">Midjourney初级课程</a>
  29. </div>
  30. <div class="desc iconfont">
  31. <span>1234次学习</span>
  32. <span class="icon-shoucang"> 收藏</span>
  33. </div>
  34. </li>
  35. <li class="item2">
  36. <a href="">
  37. <img src="/0209/img/Midjourney2.png" alt="Midjourney10分钟创作" />
  38. </a>
  39. <div class="detail">
  40. <span>初级</span>
  41. <a href="">10分钟--Midjourney创作自己的漫画</a>
  42. </div>
  43. <div class="desc iconfont">
  44. <span>121次学习</span>
  45. <span class="icon-shoucang"> 收藏</span>
  46. </div>
  47. </li>
  48. <li class="item3">
  49. <a href="">
  50. <img
  51. src="/0209/img/Midjourney3.png"
  52. alt="Midjourney高手之路--关键词"
  53. />
  54. </a>
  55. <div class="detail">
  56. <span>初级</span>
  57. <a href="">Midjourney关键词系列整合</a>
  58. </div>
  59. <div class="desc iconfont">
  60. <span>1234次学习</span>
  61. <span class="icon-shoucang"> 收藏</span>
  62. </div>
  63. </li>
  64. <li class="item4">
  65. <a href="">
  66. <img src="/0209/img/AI4.png" alt="AI绘画简单上手" />
  67. </a>
  68. <div class="detail">
  69. <span>初级</span>
  70. <a href="">AI绘画教程</a>
  71. </div>
  72. <div class="desc iconfont">
  73. <span>1234次学习</span>
  74. <span class="icon-shoucang"> 收藏</span>
  75. </div>
  76. </li>
  77. <li class="item5">
  78. <a href="">
  79. <img src="/0209/img/Midjourney5.png" alt="Midjourney入门到精通" />
  80. </a>
  81. <div class="detail">
  82. <span>初级</span>
  83. <a href="">【Midjourney】入门到精通</a>
  84. </div>
  85. <div class="desc iconfont">
  86. <span>1234次学习</span>
  87. <span class="icon-shoucang"> 收藏</span>
  88. </div>
  89. </li>
  90. <li class="item6">
  91. <a href="">
  92. <img
  93. src="/0209/img/Midjourney6.png"
  94. alt="成为PHP架构师自制PHP框架"
  95. />
  96. </a>
  97. <div class="detail">
  98. <span>中级</span>
  99. <a href="">成为PHP架构师-自制PHP框架</a>
  100. </div>
  101. <div class="desc iconfont">
  102. <span>1234次学习</span>
  103. <span class="icon-shoucang"> 收藏</span>
  104. </div>
  105. </li>
  106. <li class="item7">
  107. <a href="">
  108. <img src="/0209/img/Gin7.png" alt="Gin框架实战开发课程" />
  109. </a>
  110. <div class="detail">
  111. <span>初级</span>
  112. <a href="">Go语言课程Gin框架实战</a>
  113. </div>
  114. <div class="desc iconfont">
  115. <span>1234次学习</span>
  116. <span class="icon-shoucang"> 收藏</span>
  117. </div>
  118. </li>
  119. <li class="item8">
  120. <a href="">
  121. <img src="/0209/img/Golang8.jpg" alt="Golang深入理解GPM模型" />
  122. </a>
  123. <div class="detail">
  124. <span>中级</span>
  125. <a href="">Golang深入理解GPM模型</a>
  126. </div>
  127. <div class="desc iconfont">
  128. <span>1234次学习</span>
  129. <span class="icon-shoucang"> 收藏</span>
  130. </div>
  131. </li>
  132. <li class="item9">
  133. <a href="">
  134. <img src="/0209/img/Golang9.jpg" alt="公益直播PHP你究竟想干啥" />
  135. </a>
  136. <div class="detail">
  137. <span>初级</span>
  138. <a href="">公益直播:PHP8,究竟有啥野心..!?</a>
  139. </div>
  140. <div class="desc iconfont">
  141. <span>1234次学习</span>
  142. <span class="icon-shoucang"> 收藏</span>
  143. </div>
  144. </li>
  145. <li class="item10">
  146. <a href="">
  147. <img src="/0209/img/linux10.jpg" alt="Linux运维小白入行详解" />
  148. </a>
  149. <div class="detail">
  150. <span>中级</span>
  151. <a href="">Linux运维基础课程【全程干货详解】 </a>
  152. </div>
  153. <div class="desc iconfont">
  154. <span>1234次学习</span>
  155. <span class="icon-shoucang"> 收藏</span>
  156. </div>
  157. </li>
  158. </ul>
  159. </div>
  160. </div>
  161. </body>
  162. </html>

css代码

  1. /* body背景色 */
  2. body {
  3. background-color: #f3f5f7;
  4. }
  5. /* 定义整个框架的大小与自动居中 */
  6. .newcourse {
  7. width: 1200px;
  8. margin-left: auto;
  9. margin-right: auto;
  10. overflow: hidden;
  11. position: relative;
  12. top: 20px;
  13. }
  14. /* 把top定义为弹性容器,项目两端对齐排列 */
  15. .top {
  16. display: flex;
  17. flex-flow: row nowrap;
  18. place-content: space-between;
  19. place-items: center;
  20. }
  21. /*设置"更多"样式 */
  22. .top a {
  23. background-color: #f0f1f4;
  24. width: 78px;
  25. height: 32px;
  26. text-align: center;
  27. border-radius: 100px;
  28. color: #999999;
  29. text-decoration: none;
  30. padding-top: 4px;
  31. }
  32. /* "更多" 鼠标悬停的样式*/
  33. .top a:hover {
  34. background-color: red;
  35. color: white;
  36. }
  37. /* list标签转为grid布局,将li放入2行5列的项目中 */
  38. .list {
  39. height: 530px;
  40. display: grid;
  41. grid-template-columns: repeat(5, 224px);
  42. grid-template-rows: repeat(2, 235px);
  43. gap: 15px;
  44. place-content: center space-between;
  45. }
  46. /* grid中的每个li项目转为flex布局 */
  47. .list li {
  48. display: flex;
  49. flex-flow: column nowrap; /* 主轴方向(垂直)和 主轴不换行 */
  50. place-content: space-between; /* 项目在主轴上的排列方式 (两端对齐)*/
  51. border-radius: 6px; /* 边框4个圆角 */
  52. background-color: white; /* 背景色 */
  53. }
  54. /* flex 第1项目充满flex盒子 */
  55. li.list a {
  56. flex: auto;
  57. }
  58. /* flex第一个项目中-图片的样式 */
  59. a img {
  60. width: 224px;
  61. height: 134px;
  62. border-top-right-radius: 6px;
  63. border-top-left-radius: 6px;
  64. }
  65. /* flex第二个项目中span标签的样式 */
  66. .detail span {
  67. font-size: 12px;
  68. padding: 2px 4px;
  69. color: #298afd;
  70. text-align: center;
  71. background-color: #e0e8fc;
  72. }
  73. /* flex第二个项目中a标签的样式 */
  74. .detail a {
  75. font-size: 14px;
  76. text-decoration: none;
  77. color: #333333;
  78. }
  79. /* flex第二个项目中a标签的悬停样式 */
  80. .detail a:hover {
  81. color: red;
  82. cursor: pointer;
  83. }
  84. /* flex第2个项目的样式 */
  85. .detail {
  86. margin: 10px;
  87. width: 204px;
  88. height: 21px;
  89. }
  90. /* flex第3个项目的样式 */
  91. .desc {
  92. position: relative;
  93. margin: 10px;
  94. width: 204px;
  95. height: 21px;
  96. font-size: 12px;
  97. color: #b7b7b7;
  98. }
  99. /* flex第3个项目span1的样式 */
  100. .desc span:first-child {
  101. position: absolute;
  102. left: 0;
  103. }
  104. /* flex第3个项目span2的样式 */
  105. .desc span:first-child + * {
  106. position: absolute;
  107. right: 0;
  108. cursor: pointer;
  109. }
  110. /* 中级课程span样式 */
  111. .item6 > .detail > span,
  112. .item8 > .detail > span,
  113. .item10 > .detail > span {
  114. background-color: #fce7e0;
  115. color: lightcoral;
  116. }

结果
仿写首页最新课程片断

总结:
上课老师讲的没怎么听懂,基础不扎实,反复观看上课视频,动手慢慢消化;
图片点击动态没有实现

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