Blogger Information
Blog 26
fans 1
comment 1
visits 19466
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
《grid实战PHP中文网首页》20201225
杨凡的博客
Original
655 people have browsed it

grid布局项目在网格单元中的对齐方式

所有项目在网格单元中的对齐方式

1、垂直居上 水平居中
  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>项目在网格单元中的对齐方式</title>
  7. <style>
  8. .container{
  9. border: 1px solid #000;
  10. padding: 0.5em;
  11. /* grid布局 */
  12. display: grid;
  13. /* 轨道宽度 */
  14. grid-template-columns: repeat(3,1fr);
  15. /* 轨道高度 */
  16. grid-template-rows: repeat(2,5em);
  17. /* 隐式轨道高度 */
  18. grid-auto-rows: 5em;
  19. /* 轨道间隙 */
  20. gap: 0.5em;
  21. }
  22. .container> .item{
  23. background-color: lightcyan;
  24. border: 1px solid#000;
  25. padding: 0.5em;
  26. }
  27. /* 项目在网格单元中存在剩余空间,对齐才有必要且有意义 */
  28. .container> .item{
  29. width: 5em;
  30. height: 2em;
  31. }
  32. /* 所有项目在网格单元中的对齐方式 */
  33. .container{
  34. /* place-items: 垂直方向 水平方向; */
  35. /* 垂直居上 水平居中 */
  36. /* place-items: normal center; */
  37. place-items: start center;
  38. }
  39. </style>
  40. </head>
  41. <body>
  42. <div class="container">
  43. <div class="item">item1</div>
  44. <div class="item">item2</div>
  45. <div class="item">item3</div>
  46. <div class="item">item4</div>
  47. <div class="item">item5</div>
  48. <div class="item">item6</div>
  49. <div class="item">item7</div>
  50. <div class="item">item8</div>
  51. <div class="item">item9</div>
  52. </div>
  53. </body>
  54. </html>

2、垂直水平居中
  1. .container{
  2. /* place-items: 垂直方向 水平方向; */
  3. /* 垂直水平居中 */
  4. /*place-items: center center;*/
  5. place-items: center;
  6. }

3、拉伸效果
  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>项目在网格单元中的对齐方式</title>
  7. <style>
  8. .container{
  9. border: 1px solid #000;
  10. padding: 0.5em;
  11. /* grid布局 */
  12. display: grid;
  13. /* 轨道宽度 */
  14. grid-template-columns: repeat(3,1fr);
  15. /* 轨道高度 */
  16. grid-template-rows: repeat(2,5em);
  17. /* 隐式轨道高度 */
  18. grid-auto-rows: 5em;
  19. /* 轨道间隙 */
  20. gap: 0.5em;
  21. }
  22. .container> .item{
  23. background-color: lightcyan;
  24. border: 1px solid#000;
  25. padding: 0.5em;
  26. }
  27. /* 项目在网格单元中存在剩余空间,对齐才有必要且有意义 */
  28. .container> .item{
  29. /* width: 5em;
  30. height: 2em; */
  31. }
  32. /* 所有项目在网格单元中的对齐方式 */
  33. .container {
  34. /* place-items: 垂直方向 水平方向; */
  35. place-items: normal center;
  36. place-items: auto center;
  37. /* 拉伸,取消固定尺寸可以看到拉升效果 */
  38. place-items:stretch;
  39. }
  40. </style>
  41. </head>
  42. <body>
  43. <div class="container">
  44. <div class="item">item1</div>
  45. <div class="item">item2</div>
  46. <div class="item">item3</div>
  47. <div class="item">item4</div>
  48. <div class="item">item5</div>
  49. <div class="item">item6</div>
  50. <div class="item">item7</div>
  51. <div class="item">item8</div>
  52. <div class="item">item9</div>
  53. </div>
  54. </body>
  55. </html>

某个项目在网格单元中的对齐方式

