博客列表 >实例演示Grid常用的容器与项目属性,仿写PHP中文网首页:最新课程片断

实例演示Grid常用的容器与项目属性,仿写PHP中文网首页:最新课程片断

Jet的博客
Jet的博客原创
2023年02月14日 15:59:44272浏览

一、Grid常用的容器与项目属性

1.1 显示网格与项目属性

  1. <div class="container">
  2. <div class="item">item1</div>
  3. </div>
  4. <style>
  5. .container{
  6. width: 300px;
  7. height: 150px;
  8. /*转化为grid网络容器*/
  9. display: grid;
  10. grid-template-columns: repeat(3,1fr);
  11. grid-template-rows: repeat(3,1fr);
  12. }
  13. .container > .item{
  14. background-color: antiquewhite;
  15. }
  16. .container > .item:first-child{
  17. /*默认位置*/
  18. /*grid-row-start: 1;
  19. grid-row-end: 2;*/
  20. /*简化*/
  21. grid-row: 1 / 2;
  22. /*grid-column-start: 1;
  23. grid-column-end: 2;*/
  24. grid-column: 1 / 2;
  25. /*可以将项目移动道容器控件的任意位置上*/
  26. /* 一个项目至少要占据一个单元格,一个单元格,默认跨越1行1列 */
  27. /*正中间*/
  28. /*grid-row: 2/3;
  29. grid-column: 2/3;
  30. /*简化:*/
  31. /*grid-row: 2/4; /* grid-row: 2 / span 2; */
  32. /*grid-column: 2/4;
  33. /* 跨越多行多列可形成一个网格区域,使用以上2个属性,简化操作 */
  34. /* grid-are: 行开始 / 列开始 / 行结束 / 列结束*/
  35. grid-area: 2 / 2 / 4 / 4;
  36. /*简化*/
  37. grid-area: 2 / 2 / span2 / span2;
  38. }
  39. </style>




1.2 排列规则

  1. <div class="container">
  2. <div class="item">item1</div>
  3. <div class="item">item2</div>
  4. <div class="item">item3</div>
  5. <div class="item">item4</div>
  6. <div class="item">item5</div>
  7. <div class="item">item6</div>
  8. <div class="item">item7</div>
  9. <div class="item">item8</div>
  10. <div class="item">item9</div>
  11. <div class="item">item10</div>
  12. <div class="item">item11</div>
  13. </div>
  14. <style>
  15. .container{
  16. width: 300px;
  17. height: 150px;
  18. /*转化为grid网络容器*/
  19. display: grid;
  20. /*显示网格*/
  21. grid-template-columns: repeat(3,1fr);
  22. grid-template-rows: repeat(3,1fr);
  23. /* 1、排列规则 */
  24. /*row:行优先,默认值*/
  25. grid-auto-flow: row;
  26. /*grid-auto-flow: column;*/
  27. /* 2、隐式网格 */
  28. /* 超出显示网格数量的项目,创建在隐式网格中(自动生成)*/
  29. }
  30. .container > .item{
  31. background-color: antiquewhite;
  32. }
  33. </style>



1.3 项目对齐

  1. <div class="container">
  2. <div class="item">item1</div>
  3. <div class="item">item2</div>
  4. <div class="item">item3</div>
  5. <div class="item">item4</div>
  6. <div class="item active">item5</div>
  7. <div class="item">item6</div>
  8. <div class="item">item7</div>
  9. <div class="item">item8</div>
  10. <div class="item">item9</div>
  11. </div>
  12. <style>
  13. .container{
  14. width: 400px;
  15. height: 400px;
  16. /*转化为grid网络容器*/
  17. display: grid;
  18. border: 1px solid black;
  19. /*显示网格*/
  20. grid-template-columns: repeat(3,100px);
  21. grid-template-rows: repeat(3,100px);
  22. /*
  23. 1、对齐前提:容器中必须存在“剩余空间”;
  24. 2、对齐本质:剩余空间,在“项目”之间的分配方案;
  25. 3、剩余空间:Flex(主轴,交叉轴),Grid(容器,单元格);
  26. */
  27. /*
  28. 1、项目在容器中的对齐
  29. place-control: 垂直方向 水平方向;
  30. */
  31. /*居中 往右*/
  32. place-content: center end;
  33. /*居中*/
  34. place-content: center;
  35. /*剩余空间还可以在所有项目之间进行分配*/
  36. place-content: space-between;
  37. /* 2. 项目在"单元格"中的对齐 */
  38. /* place-items: 垂直方向 水平方向; */
  39. place-items: start start;
  40. }
  41. .container > .item { background-color: beige; width: 50px; height: 50px;}
  42. .container > .item.active{
  43. background-color: blueviolet;
  44. /*某个项目,有特殊的对齐要求*/
  45. place-self: end;
  46. }
  47. </style>