1、水平垂直居中
  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>项目在网格单元中的对齐方式</title>
  7. <style>
  8. .container{
  9. border: 1px solid #000;
  10. padding: 0.5em;
  11. /* grid布局 */
  12. display: grid;
  13. /* 轨道宽度 */
  14. grid-template-columns: repeat(3,1fr);
  15. /* 轨道高度 */
  16. grid-template-rows: repeat(2,5em);
  17. /* 隐式轨道高度 */
  18. grid-auto-rows: 5em;
  19. /* 轨道间隙 */
  20. gap: 0.5em;
  21. }
  22. .container> .item{
  23. background-color: lightcyan;
  24. border: 1px solid#000;
  25. padding: 0.5em;
  26. }
  27. /* 项目在网格单元中存在剩余空间,对齐才有必要且有意义 */
  28. .container> .item{
  29. width: 5em;
  30. height: 2em;
  31. }
  32. /* 所有某个项目在网格单元中的对齐方式 */
  33. .container> .item:nth-of-type(5){
  34. background-color: yellow;
  35. /* place-self: center center; */
  36. place-self: center;
  37. }
  38. </style>
  39. </head>
  40. <body>
  41. <div class="container">
  42. <div class="item">item1</div>
  43. <div class="item">item2</div>
  44. <div class="item">item3</div>
  45. <div class="item">item4</div>
  46. <div class="item">item5</div>
  47. <div class="item">item6</div>
  48. <div class="item">item7</div>
  49. <div class="item">item8</div>
  50. <div class="item">item9</div>
  51. </div>
  52. </body>
  53. </html>

2、左下角
  1. .container> .item:nth-of-type(5){
  2. background-color: yellow;
  3. place-self: end start;
  4. }

3、右下角
  1. .container> .item:nth-of-type(5){
  2. background-color: yellow;
  3. /* place-self: end end; */
  4. place-self: end;
  5. }

3、网格单元申明成网格区域,设置项目居中网格区域
  1. .container> .item:nth-of-type(5){
  2. background-color: yellow;
  3. grid-area: span 2/span 2;
  4. place-self: center;
  5. }

所有项目在容器中的对齐方式

1、将所有项目作为整体在容器中对其
  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>项目在网格单元中的对齐方式</title>
  7. <style>
  8. .container{
  9. height: 25em;
  10. border: 1px solid #000;
  11. padding: 0.5em;
  12. /* grid布局 */
  13. display: grid;
  14. /* 轨道宽度 */
  15. grid-template-columns: repeat(3,10em);
  16. /* 轨道高度 */
  17. grid-template-rows: repeat(2,5em);
  18. /* 隐式轨道高度 */
  19. grid-auto-rows: 5em;
  20. /* 轨道间隙 */
  21. gap: 0.5em;
  22. }
  23. .container> .item{
  24. background-color: lightcyan;
  25. border: 1px solid#000;
  26. padding: 0.5em;
  27. }
  28. /* 设置所有项目在容器中的对其方式 place-content: 垂直方向 水平方向; */
  29. .container{
  30. /* 默认 */
  31. place-content: start start;
  32. /* 靠上居中 */
  33. place-content: start center;
  34. /* 水平垂直居中 */
  35. place-content: center center;
  36. /* 右下角对其 */
  37. place-content: end end;
  38. }
  39. </style>
  40. </head>
  41. <body>
  42. <div class="container">
  43. <div class="item">item1</div>
  44. <div class="item">item2</div>
  45. <div class="item">item3</div>
  46. <div class="item">item4</div>
  47. <div class="item">item5</div>
  48. <div class="item">item6</div>
  49. <div class="item">item7</div>
  50. <div class="item">item8</div>
  51. <div class="item">item9</div>
  52. </div>
  53. </body>
  54. </html>

2、将所有项目作为个体在容器中设置对其方式
  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>项目在网格单元中的对齐方式</title>
  7. <style>
  8. .container{
  9. height: 25em;
  10. border: 1px solid #000;
  11. padding: 0.5em;
  12. /* grid布局 */
  13. display: grid;
  14. /* 轨道宽度 */
  15. grid-template-columns: repeat(3,10em);
  16. /* 轨道高度 */
  17. grid-template-rows: repeat(2,5em);
  18. /* 隐式轨道高度 */
  19. grid-auto-rows: 5em;
  20. /* 轨道间隙 */
  21. gap: 0.5em;
  22. }
  23. .container> .item{
  24. background-color: lightcyan;
  25. border: 1px solid#000;
  26. padding: 0.5em;
  27. }
  28. /* 设置所有项目在容器中的对其方式 place-content: 垂直方向 水平方向; */
  29. .container{
  30. /* 水平垂直方向两端对其 */
  31. place-content: space-between space-between;
  32. /* 水平垂直方向分散对其 */
  33. place-content: space-around space-around;
  34. /* 水平垂直方向平均对其 */
  35. place-content: space-evenly space-evenly;
  36. /* 水平方向两端对其 垂直方向平均对其 */
  37. place-content: space-evenly space-between;
  38. }
  39. </style>
  40. </head>
  41. <body>
  42. <div class="container">
  43. <div class="item">item1</div>
  44. <div class="item">item2</div>
  45. <div class="item">item3</div>
  46. <div class="item">item4</div>
  47. <div class="item">item5</div>
  48. <div class="item">item6</div>
  49. <div class="item">item7</div>
  50. <div class="item">item8</div>
  51. <div class="item">item9</div>
  52. </div>
  53. </body>
  54. </html>