1.4 gap间距间隙

  1. <div class="container">
  2. <div class="item">item1</div>
  3. <div class="item">item2</div>
  4. <div class="item">item3</div>
  5. <div class="item">item4</div>
  6. <div class="item">item5</div>
  7. <div class="item">item6</div>
  8. <div class="item">item7</div>
  9. <div class="item">item8</div>
  10. <div class="item">item9</div>
  11. </div>
  12. <style>
  13. .container{
  14. width: 300px;
  15. height: 300px;
  16. padding:5px;
  17. /*转化为grid网络容器*/
  18. display: grid;
  19. border: 1px solid black;
  20. /*显示网格*/
  21. grid-template-columns: repeat(3,1fr);
  22. grid-template-rows: repeat(3,1fr);
  23. /* gap:行列间隙 / 轨道间距 */
  24. /* gap:垂直方向 水平方向*/
  25. gap:5px 5px;
  26. }
  27. .container > .item{
  28. background-color: blanchedalmond;
  29. /* 传统 margin */
  30. /* margin:5px; */
  31. /* 间距会叠加 */
  32. }
  33. </style>


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

2.1 html代码

  1. <div class="new-courses">
  2. <div class="top">
  3. <h3>最新课程</h3>
  4. <a href="">更多 ></a>
  5. </div>
  6. <div class="courses">
  7. <ul class="list">
  8. <!--1个课程开始-->
  9. <li class="item">
  10. <a href=""><img src="https://img.php.cn/upload/course/000/000/068/63e202276944f543.jpg" alt=""></a>
  11. <div class="detail">
  12. <div class="title">
  13. <span class="level">初级</span>
  14. <a href="">Laravel 8 课程精讲(台湾同胞版)</a>
  15. </div>
  16. <div class="desc">
  17. <span>1234次学习</span>
  18. <span>收藏</span>
  19. </div>
  20. </div>
  21. </li>
  22. <!--1个课程结束-->
  23. <!--1个课程开始-->
  24. <li class="item">
  25. <a href=""><img src="https://img.php.cn/upload/course/000/000/068/63e202276944f543.jpg" alt=""></a>
  26. <div class="detail">
  27. <div class="title">
  28. <span class="level">初级</span>
  29. <a href="">Laravel 8 课程精讲(台湾同胞版)</a>
  30. </div>
  31. <div class="desc">
  32. <span>1234次学习</span>
  33. <span>收藏</span>
  34. </div>
  35. </div>
  36. </li>
  37. <!--1个课程结束-->
  38. <!--1个课程开始-->
  39. <li class="item">
  40. <a href=""><img src="https://img.php.cn/upload/course/000/000/068/63e202276944f543.jpg" alt=""></a>
  41. <div class="detail">
  42. <div class="title">
  43. <span class="level">初级</span>
  44. <a href="">Laravel 8 课程精讲(台湾同胞版)</a>
  45. </div>
  46. <div class="desc">
  47. <span>1234次学习</span>
  48. <span>收藏</span>
  49. </div>
  50. </div>
  51. </li>
  52. <!--1个课程结束-->
  53. <!--1个课程开始-->
  54. <li class="item">
  55. <a href=""><img src="https://img.php.cn/upload/course/000/000/068/63e202276944f543.jpg" alt=""></a>
  56. <div class="detail">
  57. <div class="title">
  58. <span class="level">初级</span>
  59. <a href="">Laravel 8 课程精讲(台湾同胞版)</a>
  60. </div>
  61. <div class="desc">
  62. <span>1234次学习</span>
  63. <span>收藏</span>
  64. </div>
  65. </div>
  66. </li>
  67. <!--1个课程结束-->
  68. <!--1个课程开始-->
  69. <li class="item">
  70. <a href=""><img src="https://img.php.cn/upload/course/000/000/068/63e202276944f543.jpg" alt=""></a>
  71. <div class="detail">
  72. <div class="title">
  73. <span class="level">初级</span>
  74. <a href="">Laravel 8 课程精讲(台湾同胞版)</a>
  75. </div>
  76. <div class="desc">
  77. <span>1234次学习</span>
  78. <span>收藏</span>
  79. </div>
  80. </div>
  81. </li>
  82. <!--1个课程结束-->
  83. <!--1个课程开始-->
  84. <li class="item">
  85. <a href=""><img src="https://img.php.cn/upload/course/000/000/068/63e202276944f543.jpg" alt=""></a>
  86. <div class="detail">
  87. <div class="title">
  88. <span class="level">初级</span>
  89. <a href="">Laravel 8 课程精讲(台湾同胞版)</a>
  90. </div>
  91. <div class="desc">
  92. <span>1234次学习</span>
  93. <span>收藏</span>
  94. </div>
  95. </div>
  96. </li>
  97. <!--1个课程结束-->
  98. <!--1个课程开始-->
  99. <li class="item">
  100. <a href=""><img src="https://img.php.cn/upload/course/000/000/068/63e202276944f543.jpg" alt=""></a>
  101. <div class="detail">
  102. <div class="title">
  103. <span class="level">初级</span>
  104. <a href="">Laravel 8 课程精讲(台湾同胞版)</a>
  105. </div>
  106. <div class="desc">
  107. <span>1234次学习</span>
  108. <span>收藏</span>
  109. </div>
  110. </div>
  111. </li>
  112. <!--1个课程结束-->
  113. <!--1个课程开始-->
  114. <li class="item">
  115. <a href=""><img src="https://img.php.cn/upload/course/000/000/068/63e202276944f543.jpg" alt=""></a>
  116. <div class="detail">
  117. <div class="title">
  118. <span class="level">初级</span>
  119. <a href="">Laravel 8 课程精讲(台湾同胞版)</a>
  120. </div>
  121. <div class="desc">
  122. <span>1234次学习</span>
  123. <span>收藏</span>
  124. </div>
  125. </div>
  126. </li>
  127. <!--1个课程结束-->
  128. <!--1个课程开始-->
  129. <li class="item">
  130. <a href=""><img src="https://img.php.cn/upload/course/000/000/068/63e202276944f543.jpg" alt=""></a>
  131. <div class="detail">
  132. <div class="title">
  133. <span class="level">初级</span>
  134. <a href="">Laravel 8 课程精讲(台湾同胞版)</a>
  135. </div>
  136. <div class="desc">
  137. <span>1234次学习</span>
  138. <span>收藏</span>
  139. </div>
  140. </div>
  141. </li>
  142. <!--1个课程结束-->
  143. <!--1个课程开始-->
  144. <li class="item">
  145. <a href=""><img src="https://img.php.cn/upload/course/000/000/068/63e202276944f543.jpg" alt=""></a>
  146. <div class="detail">
  147. <div class="title">
  148. <span class="level">初级</span>
  149. <a href="">Laravel 8 课程精讲(台湾同胞版)</a>
  150. </div>
  151. <div class="desc">
  152. <span>1234次学习</span>
  153. <span>收藏</span>
  154. </div>
  155. </div>
  156. </li>
  157. <!--1个课程结束-->
  158. </ul>
  159. </div>
  160. </div>