PHP中文网首页

  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>仿PHP中文网</title>
  7. <style>
  8. /* 页面初始化 */
  9. *{
  10. margin: 0;
  11. padding: 0;
  12. box-sizing: border-box;
  13. }
  14. /* 去除小黑点 */
  15. li{
  16. list-style: none;
  17. }
  18. /* 设置a标签字体颜色及去除下划线 */
  19. a{
  20. color: #444444;
  21. text-decoration: none;
  22. }
  23. header{
  24. height: 60px;
  25. background-color: #000;
  26. margin-bottom: 30px;
  27. display: grid;
  28. grid-template-columns: 140px 1fr;
  29. }
  30. header .logo img{
  31. height: 60px;
  32. width: 140px;
  33. }
  34. header .menus-top .navs-top{
  35. display: grid;
  36. grid-template-columns: repeat(9,100px);
  37. line-height: 60px;
  38. font-size: 14px;
  39. margin-left: 40px;
  40. }
  41. header .menus-top .navs-top li:first-of-type{
  42. background-color: rgba(255,255,255,.3);
  43. width: 70px;
  44. padding-left: 20px;
  45. }
  46. header .menus-top .navs-top a{
  47. color: #B3B3B3;
  48. }
  49. footer{
  50. height: 165px;
  51. background-color: #393D49;
  52. color: #eee;
  53. }
  54. .main-top{
  55. height: 510px;
  56. width: 1200px;
  57. margin-bottom: 30px;
  58. display: grid;
  59. grid-template-columns: 216px 1fr;
  60. grid-template-rows: 60px 1fr 120px;
  61. margin: auto;
  62. border-radius: 10px;
  63. }
  64. /* 左侧导航区 */
  65. .main-top>nav.menus{
  66. grid-area: span 3;
  67. background-color: #2b333b;
  68. border-radius: 10px 0 0 10px;
  69. padding-top: 15px;
  70. box-shadow: 1px 1px 5px #DCDFE2;
  71. }
  72. .main-top>nav.menus .navs-left>li{
  73. height: 60px;
  74. line-height: 60px;
  75. cursor: pointer;
  76. padding-left: 12px;
  77. display: grid;
  78. position: relative;
  79. }
  80. .main-top>nav.menus .navs-left>li:hover{
  81. background-color: rgba(255,255,255,.3);
  82. }
  83. .main-top>nav.menus .navs-left>li span{
  84. position: absolute;
  85. padding-right: 20px;
  86. font-size: 20px;
  87. right: 0;
  88. }
  89. .main-top>nav.menus .navs-left>li a{
  90. color: rgba(255,255,255,.6);
  91. padding: 0 15px;
  92. font-size: 16px;
  93. }
  94. /* 顶部导航区 */
  95. .main-top>ul.navs {
  96. background-color:#fff;
  97. display: grid;
  98. grid-template-columns: repeat(7,83px) 1fr;
  99. place-items: center;
  100. border-radius: 0 10px 0 0;
  101. box-shadow: 1px 1px 5px#DCDFE2;
  102. font-size: 14px;
  103. gap: 0 10px;
  104. padding-left: 10px;
  105. }
  106. /* 顶部导航区搜索框 */
  107. .main-top>ul.navs>li:last-of-type {
  108. place-self: center start;
  109. padding-left: 50px;
  110. }
  111. .main-top>ul.navs>li a .hong{
  112. background-color: #FF5722;
  113. color: #fff;
  114. border-radius: 3px;
  115. padding: 0 5px;
  116. font-size: 12px;
  117. }
  118. .main-top>ul.navs>li a .hui{
  119. background-color: #2F4056;
  120. color: #fff;
  121. border-radius: 3px;
  122. padding: 0 5px;
  123. font-size: 12px;
  124. }
  125. .main-top>ul.navs>li a .huang{
  126. background-color: #FFB800;
  127. color: #fff;
  128. border-radius: 3px;
  129. padding: 0 5px;
  130. font-size: 12px;
  131. }
  132. .main-top>ul.navs>li input{
  133. width: 260px;
  134. height: 40px;
  135. border: none;
  136. background-color: #F1F0F0;
  137. padding: 10px;
  138. }
  139. /* 轮播图 */
  140. .main-top .slider{
  141. background-image: url('https://img.php.cn/upload/article/000/000/001/5fabba9a8557c153.jpg');
  142. }
  143. /* 推荐课程 */
  144. .main-top>ul.course {
  145. display: grid;
  146. grid-template-columns: repeat(4,1fr);
  147. padding: 10px;
  148. gap: 10px;
  149. border-radius: 0 0 10px 0;
  150. box-shadow: 1px 1px 5px#DCDFE2;
  151. }
  152. .main-top>ul.course>* {
  153. cursor: pointer;
  154. }
  155. .main-top>ul.course img{
  156. border-radius: 10px;
  157. width: 236px;
  158. height: 90px;
  159. }
  160. /* 广告图片 */
  161. .gg_img {
  162. margin: 15px auto;
  163. display: grid;
  164. width: 1200px;
  165. cursor: pointer;
  166. }
  167. .gg_img>a>img{
  168. border-radius: 10px;
  169. }
  170. /* 课程列表区 */
  171. .mian-courses {
  172. width: 1200px;
  173. height: 646px;
  174. padding: 15px;
  175. background-color: #FFFFFF;
  176. margin: 30px auto;
  177. display: grid;
  178. grid-template-rows: 50px 1fr;
  179. border-radius: 10px;
  180. box-shadow: 1px 1px 5px#DCDFE2;
  181. }
  182. .mian-courses h3{
  183. color: #444444;
  184. text-align: center;
  185. }
  186. .mian-courses .course-list {
  187. display: grid;
  188. grid-template-columns: repeat(5,1fr);
  189. grid-template-rows: repeat(3,1fr);
  190. gap: 20px;
  191. }
  192. .mian-courses .course-list>* {
  193. border-radius: 10px;
  194. /* box-shadow: 1px 1px 5px#DCDFE2; */
  195. }
  196. .mian-courses .course-list img{
  197. border-radius: 10px;
  198. box-shadow: 1px 1px 5px#DCDFE2;
  199. width: 100%;
  200. }
  201. .mian-courses .course-list>li:first-of-type{
  202. grid-area: span 2;
  203. }
  204. </style>
  205. </head>
  206. <body>
  207. <header class="top">
  208. <div class="logo"><img src="https://www.php.cn/static/images/logo.png" alt=""></div>
  209. <nav class="menus-top">
  210. <ul class="navs-top">
  211. <li><a href="">首页</a></li>
  212. <li><a href="">视频教程</a></li>
  213. <li><a href="">入门教程</a></li>
  214. <li><a href="">社区问答</a></li>
  215. <li><a href="">技术文章</a></li>
  216. <li><a href="">资源下载</a></li>
  217. <li><a href="">编程词典</a></li>
  218. <li><a href="">工具下载</a></li>
  219. <li><a href="">PHP培训</a></li>
  220. </ul>
  221. </nav>
  222. </header>
  223. <div class="main-top">
  224. <!-- 左边菜单 -->
  225. <nav class="menus">
  226. <ul class="navs-left">
  227. <li><a href="">php开发<span>&gt</span></a></li>
  228. <li><a href="">前端开发<span>&gt</span></a></li>
  229. <li><a href="">服务端开发<span>&gt</span></a></li>
  230. <li><a href="">移动开发<span>&gt</span></a></li>
  231. <li><a href="">数据库<span>&gt</span></a></li>
  232. <li><a href="">服务器运维&下载<span>&gt</span></a></li>
  233. <li><a href="">在线工具箱<span>&gt</span></a></li>
  234. <li><a href="">常用类库<span>&gt</span></a></li>
  235. </ul>
  236. </nav>
  237. <!-- 顶部菜单 -->
  238. <ul class="navs">
  239. <li><a href="">PHP头条<span class="hong"></span></a></li>
  240. <li><a href="">独孤九贱</a></li>
  241. <li><a href="">学习路线<span class="hui"></span></a></li>
  242. <li><a href="">在线工具</a></li>
  243. <li><a href="">趣味课堂<span class="huang"></span></a></li>
  244. <li><a href="">社区问答</a></li>
  245. <li><a href="">课程直播</a></li>
  246. <li><input type="text" placeholder="输入关键词搜索"></li>
  247. </ul>
  248. <div class="slider"></div>
  249. <!-- 底部推荐课程 -->
  250. <ul class="course">
  251. <li><a href=""><img src="https://www.php.cn/static/images/index_yunv.jpg" alt=""></a></li>
  252. <li><a href=""><img src="https://www.php.cn/static/images/index_php_item2_.png?1" alt=""></a></li>
  253. <li><a href=""><img src="https://www.php.cn/static/images/index_php_item3.jpg?1" alt=""></a></li>
  254. <li><a href=""><img src="https://www.php.cn/static/images/index_php_new4.jpg?1" alt=""></a></li>
  255. </ul>
  256. </div>
  257. <!-- 广告 -->
  258. <div class="gg_img">
  259. <a href="https://www.php.cn/k.html" target="view_window"><img src="https://img.php.cn/upload/article/000/000/001/5fb478ce65c09239.jpg" alt=""></a>
  260. </div>
  261. <!-- 课程列表区 -->
  262. <div class="mian-courses">
  263. <h3>&lt;\&gt;php入门精品课程&lt;\&gt;</h3>
  264. <ul class="course-list">
  265. <li><a href=""><img src="https://www.php.cn/static/images/index_learn_first.jpg" alt=""></a></li>
  266. <li><a href=""><img src="https://img.php.cn/upload/course/000/000/001/5b63c72c61569244.png" alt=""></a></li>
  267. <li><a href=""><img src="https://img.php.cn/upload/course/000/126/153/5aa23f0ded921649.jpg" alt=""></a></li>
  268. <li><a href=""><img src="https://img.php.cn/upload/course/000/126/153/5ab346fc62ce4221.jpg" alt=""></a></li>
  269. <li><a href=""><img src="https://img.php.cn/upload/course/000/126/153/5acc118f11d6b969.jpg" alt=""></a></li>
  270. <li><a href=""><img src="https://img.php.cn/upload/course/000/000/001/5d1c6e0d2b744633.jpg" alt=""></a></li>
  271. <li><a href=""><img src="https://img.php.cn/upload/course/000/001/120/5a9fb97057b15707.jpeg" alt=""></a></li>
  272. <li><a href=""><img src="https://img.php.cn/upload/course/000/000/001/5d24019911a24370.jpg" alt=""></a></li>
  273. <li><a href=""><img src="https://img.php.cn/upload/course/000/000/003/5a699f1b2da2b398.jpg" alt=""></a></li>
  274. <li><a href=""><img src="https://img.php.cn/upload/course/000/000/001/5cecd27a4348b582.jpg" alt=""></a></li>
  275. <li><a href=""><img src="https://img.php.cn/upload/course/000/000/001/5d1c6dfc9eb09885.jpg" alt=""></a></li>
  276. <li><a href=""><img src="https://img.php.cn/upload/course/000/000/003/5a13c87351613730.jpg" alt=""></a></li>
  277. <li><a href=""><img src="https://img.php.cn/upload/course/000/171/829/5b19ef2990649817.jpg" alt=""></a></li>
  278. <li><a href=""><img src="https://img.php.cn/upload/course/000/000/001/5d240300be85b731.jpg" alt=""></a></li>
  279. </ul>
  280. </div>
  281. <div class="mian-courses">
  282. <h3>&lt;\&gt;php进阶学习路径&lt;\&gt;</h3>
  283. <ul class="course-list">
  284. <li><a href=""><img src="https://www.php.cn/static/images/index_learn_first.jpg" alt=""></a></li>
  285. <li><a href=""><img src="https://img.php.cn/upload/course/000/000/001/5b63c72c61569244.png" alt=""></a></li>
  286. <li><a href=""><img src="https://img.php.cn/upload/course/000/126/153/5aa23f0ded921649.jpg" alt=""></a></li>
  287. <li><a href=""><img src="https://img.php.cn/upload/course/000/126/153/5ab346fc62ce4221.jpg" alt=""></a></li>
  288. <li><a href=""><img src="https://img.php.cn/upload/course/000/126/153/5acc118f11d6b969.jpg" alt=""></a></li>
  289. <li><a href=""><img src="https://img.php.cn/upload/course/000/000/001/5d1c6e0d2b744633.jpg" alt=""></a></li>
  290. <li><a href=""><img src="https://img.php.cn/upload/course/000/001/120/5a9fb97057b15707.jpeg" alt=""></a></li>
  291. <li><a href=""><img src="https://img.php.cn/upload/course/000/000/001/5d24019911a24370.jpg" alt=""></a></li>
  292. <li><a href=""><img src="https://img.php.cn/upload/course/000/000/003/5a699f1b2da2b398.jpg" alt=""></a></li>
  293. <li><a href=""><img src="https://img.php.cn/upload/course/000/000/001/5cecd27a4348b582.jpg" alt=""></a></li>
  294. <li><a href=""><img src="https://img.php.cn/upload/course/000/000/001/5d1c6dfc9eb09885.jpg" alt=""></a></li>
  295. <li><a href=""><img src="https://img.php.cn/upload/course/000/000/003/5a13c87351613730.jpg" alt=""></a></li>
  296. <li><a href=""><img src="https://img.php.cn/upload/course/000/171/829/5b19ef2990649817.jpg" alt=""></a></li>
  297. <li><a href=""><img src="https://img.php.cn/upload/course/000/000/001/5d240300be85b731.jpg" alt=""></a></li>
  298. </ul>
  299. </div>
  300. <footer>页脚</footer>
  301. </body>
  302. </html>

grid的媒体查询与专业的媒体查询的区别

  1. 使用媒体查询:媒体查询能在不同的条件下使用不同的样式,使页面在不同在终端设备下达到不同的渲染效果。用法:@media 媒体类型 and (媒体特性) {样式}
    2.grid媒体查询主要通过auto-fit属性自动填充来实现类似媒体查询功能

作业内容:

  1. 将项目在网格单元和容器中对齐的相关属性全部实例演示;
  2. 快速实现php.cn首页主要组件的布局,并理解为什么?
  3. 理解grid的媒体查询与专业的媒体查询有什么区别?
Correcting teacher:天蓬老师天蓬老师

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
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!