2.2 css代码

  1. /*初始化*/
  2. * {
  3. margin: 0;
  4. padding: 0;
  5. box-sizing: border-box;
  6. }
  7. ul li {
  8. list-style-type: none;
  9. }
  10. a {
  11. text-decoration: none;
  12. color: #555;
  13. }
  14. a:hover {
  15. cursor: pointer;
  16. }
  17. body {
  18. background-color: #f3f5f7;
  19. }
  20. /* 整框grid,分标题和课程两个,一列两行 */
  21. .new-courses{
  22. width: 1200px;
  23. margin: 130px auto;
  24. display: grid;
  25. grid-template-rows:30px 530px;
  26. }
  27. /* 标题grid,一行两列 */
  28. .top {
  29. width: 1198px;
  30. height:30px;
  31. display: grid;
  32. grid-template-columns: 150px 100px;
  33. place-content: space-between;
  34. }
  35. .top h3{
  36. font-size: 20px;
  37. line-height: 20px;
  38. margin-left: 10px;
  39. }
  40. .top a{
  41. width: 70px;
  42. height:25px;
  43. line-height: 25px;
  44. font-size: 14px;
  45. text-align: center;
  46. place-self: end;
  47. margin-right: 15px;
  48. }
  49. .top a:hover{
  50. background-color: lightcoral;
  51. color: white;
  52. border-radius: 15px;
  53. }
  54. /* 课程内容grid,2行5列 */
  55. .courses > .list {
  56. width: 1180px;
  57. display: grid;
  58. grid-template-columns: repeat(5,220px);
  59. grid-template-rows: repeat(2,280px);
  60. place-content: space-between;
  61. margin: 10px;
  62. }
  63. /* 一个课程grid,2行1列 */
  64. .courses > .list > .item {
  65. display: grid;
  66. grid-template-rows: 150px 100px;
  67. }
  68. .courses > .list > .item a{
  69. width: 220px;
  70. overflow: hidden;
  71. border-radius: 15px 15px 0 0;
  72. }
  73. .courses > .list > .item a:hover{
  74. color: red;
  75. }
  76. .courses > .list > .item a img{
  77. width: 220px;
  78. height: 150px;
  79. transition: all 0.5s;
  80. }
  81. .courses > .list > .item a img:hover{
  82. width: 220px;
  83. overflow: hidden;
  84. transform: scale(1.1);
  85. }
  86. /* 文字内容grid,2行1列 */
  87. .courses > .list > .item > .detail{
  88. display: grid;
  89. grid-template-rows: 60px 40px;
  90. font-size: 14px;
  91. place-items: center;
  92. border-radius: 0 0 15px 15px;
  93. background-color: white;
  94. }
  95. .courses > .list > .item > .detail > .title > .level{
  96. padding:0 10px;
  97. background-color: #E0E8FC;
  98. color:#298AFD;
  99. }
  100. .courses > .list > .item > .detail > .title {
  101. place-self: end;
  102. padding: 0 25px;
  103. }
  104. /* grid,1行2列 */
  105. .courses > .list > .item > .detail > .desc{
  106. display: grid;
  107. grid-template-columns: 100px 100px;
  108. font-size: 10px;
  109. }
  110. .courses > .list > .item > .detail > .desc span{
  111. padding-left: 20px;
  112. color:gray
  113. }
  114. .courses > .list > .item > .detail > .desc span:last-child{
  115. padding-right: 20px;
  116. place-self: end;
  117. }

2.3 示例图:


总结:

1、grid容器,可以使项目成为多个单元格(用户不可见)

2、使用方法:display:grid

3、grid一些属性:

  1. `grid-template-row/columns`: 创建显式网格
  2. `gap`: 行列间隙
  3. `place-content`: 项目在`容器`中的排列方式
  4. `place-items`: 项目在`单元格`中的排列方式
  5. `grid-row/column`: 某项目占据的网格区域
  6. `place-self`: 某项目在单元格中的排列方式
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议